1850: 比大小
时间限制: 3 Sec 内存限制: 64 MB[提交][状态][讨论版]
题目描述
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如123456789123456789要大于-123456
输入
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b 数据保证输入的a,b没有前缀的0。 如果输入0 0表示输入结束。测试数据组数不超过10组
输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。< div="" style="box-sizing: inherit;">
样例输入
111111111111111111111111111 88888888888888888888
-1111111111111111111111111 22222222
0 0
样例输出
a>b
a<b
提示
来源
一位一位的比,用C写的,思路比较清晰,但是就是有点啰嗦
#include<stdio.h> #include<string.h> int main(){ char str1[1010],str2[1010]; while(scanf("%s %s",str1,str2)!=EOF){ if(str1[0]=='0'&&str2[0]=='0') break; int len1=strlen(str1); int len2=strlen(str2); if(str1[0]=='-'&&str2[0]!='-'){ printf("a<b\n"); } else if(str1[0]!='-'&&str2[0]=='-'){ printf("a>b\n"); } else{ int flag=0; if(str1[0]!='-'&&str2[0]!='-'){ if(len1<len2){ printf("a<b\n"); continue; } if(len1>len2){ printf("a>b\n"); continue; } for(int i=0;i<len1&&i<len2;i++){ if(str1[i]<str2[i]){ printf("a<b\n"); flag=1; break; } if(str1[i]>str2[i]){ printf("a>b"); flag=1; break; } } if(!flag) printf("a==b\n"); } if(str1[0]=='-'&&str2[0]=='-'){ if(len1<len2){ printf("a>b\n"); continue; } if(len1>len2){ printf("a<b\n"); continue; } for(int i=0;i<len1&&i<len2;i++){ if(str1[i]<str2[i]){ printf("a>b\n"); flag=1; break; } if(str1[i]>str2[i]){ printf("a<b"); flag=1; break; } } if(!flag) printf("a==b\n"); } } } return 0; }