5 条题解

  • 0
    @ 2025-11-6 1:09:15
    #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
    上传者