编一个程序,将两个字符串s1和s2比较若s1>s2输出一个正数;若s1=s输出0;若s1小于x输出一个负数不要用strcpy函数。两个字符用gets函数读入。数出的正数或负数的绝对值应是比将比较的两个字符串相应字符的a sc ii码的插值
时间: 2024-10-21 20:12:35 浏览: 56
两个字符串比较大小的小程序
5星 · 资源好评率100%
在C语言中,如果你想比较两个字符串而不使用`strcmp()`、`strcpy()`或其他类似函数,并计算它们ASCII值差的绝对值作为结果,可以这样做:
```c
#include <stdio.h>
#include <string.h>
int compare_strings(const char* s1, const char* s2) {
int i;
int sum1 = 0, sum2 = 0;
// 计算s1和s2的ASCII值之和
for (i = 0; s1[i] && s2[i]; ++i) {
sum1 += (int)s1[i];
sum2 += (int)s2[i];
}
if (!s1[i] && !s2[i]) { // 如果两个字符串都已结束
return 0; // 相等
} else if (!s1[i]) { // 如果s1短于s2
return -sum2; // 返回s2的负ASCII值差
} else { // 如果s2短于s1
return sum1; // 返回s1的正ASCII值差
}
}
int main() {
char s1[100], s2[100];
gets(s1);
gets(s2);
int result = compare_strings(s1, s2);
if (result > 0) {
printf("Positive value: %d\n", abs(result));
} else if (result < 0) {
printf("Negative value: %d\n", -abs(result)); // 注意这里取了负号,因为输入的是负结果
} else {
printf("Zero\n");
}
return 0;
}
阅读全文