两个15位的正整数相加
【问题描述】能使用数组的方式对两个15位的正整数相加,并将结果显示出来。
提示:请将每一位数存放在一个数组元素中,然后逐位相加。
【输入形式】
输入两个15位的正整数,每个整数占一行。
【输出形式】
结果显示在下一行
【样例输入】
123456789012345
234567890123456
【样例输出】
358024679135801
两个15位的正整数相加?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
解决评论 打赏 举报无用 1
悬赏问题
- ¥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