修改一下代码(#include <stdio.h> #include <string.h> // 定义串的最大长度 #define MAX_LEN 100 // 定义比较结果的枚举类型 enum CompareResult { LESS_THAN = -1, EQUAL = 0, GREATER_THAN = 1 }; // 比较字符串S1和S2的大小关系 int compare(char S1[], char S2[]) { int len1 = strlen(S1); int len2 = strlen(S2); int len = len1 < len2 ? len1 : len2; for (int i = 0; i < len; i++) { if (S1[i] < S2[i]) { return LESS_THAN; } else if (S1[i] > S2[i]) { return GREATER_THAN; } } if (len1 == len2) { return EQUAL; } else if (len1 < len2) { return LESS_THAN; } else { return GREATER_THAN; } } int main() { // 定义数组存储S1和S2 char S1[MAX_LEN + 1], S2[MAX_LEN + 1]; // 读入S1和S2 printf("请输入S1:"); scanf("%s", S1); printf("请输入S2:"); scanf("%s", S2); // 比较S1和S2 int result = compare(S1, S2); // 输出比较结果 if (result == LESS_THAN) { printf("S1 < S2\n"); } else if (result == EQUAL) { printf("S1 = S2\n"); } else { printf("S1 > S2\n"); } return 0; })
时间: 2024-01-13 13:04:22 浏览: 82
代码已经很完整了,不过可以考虑加入一些异常处理,比如输入的字符串长度超过了数组最大长度的情况。可以在读入S1和S2之前先清空缓冲区,避免读入错误的字符。修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
// 定义串的最大长度
#define MAX_LEN 100
// 定义比较结果的枚举类型
enum CompareResult {
LESS_THAN = -1,
EQUAL = 0,
GREATER_THAN = 1
};
// 比较字符串S1和S2的大小关系
int compare(char S1[], char S2[]) {
int len1 = strlen(S1);
int len2 = strlen(S2);
int len = len1 < len2 ? len1 : len2;
for (int i = 0; i < len; i++) {
if (S1[i] < S2[i]) {
return LESS_THAN;
} else if (S1[i] > S2[i]) {
return GREATER_THAN;
}
}
if (len1 == len2) {
return EQUAL;
} else if (len1 < len2) {
return LESS_THAN;
} else {
return GREATER_THAN;
}
}
int main() {
// 定义数组存储S1和S2
char S1[MAX_LEN + 1] = {0}, S2[MAX_LEN + 1] = {0};
// 读入S1和S2
printf("请输入S1:");
fflush(stdin); // 清空缓冲区
fgets(S1, MAX_LEN, stdin);
S1[strcspn(S1, "\n")] = 0; // 去掉字符串结尾的换行符
printf("请输入S2:");
fflush(stdin); // 清空缓冲区
fgets(S2, MAX_LEN, stdin);
S2[strcspn(S2, "\n")] = 0; // 去掉字符串结尾的换行符
// 比较S1和S2
int result = compare(S1, S2);
// 输出比较结果
if (result == LESS_THAN) {
printf("S1 < S2\n");
} else if (result == EQUAL) {
printf("S1 = S2\n");
} else {
printf("S1 > S2\n");
}
return 0;
}
```
阅读全文