标签:
/*自己太弱,太水。容易犯这样那样的错误。 要改 要刷题。 写得不好,有好多便利的方法都没用,以后还回来改进的 */ #include<stdio.h> #include<string.h> #include<math.h> int main() { int l1,l2,p1,t,z1,a[2000],b[2000],d,c,f,i,j,e[2000];//定义数组用于一会盛放单个数字,便于计算。 char q[2000],w[2000];//定义字符数组可以一个一个的读取键盘上的数字。 scanf("%d",&z1); for(p1=1;p1<=z1;p1++) { memset(a,0,sizeof(a));//对没错这就是传说中的数组清零。 memset(b,0,sizeof(b));//为了之后的相加所以将其清零 memset(q,0,sizeof(q));// memset(w,0,sizeof(w));// scanf("%s%s",q,w);//输入想要比较的数字。 f=0; l1=strlen(q); l2=strlen(w); for(j=0,i=l2-1;i>=0;i--)//将想要比较的数字,一个一个的输入到数组里、 { a[j++]=w[i]-‘0‘;//这里是-‘0’就将字符型数组直接转换成了整数数组。 } for(j=0,i=l1-1;i>=0;i--)//同上 { b[j++]=q[i]-‘0‘; } if(l1>=l2) ; else l1=l2; for(i=0;i<l2;i++)//将其中的数字从也就是较短的那个为准,开始相加 { t=a[i]+b[i]+f;//用于检测是否需要进位 d=t%10; e[i]=d;//将个位数字输入数组 if(t>=10)//如果需要仅为的话用f标记一下。 f=1; else f=0; } for(i=l2;i<l1;i++)//基本同上,不过这个是将剩余的相加 { c=a[i]+b[i]; t=a[i]+b[i]+f; d=t%10; e[i]=d; if(t>=10) f=1; else f=0; } printf("Case %d:\n",p1); printf("%s + %s = ",q,w); if(f==1)//如果到最后还需要仅为的话就do it、 printf("1"); for(i=l1-1;i>=0;i--) { printf("%d",e[i]); } printf("\n"); if(p1!=z1) printf("\n"); } }
——————————————————————————————1002——————————————————————————
标签:
原文地址:http://www.cnblogs.com/A-FM/p/4993384.html