杭电1002 用字符串模拟过程
#include<stdio.h>
#include<string.h>
int main()
{
char a1[1002],a2[1002];
int c,i,j,n,m,s1[1002],s2[1002],l1,l2,count;
count=1;
scanf("%d",&n);
m=n;
while(m--)
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));//s1、s2全部赋值为0;
scanf("%s%s",a1,a2);
l1=strlen(a1);
l2=strlen(a2);
c=0;
for(i=l1-1; i>=0; i--)
{
s1[c++]=a1[i]-'0';
}
c=0;//将字符串转换成数字
for(i=l2-1; i>=0; i--)
{
s2[c++]=a2[i]-'0';
}//将字符串转换成数字
for(i=0; i<1002; i++)
{
s1[i]+=s2[i];//逐位相加
if(s1[i]>=10)//判断是否进位
{
s1[i]-=10;
s1[i+1]++;//进位
}
}
printf("Case %d:\n",count++);
printf("%s + %s = ",a1,a2);
for(i=1001; i>=0; i--)
{
if(s1[i])
break;
} //跳出多余的0;
for(j=i; j>=0; j--)
{
printf("%d",s1[j]);//已经跳出多余的0,依次输出。
}
printf("\n");
if(count!=n+1)
printf("\n");
}
return 0;
}
模拟大数相加
最新推荐文章于 2021-12-09 18:48:57 发布