杭电1002 c语言

2024-09-04 01:16:53
说教育
说教育认证

说教育为您分享以下优质知识

#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");

}

}