典型的大数题目,这只是大数的比较,到时还有大数加减乘除,更加还有乘方,对于大数,一般用数组或者字符串,因为其他的结构类型一般都没有那么大 的范围!!
这道题目需要你仔细回想怎么比较俩个数字的大小,考虑各种情况。例如:符号的不同,位数的不同等,
#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 "); } else if(len1<len2){ printf("a>b "); } else if(len1==len2){ if(pd(int1,int2)>0){ printf("a<b "); } else if(pd(int1,int2)<0){ printf("a>b "); } else{ printf("a==b "); } } } else if((int1[0]!='-')&&(int2[0]!='-')){ if(len1>len2){ printf("a>b "); } else if(len1<len2){ printf("a<b "); } else if(len1==len2){ if(pd(int1,int2)>0){ printf("a>b "); } else if(pd(int1,int2)<0){ printf("a<b "); } else{ printf("a==b "); } } } else{ if(int1[0]!='-')printf("a>b "); else printf("a<b "); } } return 0; } int pd(char s1[],char s2[]){ int i=0; while(++i){ if(s1[i-1]==' ')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
这是真正用到大数运算的经典题目,也不难,只需要回想起小学时的乘法竖式,
版权声明:本文为博主原创文章,未经博主允许不得转载。