c语言
#include <stdio.h>
int main()
{
int i,j,k;
int a[200],b[200];
char ch;
for(i=0;i<=199;i++)
{
ch=getchar();
if (ch!="\n")
a[i]=ch;
else
break;
}
for(j=0;j<=199;j++)
{
ch=getchar();
if (ch!="\n")
b[j]=ch;
else
break;
}
for(k=0;k<i;k++)
{
printf("%d\n",a[k]+b[k]);
}
}
修改完善如下,供参考:
#include <stdio.h>
#define MAX(a,b) a>b?a:b
int main()
{
int i,j,k,t,n,flg;
int a[200]={0},b[200]={0},c[200]={0},num=0;
char ch;
for(i=0;i<=199;i++)//输入a[]
{
ch=getchar();
if (ch != '\n')//if (ch != "\n")
a[i]=ch-'0';
else
break;
}
for(j=0;j<=199;j++)//输入b[]
{
ch=getchar();
if (ch!='\n') //if (ch != "\n")
b[j]=ch-'0';
else
break;
}
for(k=0;k<i/2;k++) //将两个数组a[] b[]逆序
{t = a[k];a[k] = a[i-1-k];a[i-1-k] = t;}
for(k=0;k<j/2;k++)
{t = b[k];b[k] = b[j-1-k];b[j-1-k] = t;}
n=MAX(i,j);//两数组最长的长度
for (k=0; k<n; k++)
{
flg = 0;//用来看最后一次循环是否进位,在输出的时候用到了
c[k] = a[k] + b[k]+ num;//如果进位,加num
num = 0;
if (c[k] >= 10)
{
c[k + 1] = 1;//最后一位c[n]可以获得到进位。
num = 1;
c[k] -= 10;
flg = 1;
}
}
for(k=n+flg-1;k>=0;k--) printf("%d",c[k]);
printf("\n");
return 0;
}
不可直接a[k]+b[k],因为两个数的位数可能是不一样的。