题解 | #高精度整数加法#

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

//字符串输入考虑数组处理;多个连续字符串输入采用scanf和EOF判断(遇空格或回车停止);对于有进位的需考虑倒序相加,并设置标志位;结束时的标志位通过判断有无优先输入,最后再倒序输出。
#include <stdio.h>
#include <string.h>

int main() {
    char str1[10001], str2[10001];
    while(scanf("%s %s", str1, str2) != EOF) //输入存成数组
    {
        int num1[10001] = {0};
        int num2[10001] = {0};
        int len1, len2;
        len1 = strlen(str1);
        len2 = strlen(str2);
        for(int i = 0; i<len1; i++)//倒序存储至另一数组
        {
            num1[i] = str1[len1-1-i] - '0';
        }
        for(int j = 0; j<len2; j++)
        {
            num2[j] = str2[len2-1-j] - '0';
        }
        int len = ((len1>len2)?len1:len2);
        int num[10001] = {0};
        int flag = 0;
        for(int k = 0; k<len+1; k++) //倒序相加,标志位判断进位
        {
            int sum = num1[k] + num2[k] + flag;
            if(sum<10)
            {
                num[k] = sum;
                flag = 0;
            }
            else
            {
                num[k] = sum%10;
                flag = 1;
            }
        }

        if(num[len]) //有进位则输出
        {
            printf("%d",num[len]);
        }
        for(int x = 0; x<len; x++) //输出其他
        {
            printf("%d", num[len-1-x]);
        }
        printf("\n");
        
    }

    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务