4. 编写一程序,将字符串s1和s2比较,如果s1>s2,输出一个正数;s1=s2,输出0;s1<s2,输出一个负数。不用strcmp函数。两个字符串用gets函数读入。
时间: 2025-01-01 17:41:59 浏览: 19
要编写一个不使用`strcmp`函数比较两个字符串`s1`和`s2`的程序,我们可以逐个字符地遍历它们,直到找到第一个不相等的字符。然后根据第一个不相等字符的位置来决定输出正数、0还是负数。
以下是一个简单的C语言程序,实现了这个要求:
```c
#include <stdio.h>
#include <string.h>
int compareStrings(char *s1, char *s2) {
int i = 0;
while (s1[i] == s2[i]) {
if (s1[i] == '\0' && s2[i] == '\0') { // 如果两个字符串都已结束
return 0; // 相等
}
i++;
}
if (s1[i] > s2[i]) { // 如果s1的第一个不同字符大于s2
return 1; // 输出正数
} else { // s1的第一个不同字符小于或等于s2
return -1; // 输出负数
}
}
int main() {
char s1[100], s2[100];
printf("Enter the first string: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // 去除fgets获取的换行符
printf("Enter the second string: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0'; // 去除fgets获取的换行符
int result = compareStrings(s1, s2);
if (result > 0) {
printf("The first string is greater than the second: %d\n", result);
} else if (result == 0) {
printf("The strings are equal: 0\n");
} else {
printf("The first string is less than the second: %d\n", result);
}
return 0;
}
```
在这个程序中,`compareStrings`函数比较了两个字符串,直到找到第一个不相等的字符。主函数中使用`fgets`从用户那里获取字符串,并确保去掉输入的换行符。然后调用`compareStrings`函数并打印结果。
阅读全文