博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数相加
阅读量:2073 次
发布时间:2019-04-29

本文共 1401 字,大约阅读时间需要 4 分钟。

 两个大数我们可以用数组来保存,然后在数组中逐位进行相加,再判断该位相加后是否需要进位,为了方便计算,我们将数字的低位放在数组的前面,高位放在后面。

大数相加

#include
#include
int main(){ char n1[10000]={'0'},n2[10000]={'0'}; int result[10001]={0},t1[10000]={0},t2[10000]={0}; int len,len1,len2; int i,j; printf("请输入第一个数:");  scanf("%s",&n1); printf("请输入第二个数:"); scanf("%s",&n2); printf("n1=%s\n",n1); printf("n2=%s\n",n2); len1=strlen(n1); len2=strlen(n2); printf("len1=%d len2=%d\n",len1,len2); if(len1>len2){ len=len1; }else{ len=len2; } for(i=0,j=len1-1;j>=0;i++,j--){   t1[i]=n1[j]-'0'; } for(i=0,j=len2-1;j>=0;i++,j--){ t2[i]=n2[j]-'0'; } printf("t1="); for(i=0,j=len-1;j>=0;i++,j--){ printf("%d",t1[i]); } printf("\nt2="); for(i=0,j=len-1;j>=0;i++,j--){ printf("%d",t2[i]); } printf("\n"); for(i=0;i
9){ result[i+1]++; result[i]-=10; } } if(result[len]>0){ len++; } printf("result="); for(i=len-1;i>=0;i--){ printf("%d",result[i]); } printf("\n"); return 0;}

关键部分方便理解记忆:

if(len1>len2){		len=len1;	}else{		len=len2;                //len为两个数组中最长的字符串长度	}	for(i=0,j=len1-1;j>=0;i++,j--){        //将字符转为单个数字并且倒序存放在int类型数组中		t1[i]=n1[j]-'0';	}	for(i=0,j=len2-1;j>=0;i++,j--){        //将字符转为单个数字并且倒序存放在int类型数组中		t2[i]=n2[j]-'0';	}	for(i=0;i
9){ result[i+1]++;       //进位 result[i]-=10; } } if(result[len]>0){            //判断最大一位是否有进位 len++; } for(i=len-1;i>=0;i--){        //倒序将结果输出 printf("%d",result[i]); }

转载地址:http://sqtmf.baihongyu.com/

你可能感兴趣的文章
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>