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;
    }
    
    • 0
      @ 2025-8-20 16:05:22

      之前用python处理数据输入错了,误以为python大整数比较会超时,写了c++这种类型的的解法😭

      ps: python终于能渲染出来了😋

      from math import sqrt,ceil,gcd,log;re=lambda:map(int,input().split())
      
      while True:
          a, b = input().split()
          if a == '0' and b == '0':
              break
          else:
              if a[0] == '-' and b[0] != '-':
                  print("a<b")
              elif a[0] != '-' and b[0] == '-':
                  print("a>b")
              elif a[0] == '-' and b[0] == '-':
                  aa = len(a)
                  bb = len(b)
                  if aa > bb:
                      print("a<b")
                  elif aa < bb:
                      print("a>b")
                  else:
                      same = True
                      for i in range(1, aa):
                          if a[i] > b[i]:
                              print("a<b")
                              same = False
                              break
                          elif a[i] < b[i]:
                              print("a>b")
                              same = False
                              break
                      if same:
                          print("a==b")
              else:
                  aa = len(a)
                  bb = len(b)
                  if aa > bb:
                      print("a>b")
                  elif aa < bb:
                      print("a<b")
                  else:
                      same = True
                      for i in range(aa):
                          if a[i] > b[i]:
                              print("a>b")
                              same = False
                              break
                          elif a[i] < b[i]:
                              print("a<b")
                              same = False
                              break
                      if same:
                          print("a==b")
      
      • 0
        @ 2024-11-23 16:34:27

        使用字符串比较,先判断正负号,再比较位数,注意两数都为负数时的比较;

        • 0
          @ 2023-10-23 15:24:54
          #include<stdio.h>
          #include<string.h>
          int i,j,lennum1,lennum2;
          char num1[10009],num2[10009];
          int main(void){
          	while(1){
          		scanf("%s %s",num1,num2);
          		if(strcmp(num1,"0")==0 && strcmp(num2,"0")==0){
          			break;
          		}
          		if(strcmp(num1,num2)==0){
          			printf("a==b\n");
          		}else{
          		lennum1=strlen(num1);
          		lennum2=strlen(num2);
          		if(num1[0]=='-' && num2[0]!='-'){
          			printf("a<b\n");
          		}
          		if(num1[0]!='-' && num2[0]=='-'){
          			printf("a>b\n");
          		}
          		if(num1[0]=='-' && num2[0]=='-'){
          			if(lennum1>lennum2){
          				printf("a<b\n");
          			}
          			if(lennum1<lennum2){
          				printf("a>b\n");
          			}
          			if(lennum1==lennum2){
          				for(i=lennum1-1;i>0;i--){
          					if(num1[i]>num2[i]){
          						printf("a<b\n");
          						break;					
          					}
          					if(num1[i]<num2[i]){
          						printf("a>b\n");
          						break;
          					}
          				}
          			}
          		}
          		if(num1[0]!='-' && num2[0]!='-'){
          			if(lennum1>lennum2){
          				printf("a>b\n");
          			}
          			if(lennum1<lennum2){
          				printf("a<b\n");
          			}
          			if(lennum1==lennum2){
          				for(i=lennum1-1;i>=0;i--){
          					if(num1[i]>num2[i]){
          						printf("a>b\n");
          						break;					
          					}
          					if(num1[i]<num2[i]){
          						printf("a<b\n");
          						break;
          					}
          				}
          			}
          		}	
          	}
          	}
          }
          
          • 0
            @ 2023-10-9 21:00:12
            #include<stdio.h>
            #include<string.h>
            int main()
            {
                char a[1000]= {0},b[1000]= {0};
                while(scanf("%s%s",a,b)!=EOF)
                {
                    if(a[0]=='0'&&b[0]=='0')
                        break;
                    int i,j,k,l,max,t=2;
                    k=strlen(a);
                    l=strlen(b);
                    if(a[0]=='-'&&b[0]!='-')
                        t=1;
                    else if(a[0]!='-'&&b[0]=='-')
                        t=0;
                    else if(a[0]!='-'&&b[0]!='-')
                    {
                        if(k>l)
                            t=0;
                        if(k<l)
                            t=1;
                        if(k==l)
                        {
                            for(i=0; i<l; i++)
                            {
                                if(a[i]>b[i])
                                {
                                    t=0;
                                    break;
                                }
                                if(a[i]<b[i])
                                {
                                    t=1;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        if(k>l)
                            t=1;
                        if(k<l)
                            t=0;
                        if(k==l)
                        {
                            for(i=0; i<l; i++)
                            {
                                if(a[i]>b[i])
                                {
                                    t=1;
                                    break;
                                }
                                if(a[i]<b[i])
                                {
                                    t=0;
                                    break;
                                }
                            }
                        }
                    }
                    if(t==0)
                        printf("a>b\n");
                    if(t==1)
                        printf("a<b\n");
                    if(t==2)
                        printf("a==b\n");
                }
            }
            
            • 1

            信息

            ID
            150
            时间
            3000ms
            内存
            128MiB
            难度
            8
            标签
            (无)
            递交数
            1604
            已通过
            228
            上传者