大数相加思想:
用数组储存数字,统一长度,然后同位相加,大于9则进位,取余,判断最高位是否有进位情况
代码如下
#include <stdio.h>
#include <string.h>char s1[10000];
char s2[10000];
int ss1[10000];
int ss2[10000];
int ss3[10000];
int main()
{
//数组清零
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
memset(ss3,0,sizeof(ss3));
//输入数字
scanf("%s",s1);
scanf("%s",s2);
//测量长度
int l1,l2;
l1=strlen(s1);
l2=strlen(s2);
//数组由char形转换为int形,同时将数组存储位置反转
for(int i=0;i<l1;i++)
ss1[i]=s1[l1-1-i]-'0';
for(int i=0;i<l2;i++)
ss2[i]=s2[l2-1-i]-'0';
//统一长度
if(l1<l2)
l1=l2;
//计算数值
for(int i=0;i<l1;i++)
{
//同位相加,不要忘了加ss3[i],因为可能有进位,防止漏加
ss3[i]=ss1[i]+ss2[i]+ss3[i];
//进位
if(ss3[i]>9)
{
ss3[i+1]=ss3[i]/10;
ss3[i]%=10;
}
}
//输出
//判断是否最高位有进位
if(ss3[l1]!=0)
printf("%d",ss3[l1]);
for(int i=l1-1;i>=0;i--)
printf("%d",ss3[i]);
printf("\n");
return 0;
}