大数相加
来源:互联网 发布:芒果tv没有mac版 编辑:程序博客网 时间:2024/06/08 06:35
大数加法的其他方法
1;这种方法应该是与上次大数阶乘的方法类似吧,也是用一个int数组来存这个数,每个数组元素都存储几位数。并且进位;
2;不过这个我们不需要考虑数组元素进位的问题,因为把数组开得很大,只需要进位就可以了,只是在输出的时候要注意一下,不是按原来的方法输出了,大有不同了;
3;先看一下核心代码,
k = 0;
for(i = 0; i <= 500; i++){
ss[i] = aa[i]+bb[i]+k;
k = 0;
k = ss[i]/10;
ss[i] = ss[i]%10;
}
刚才说的把数组元素开得很大,就是这里的500了。
4;说一些刚打代码时出的问题吧。
(1;初始化要注意,要用的数组一般都要初始化的,
(2;还有一点是,并不是初始化都可以成功的,这点我搞了好久,才想起上次也就是这个出了问题,找学长帮忙的。就是在外面将字符串初始化为0;然后后面再使用,那么当字符串数组开得很大,后面的0再进行运算的时候就乱套了。
(3;
Memset(,0.)按照这样进行初始化;
for(i = 0; i <= 500; i++){
ss[i] = (aa[i]-‘0’)+(bb[i]-‘0)’+k;}
到了后面就乱了。
这种情况应该是只能将字符串变成int数组类型吧。我是用的for进行一一转变;
for(i = 0; i < strlen(a); i++){//不能直接将字符串初始化为0;注意; aa[i] = a[i]-'0';}
5;还有就是刚刚说的输出问题;
这里的输出要与前面的思路相一致;因为数组元素开得很大,并且都进行了循环,因此要找到要输出数字的下标;怎么找就是把前面是0的都不要输出,从第一个不是0的数开始输出;
for(i = 500; ; i--){ if(ss[i] != 0){ break; }}for( ; i != -1; i--){ printf("%d",ss[i]);}
6;是不是也想把这个存储一位的变成存储两位 的,刚试了一下,又放弃了,可是可以的只是又大动手术感觉有回到原来的思路上去了。
摆代码吧;
#include<stdio.h>#include<string.h>int main(){ char a[1002]={0}, b[1002]={0}; int i, j, k, ss[505], aa[1002]={0}, bb[1002]={0}; while(scanf("%s",a) != EOF){ memset(ss, 0, sizeof(ss)); scanf("%s",b); strrev(a); strrev(b); for(i = 0; i < strlen(a); i++){//不能直接将字符串初始化为0。注意; aa[i] = a[i]-'0'; } for(i = 0; i < strlen(b); i++){ bb[i] = b[i]-'0'; } k = 0; for(i = 0; i <= 500; i++){ ss[i] = aa[i]+bb[i]+k; k = 0; k = ss[i]/10; ss[i] = ss[i]%10; } for(i = 500; ; i--){ if(ss[i] != 0){ break; } } for( ; i != -1; i--){ printf("%d",ss[i]); } printf("\n"); memset(aa, 0, sizeof(aa)); memset(bb, 0, sizeof(bb)); }}
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 【Linux系统编程应用】Linux音频编程接口
- 剑指offer面试题19:二叉树的镜像
- Android 动画的基本原理
- 湖南省第十二届大学生计算机程序设计竞赛 A 2016
- select into from 和 insert into select 的用法和区别
- 大数相加
- 在html中使用javascript注意事项
- Android——Tomcat版本更新下载+头像照片上传到Tomcat
- office 2010 Word,Excel的功能区突然消失了
- 消息队列入门(二)消息队列的规范和开源实现
- [CSU 1803(湖南省赛16)] 有向无环图 (DAG+公式化简)
- 【Visual C++】一些开发心得与调试技巧
- 《Effective C++》学习总结
- Eclipse安装svn插件的几种方式