思想就是 利用数组 把 所要 比大小的字符 从高位 到低位 地位排到字符数组的最低端 然后一次想 下标为0的地方去排 .
前面的 没排满的 变成零 . 然后 按照ascll码 排大小.
比大小 时间限制: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
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int main() { int i,j,m,n,l,l1; char a[1001],b[1001],c[1001],d[1001]; while(scanf("%s%s",a,b)!=EOF) { if(a[0]==‘0‘&&b[0]==‘0‘) break; memset(c,‘0‘,sizeof(c)); memset(d,‘0‘,sizeof(d)); l=strlen(a); l1=strlen(b); m=max(l,l1); for(i=0;i<m;i++) { if(l-1-i>=0) c[m-1-i]=a[l-1-i]; if(l1-1-i>=0) d[m-1-i]=b[l1-1-i]; } for(j=i=0;i<m;i++) { if(c[i]>d[i]) { if(c[0]==‘-‘&&d[0]==‘-‘) printf("a<b\n"); else printf("a>b\n"); break; } if(c[i]<d[i]) { if(c[0]==‘-‘&&d[0]==‘-‘) printf("a>b\n"); else printf("a<b\n"); break; } } if(i==m) printf("a==b\n"); j=0; } return 0; }
时间: 2024-10-11 06:39:02