Integer Inquiry(大数加法)

Integer Inquiry

http://www.nowcoder.com/questionTerminal/df03906024d742cc919a64c22983f5e1

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

#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;
}
全部评论

相关推荐

点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务