简单的大数加法,按照竖式的计算方式从最低位往最高位加,记住进位即可。
#include<stdio.h>
#include<string.h>
int main()
{
char str1[101]; // 始终将str1作为中间结果
char str2[101];
int ans[101]={0}; // 中间结果的int表示
scanf("%s",str1);
while(scanf("%s",str2) != EOF)
{
if(!strcmp(str2,"0"))
break;
else
{
int num1[101]={0};
int num2[101]={0};
int n1 = strlen(str1);
int n2 = strlen(str2);
//将str1和str2按倒序(即从低位到高位)存入num1和num2
for(int i = 0;i<n1;i++)
num1[i] = str1[n1-1-i] - '0';
for(int i = 0;i<n2;i++)
num2[i] = str2[n2-1-i] - '0';
int n = n1>n2?n1:n2;
int jinwei = 0;
for(int i = 0;i<n;i++)
{
ans[i] = (num1[i] +num2[i] + jinwei) %10;
jinwei = (num1[i] +num2[i] + jinwei) /10;
}
if(jinwei) // 最高位若也有进位
{
ans[n] = jinwei;
n++;
}
for(int i = 0;i<n;i++)
str1[i] = ans[n-1-i]+'0';
}
}
puts(str1);
return 0;
}
京公网安备 11010502036488号