编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值是相
时间: 2023-05-31 10:18:39 浏览: 145
### 回答1:
等的,即如果输出正数为n,则输出负数为-n。
可以使用strcmp函数来比较两个字符串的大小,其返回值为表示两个字符串相等,返回值大于表示第一个字符串大于第二个字符串,返回值小于表示第一个字符串小于第二个字符串。
以下是程序示例:
```
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
int result;
printf("请输入第一个字符串:");
gets(s1);
printf("请输入第二个字符串:");
gets(s2);
result = strcmp(s1, s2);
if (result > ) {
printf("%d\n", abs(result));
} else if (result == ) {
printf("\n");
} else {
printf("%d\n", -abs(result));
}
return ;
}
```
### 回答2:
首先,我们需要了解字符串的比较规则。字符串的大小比较是从第一个字符开始,逐个比对各个字符的ASCII码值的大小来确定字符串大小。如果在比较过程中遇到字符不同,则比较结果已经确定,不用继续比较后面的字符,因为这些字符对比较结果没有影响。
考虑到两个字符串的长度可能不同,所以我们需要先判断它们哪一个短,然后从第一个字符开始逐个比较,当出现字符不同的时候就可以确定它们的大小关系了。比如说,如果s1的第一个字符大于s2的第一个字符,那么就可以直接输出一个正数了;如果s1的第一个字符小于s2的第一个字符,那么就可以直接输出一个负数了;如果前面的字符都相同,但是s1的长度比s2的长度小,那么也可以直接输出一个负数了;如果前面的字符都相同,但是s1的长度比s2的长度大,那么也可以直接输出一个正数了;如果两个字符串完全相同,那么直接输出0即可。
以下是一个示例代码:
```c
#include <stdio.h>
#define MAX_LEN 100
int str_compare(char s1[], char s2[]) {
int i;
for(i = 0; s1[i] == s2[i]; i++) {
if(s1[i] == '\0') // 扫描到字符串结尾了
return 0;
}
return s1[i] - s2[i];
}
int main() {
char s1[MAX_LEN], s2[MAX_LEN];
printf("请输入第一个字符串:");
gets(s1);
printf("请输入第二个字符串:");
gets(s2);
printf("比较结果为:%d\n", str_compare(s1, s2));
return 0;
}
```
这个程序中,我们首先定义了一个叫做str_compare的函数,它接受两个参数s1和s2,返回它们的大小关系。该函数的实现方法是从第一个字符开始,逐个比较它们的ASCII码值,最后返回一个正数、0或负数作为它们的大小关系。
在主函数中,我们调用了gets函数读入两个字符串s1和s2,并利用str_compare函数比较它们的大小关系,最后输出比较结果。
需要注意的是,在实际使用中,gets函数已经被废弃,应该使用更加安全的fgets函数代替之。
### 回答3:
题目要求编写一个程序,比较两个字符串的大小关系,并输出对应的正数、零或负数。要求在比较字符串大小时不能使用strcpy函数,并要使用gets函数读入两个字符串。输出的正数或负数的绝对值相等。
字符串的比较与数字的比较不同,字符串的比较是逐个字符比较,并且从左到右进行比较。当两个字符串中对应位的字符不同时,比较这两个字符的ASCII码值大小,第一对不相同的字符所在位置的字符串中这一位置上的字符决定了字符串的大小关系。
首先,使用gets函数分别读入两个字符串s1、s2,然后比较长度,如果s1长度大于s2长度,则输出一个正数;如果s1长度小于s2长度,则输出一个负数;如果s1和s2长度相等,则逐个比较对应位置的字符,直到找到第一对不相同的字符。如果两个字符不相同,则输出这两个字符的差值,即第一个字符的ASCII码值减去第二个字符的ASCII码值。如果所有字符都相同,则输出零。
下面是用C语言编写的程序:
```c
#include <stdio.h>
int main()
{
char s1[100], s2[100];
int i, len1, len2, flag = 0, diff;
gets(s1);
gets(s2);
len1 = strlen(s1);
len2 = strlen(s2);
if (len1 > len2) {
flag = 1;
} else if (len1 < len2) {
flag = -1;
} else {
for (i = 0; i < len1; ++i) {
if (s1[i] != s2[i]) {
diff = s1[i] - s2[i];
flag = (diff > 0) ? 1 : -1;
break;
}
}
}
printf("%d", flag);
return 0;
}
```
以上程序使用strlen函数获取读入字符串的长度,并使用gets函数读入两个字符串。然后根据长度分别判断大小关系。如果长度相等,则逐个比较字符,找到第一对不相同的字符并输出差值作为结果。最后输出结果即可。
阅读全文