C语言实现大数加法,为了简单,开了两个字符串,两个数组,将字符串逆序存入数组,思路简单直接
#include<stdio.h>
#include<string.h>
#define MAX 200
using namespace std;
int a1[MAX+1];
int a2[MAX+1];
char s1[MAX+1];
char s2[MAX+1];
int main()
{
int la1,la2;
scanf("%s",s1);
scanf("%s",s2);
la1=strlen(s1);
la2=strlen(s2);
memset(a1,0,la1*sizeof(int)); //将a1数组全部归零
memset(a2,0,la2*sizeof(int));
for(int i=0;i<la1;i++)
a1[i]=s1[la1-i-1]-'0'; //将字符串在转化为数组,为了计算方便,使用倒叙
for(int i=0;i<la2;i++)
a2[i]=s2[la2-i-1]-'0';
for(int i=0;i<MAX;i++) //注意这里把前面的0都相加,可以优化
{
a2[i]+=a1[i];
if(a2[i]>=10)
{
a2[i]-=10;
a2[i+1]++;
}
}
int flag=0;
for(int i=MAX;i>=0;i--)
{
if(flag)
printf("%d",a2[i]);
else if(a2[i]!=0)
{
flag=1;
printf("%d",a2[i]);
}
}
if(flag==0)
printf("0");
}