比大小
时间限制:
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
-
对于这道题深有感触,在南阳oj上提交了8次才恭喜恭喜,到最后才发现错误让我无语了,以下是我写的ac代码。
-
#include<stdio.h> #include<string.h> char a[1005],b[1005]; int main() {int t=0; while(scanf("%s%s",&a,&b)&&(a[0]!='0'||b[0]!='0')) { if(a[0]=='-'&&b[0]=='-') { if(strlen(a)>strlen(b)) printf("a<b\n",a,b); else if(strlen(a)<strlen(b)) printf("a>b\n",a,b); else { if(strcmp(a,b)>0) printf("a<b\n",a,b); else if(strcmp(a,b)<0) printf("a>b\n",a,b); else printf("a==b\n",a,b); } } else if(a[0]!='-'&&b[0]!='-') { if(strlen(a)>strlen(b)) printf("a>b\n",a,b); else if(strlen(a)<strlen(b)) printf("a<b\n",a,b); else { if(strcmp(a,b)>0) printf("a>b\n",a,b); else if(strcmp(a,b)<0) printf("a<b\n"); else printf("a==b\n"); } } else { if(a[0]=='-'&&b[0]!='-') printf("a<b\n",a,b); else printf("a>b\n",a,b); } t++; if(t==10) break; } return 0; }
-
这道题思路不难,用字符数组模拟就行,把所有的情况暴力枚举出来;对于两个负数比较,先比较字符串长度,谁长谁小,如果长度相等,就调用strcmp()函数来比较;如果一正一负,直接就判断大小;两个整数,同两个负数相反;
-
对于我南阳oj没有通过,题目要求输出字符a<b,a>b,a==b.而我把两个数输出来了,这个错误找了一上午,还有测试数据最多是十组,所以不能超过十组,这点也要顾及到。
-
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b