比大小
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如123456789123456789要大于-123456
-
输入
-
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组
输出
- 如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。 样例输入
-
111111111111111111111111111 88888888888888888888 -1111111111111111111111111 22222222 0 0
样例输出
-
a>b a<b
-
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
说明:大数比较大小,注意结束条件 和 当相等时输出 a==b
已AC代码:
#include<stdio.h>
#include<string.h>
#define M 1010
int main()
{
int i,j,len1,len2;
char ch1[M],ch2[M];
while(scanf("%s%s",ch1,ch2)!=EOF)
{
if(ch1[0]=='0'&&ch2[0]=='0') // 结束条件
break;
len1=strlen(ch1);
len2=strlen(ch2);
if(ch1[0]=='-'&&ch2[0]>='0'&&ch2[0]<='9') // 一正一负
printf("a<b\n");
else if(ch2[0]=='-'&&ch1[0]>='0'&&ch1[0]<='9')
printf("a>b\n");
else if(ch1[0]=='-'&&ch2[0]=='-') // 都为负
{
if(len1>len2) // 长度不等
printf("a<b\n");
else if(len1<len2)
printf("a>b\n");
else if(len1==len2) // 长度相等
{
int temp=1; // 判断两数相等
for(i=0;i<len1;i++)
{
if(ch1[i]>ch2[i])
{
printf("a<b\n");
temp=0;
break;
}
if(ch1[i]<ch2[i])
{
printf("a>b\n");
temp=0;
break;
}
}
if(temp)
printf("a==b\n");
}
}
else if(ch1[0]>='0'&&ch1[0]<='9'&&ch2[0]>='0'&&ch2[0]<='9') // 都为正
{
if(len1>len2)
printf("a>b\n");
if(len1<len2)
printf("a<b\n");
if(len1==len2) // 长度相等
{
int temp=1; // 判断两数相等
for(i=0;i<len1;i++)
{
if(ch1[i]>ch2[i])
{
printf("a>b\n");
temp=0;
break;
}
if(ch1[i]<ch2[i])
{
printf("a<b\n");
temp=0;
break;
}
}
if(temp)
printf("a==b\n");
}
}
}
return 0;
}