典型的大数题目,这只是大数的比较,到时还有大数加减乘除,更加还有乘方,对于大数,一般用数组或者字符串,因为其他的结构类型一般都没有那么大 的范围!!
这道题目需要你仔细回想怎么比较俩个数字的大小,考虑各种情况。例如:符号的不同,位数的不同等,
#include<stdio.h>
#include<string.h>
int pd(char s1[],char s2[]);
int main(){
char int1[1100];
char int2[1100];
int len1,len2;
while(scanf("%s",int1)!=EOF){
scanf("%s",int2);
len1=strlen(int1);
len2=strlen(int2);
if((strcmp(int1,"0")==0)&&(strcmp(int2,"0")==0))break;
if((int1[0]=='-')&&(int2[0]=='-')){
if(len1>len2){
printf("a<b\n");
}
else if(len1<len2){
printf("a>b\n");
}
else if(len1==len2){
if(pd(int1,int2)>0){
printf("a<b\n");
}
else if(pd(int1,int2)<0){
printf("a>b\n");
}
else{
printf("a==b\n");
}
}
}
else if((int1[0]!='-')&&(int2[0]!='-')){
if(len1>len2){
printf("a>b\n");
}
else if(len1<len2){
printf("a<b\n");
}
else if(len1==len2){
if(pd(int1,int2)>0){
printf("a>b\n");
}
else if(pd(int1,int2)<0){
printf("a<b\n");
}
else{
printf("a==b\n");
}
}
}
else{
if(int1[0]!='-')printf("a>b\n");
else printf("a<b\n");
}
}
return 0;
}
int pd(char s1[],char s2[]){
int i=0;
while(++i){
if(s1[i-1]=='\0')break;
if(s1[i-1]!=s2[i-1]){
if(s1[i-1]>s2[i-1])return 1;
else if(s1[i-1]<s2[i-1]) return -1;
else if(s1[i-1]==s2[i-1]) continue;
}
}
return 0;
}
如果这题目做出了了,就可以去看看第28题目 大数阶乘http://acm.nyist.net/JudgeOnline/problem.php?pid=28
这是真正用到大数运算的经典题目,也不难,只需要回想起小学时的乘法竖式,