杭电1002 c语言
danney
2024-06-22 04:15:43
最佳回答
#include <stdio.h>#include <string.h>main(){char str1[1001],str2[1001];int t,i,len_str1,len_str2,len_max,num=1,k;scanf("%d",&t);getchar();while(t--){int a[1001]={0},b[1001]={0},c[1001]={0};scanf("%s",str1);len_str1=strlen(str1);for(i=0;i<=len_str1-1;i++)a[i]=str1[len_str1-1]-'0';//明显这个for循环的作用只是把最后输入的那个字符以ansic码的形式赋值给了a[i],其他什么操作都没做,这里len_str1-1应该改成i。scanf("%s",str2);len_str2=strlen(str2);for(i=0;i<=len_str2-1;i++)b[i]=str2[len_str2-1]-'0';//问题同上,也改成i。 if(len_str1>=len_str2)len_max=len_str1; else len_max=len_str2; k=0;for(i=0;i<=len_max-1;i++){c[i]=(a[i]+b[i]+k)%10;k=(a[i]+b[i]+k)/10;}if(k!=0)c[len_max]=1;printf("case%d:\n",num); num++;printf("%s+%s=",str1,str2);if(c[len_max]=1)printf("1");for(i=len_max-1;i>=0;i--)printf("%d",c[i]);printf("\n");if(t>=1)printf("\n");}} 20210311