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;
}