QIQIQIY 2020-04-22 21:58 采纳率: 0%
浏览 706

两个15位的正整数相加?

两个15位的正整数相加
【问题描述】能使用数组的方式对两个15位的正整数相加,并将结果显示出来。
提示:请将每一位数存放在一个数组元素中,然后逐位相加。
【输入形式】
输入两个15位的正整数,每个整数占一行。
【输出形式】
结果显示在下一行
【样例输入】
123456789012345
234567890123456
【样例输出】
358024679135801

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-04-22 23:46
    关注

    如果问题得到解决,请点下采纳

    #include <stdio.h>
    #include <string.h>
    
    inline int addchar(char c1,char c2,int f,char &s){//1位加法,f表示进位
        int t=c1+c2+f;
        if(t<106){
            s=(char)(t-48);
            return 0;
        }else{
            s=(char)(t-58);
            return 1;
        }
    }
    void bignumadd(const char* num1,const char* num2,char* sum){//大数相加
        size_t len1=strlen(num1),len2=strlen(num2),i=0;//得到输入字符串长度
        int f=0;//用于保存进位
        if(len1>len2){//如果第一个字符串长
            for(;i<len2;++i){//len2比较小,先遍历完
                f=addchar(num1[len1-i-1],num2[len2-i-1],f,sum[i]);
            }
            for(;i<len1;++i){//剩下部分
                f=addchar(num1[len1-i-1],'0',f,sum[i]);//第一个字符串多出来的直接和0加
            }
        }else{//如果第二个字符串长
            for(;i<len1;++i){//len1比较小,先遍历完
                f=addchar(num1[len1-i-1],num2[len2-i-1],f,sum[i]);
            }
            for(;i<len2;++i){//剩下部分
                f=addchar('0',num2[len2-i-1],f,sum[i]);//第二个字符串多出来的直接和0加
            }
        }
        //别忘记最高位还可能会进位
        for(;f>0;++i){
            f=addchar('0','0',f,sum[i]);
        }
    }
    void showsum(const char* s){//显示计算结果
        size_t len=strlen(s);
        for(int i=len-1;i>-1;--i){//从最后一位开始逆序输出
            putchar(s[i]);
        }
    }
    int main() {
        const char* num1="123456789012345";
        const char* num2="234567890123456";
        char s[100]={0};//分配100字节的栈空间存放结果
        //printf(" %s+%s\n=",num1,num2);
        bignumadd(num1,num2,s);
        showsum(s);
        //getchar();
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog