大数 A + B 【杭电-HDOJ-1002】 附题
/*
? Input ? Output ? Sample Input Sample Output Case 2:
#include<stdio.h> #include<string.h> #define N 1000 int main(){ int n; while(~scanf("%d",&n)){ //吞掉回车符 getchar(); int i,j,k,a,b,t; //数组定义 char schar1[N+10]; char schar2[N+10]; int sint1[N+10]; int sint2[N+10]; for(k=1;k<=n;k++){ memset(sint1,sizeof(sint1));//只能初始化int型 memset(sint2,sizeof(sint2)); scanf("%s %s",schar1,schar2); a=strlen(schar1); b=strlen(schar2); //反转赋值 for(i=0; i<a; i++) sint1[a-1-i]=schar1[i]-'0';//一层循环 for(i=0; i<b; i++) sint2[b-1-i]=schar2[i]-'0'; //将a定义为a,b中最大的 if(a<b){ t=a; a=b; b=t; } //判断是否进位 for(i=0;i<=a;i++){ sint1[i]+=sint2[i]; if(sint1[i]>9){ sint1[i]-=10; sint1[i+1]++; //此处不是i++ } } printf("Case %d:n%s + %s = ",schar2); //判断是否有进位,不同情况不同输出 if(sint1[a]==0){ for(i=a-1;i>=0;i--) //逆序输出 printf("%d",sint1[i]); printf("n"); //这个printf不在for循环内部 } if(sint1[a]!=0){ for(i=a;i>=0;i--) printf("%d",sint1[i]); printf("n"); //这个printf不在for循环内部 } if(k!=n) printf("n"); //最后一个不换行 } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |