简单的大数加法,按照竖式的计算方式从最低位往最高位加,记住进位即可。

#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;
}