1.A+B
#include<stdio.h>
#include<string.h>
int main()
{
char a1[1100],b1[1100];
int T;
while(scanf("%d",&T)!=EOF)
{
int i1,i,j,k,k1,La,Lb,t,L;
for(i1=1;i1<=T;i1++)
{
int a[1100]={0},b[1100]={0},c[1100]={0};
scanf("%s%s",&a1,&b1);
La=strlen(a1);
Lb=strlen(b1);
printf("Case %d:\n",i1);
for(i=0;i<La;i++)//输出第一个数
{
printf("%c",a1[i]);
}
printf(" + ");
for(i=0;i<Lb;i++)//输出第二个数
{
printf("%c",b1[i]);
}
printf(" = ");
for(j=La-1,t=0;j>=0;j--,t++)//反序
{
a[t]=a1[j]-'0';
}
for(k=Lb-1,t=0;k>=0;k--,t++)//反序
{
b[t]=b1[k]-'0';
}
L=(La>=Lb?La:Lb);
for(i=0;i<=L-1;i++)//加法运算
{
c[i]=(a[i]+b[i])+c[i];
if(c[i]>=10)
{
c[i]=c[i]%10;
c[i+1]++;
}
}
if(c[L]!=0)
{
L++;
}
for(i=L-1;i>=0;i--)//输出运算结果
{
printf("%d",c[i]);
}
printf("\n");
if(i1!=T)
{
printf("\n");
}
}
}
return 0;
}
2.多个大数相加(1)
#include <cstdio>
#include <cstring>
int sum[147];
char s[147];
void Add( char ss[])
{
int len = strlen(ss);
int z = 1;
for(int i = len - 1 ; i >= 0 ; i-- )
{
sum[z] +=(ss[i]-'0');
sum[z+1] +=sum[z]/10;
sum[z]%=10;
z++;
}
}
int main()
{
int t;
while(~scanf("%d",&t))
{
while(t--)
{
memset(sum,0,sizeof(sum));
while(scanf("%s",s)&&s[0]!='0')
{
Add(s);
}
int flag = 0;
for(int i = 147; i > 1 ; i-- )
{
if(flag == 0 && sum[i] == 0)
continue;
else
{
flag = 1;
printf("%d",sum[i]);
}
}
printf("%d\n",sum[1]);
if(t != 0)
printf("\n");
}
}
return 0;
}
3.多个大数相加(2)
#include <stdio.h>
#include <string.h>
int sum[147];
char s[147];
void Add( char ss[])
{
int len = strlen(ss);
int z = 1;
for(int i = len - 1 ; i >= 0 ; i-- )
{
sum[z] +=(ss[i]-'0');
sum[z+1] +=sum[z]/10;
sum[z]%=10;
z++;
}
}
int main()
{
memset(sum,0,sizeof(sum));
while(scanf("%s",s) && strcmp(s,"0")!=0)
{
Add(s);
}
int flag = 0;
for(int i = 147; i > 1 ; i-- )
{
if(flag == 0 && sum[i] == 0)
continue;
else
{
flag = 1;
printf("%d",sum[i]);
}
}
printf("%d\n",sum[1]);
return 0;
}