杭电oj这道题的解法是要通过字符数组储存数字在进行运算的,同时涉及到数值进位的问题,以下是代提供码参考。
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000];
int sum[10000]={0};
int c,d,e,f,g,i,n,s;
scanf("%d",&n);
f=48;
s=1;
c=n;
while(n--)
{
scanf("%s",a+1);
scanf("%s",b+1);
printf("Case %d:\n",s);
printf("%s + %s = ",a+1,b+1);
d=strlen(a+1);
e=strlen(b+1);
for(i=1;i<=d;i++)
a[i]=a[i]-48;
for(i=1;i<=e;i++)
b[i]=b[i]-48;
if(d==e) //数字位数相同的情况
{
for(i=1;i<=d;i++)
{
if(a[i]+b[i]>=10&&i>=2)
{
sum[i-2]=sum[i-2]+1;//向前面的一个sum加一进位,比如10+1
sum[i-1]=(a[i]+b[i]-10);//进一位后再减去10,比如15-1