大数相加
#include<stdio.h>
#include<string.h>
#define MAX 1000
int addition(char num1[],char num2[],int sum[]) //定义相加函数
{
int len1= strlen(num1); //获取输入数组长度,以便数组的倒置和相加
int len2= strlen(num2);
int i,j,len;
int n2[MAX]={0};
len = len1 > len2 ? len1 : len2; //获取长度较大数组长度
for(i=0,j=len1-1;i<len1;i++,j--) //将num1数组倒置并储存在sum数组中
{
sum[i]=num1[j]-'0';
}
for (i=0,j=len2-1;i<len2;i++,j--) //倒置num2储存n2数组
{
n2[i]=num2[j]-'0';
}
for(i=0;i<=len;i++)
{
sum[i]=sum[i]+n2[i]; //各位数相加
if(sum[i]>=10)
{
sum[i]-=10; //如果有进位,下一位加一
sum[i+1]++;
}
}
if(sum[len]!=0) //如果最高位有进位,长度加一
{
len++;
}
return len;
}
int main()
{
int len,i;
int sum[MAX]={0};
char a1[]="1111111111";
char a2[]="1222222229";
len=addition(a1,a2,sum);
printf("num1 %s + num2 %s=\n",a1,a2);
for(i=len-1;i>=0;i--) //倒序输出
{
printf("%d",sum[i]);
}
return 0;
}
思想是把大数作为数组来储存,数组倒序相加来表示大数相加,并倒序输出。