5 条题解
-
0
#include <stdio.h> #include <string.h> int main(){ int len_a, len_b, i; char a[1009] = {0}, b[1009] = {0}; while(scanf("%s%s", a, b) != EOF){ i = 0; // 每次比较前重置索引,确保从第0位开始 if(a[0] == '0' && b[0] == '0') break; // 输入两个0时终止 len_a = strlen(a); len_b = strlen(b); // 情况1:两数均为正数 if(a[0] != '-' && b[0] != '-'){ if(len_a > len_b) printf("a>b\n"); else if(len_a < len_b) printf("a<b\n"); else{ // 长度相等,逐位比较每一位 while(i < len_a && a[i]-'0' == b[i]-'0'){ i++; // 持续比较直到找到不同位,或遍历完所有位 } if(i == len_a) printf("a==b\n"); // 所有位都相等 else if(a[i]-'0' > b[i]-'0') printf("a>b\n"); else printf("a<b\n"); } } // 情况2:a为正,b为负 else if(a[0] != '-' && b[0] == '-'){ printf("a>b\n"); } // 情况3:a为负,b为正 else if(a[0] == '-' && b[0] != '-'){ printf("a<b\n"); } // 情况4:两数均为负数(比较绝对值,绝对值大的负数更小) else{ if(len_a > len_b) printf("a<b\n"); // a的绝对值更大 → a更小 else if(len_a < len_b) printf("a>b\n"); // a的绝对值更小 → a更大 else{ // 长度相等,逐位比较绝对值(从符号后第1位开始) i = 1; // 跳过负号,从第1位数字开始比较 while(i < len_a && a[i]-'0' == b[i]-'0'){ i++; } if(i == len_a) printf("a==b\n"); // 所有位都相等 else if(a[i]-'0' > b[i]-'0') printf("a<b\n"); // a的绝对值大 → a更小 else printf("a>b\n"); } } } return 0; }
信息
- ID
- 150
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 1596
- 已通过
- 226
- 上传者