标题:大数 高精运算------加法
只看楼主
vvilp
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-1
 问题点数:0 回复次数:10 
大数 高精运算------加法
#include <stdio.h>
#include <stdlib.h>

char s[101];
int sum[101];

int main() {
    int i, j;
    while (gets(s), strcmp(s, "0")) {//巧妙化解开多少个数组 算多少个数的和的局面
        j=strlen(s);
        for (i=j-1; i>=0; --i) {
            sum[j-i-1]+=(s[i]-'0');//s[i]-'0'表示字符数字转化成int数字  倒序加到sum中 sum第一个数是s的最后一个数的和
        }
    }
    j=101; while(!sum[j])--j;  //重新赋值j 使j为目前sum的总位数
    for (i=0;i<j;++i) {   //如果s[i]加成两位数 将十位数加给前一位数
        sum[i+1]+=sum[i]/10;
        sum[i]=sum[i]%10;
    }
    for (i=j; i>=0; --i) {
        printf("%d", sum[i]);
    }

}------------------------------------------------------------------------------------------------------------------------------
总结一下
(1)开一个字符数组 存放数字 开一个int数组存放之和
(2)while (gets(s), strcmp(s, "0")) 使得不用开多余的数组来存放数据实现边输入边相加
(3)s[i]-'0'将字符的数字转成int数字 然后加到sum中 注意是倒序
(4)算完sum之后一定要重新定义j为sum的最大位数
(5)后面一个for 的工作就是如果加的数超过10就把十位数加到前面去 然后只保留个位数
(6)最后倒序输出sum即可 哈哈 我想的也够累的……到此为止吧
搜索更多相关主题的帖子: sum 加法 大数 高精 int 
2008-05-16 00:01
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
得分:0 
顶上去
2008-05-17 10:06
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
加法这么简单……做个除法出来看看……………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-17 11:12
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
[bo]以下是引用 [un]StarWing83[/un] 在 2008-5-17 11:12 的发言:[/bo]

加法这么简单……做个除法出来看看……………………

除法就是减法,只不过为了提速减的时候有时是错位的而已

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-05-17 11:57
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
翅膀上次燕子应该写过除法了哦...就是那个把末尾拿到开头,然后除的那题

学习需要安静。。海盗要重新来过。。
2008-05-17 12:01
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
那个不是除法……燕子和我都是用加法实现的………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-17 15:22
vvilp
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-1
得分:0 
我 还发了一个乘法的  加精了 就是没人顶  我现在正在做除法  过几天就贴过来!!!!!
  大数除大数 要有牛顿迭代 算成 倒数 然后再乘就可以了
收到的鲜花
  • 卧龙孔明2008-05-17 16:33 送鲜花  1朵   附言:用那么麻烦吗
2008-05-17 15:37
MACRO_TAN
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-5-11
得分:0 
我只用汇骗做过乘除法都是移位实现(整数),但有一直想不到带小数的如何实现.
期待C版出现
2008-05-17 23:23
爱喝牛奶的猫咪
Rank: 1
来 自:QQ群46520219
等 级:禁止访问
帖 子:513
专家分:0
注 册:2008-6-16
得分:0 
楼主的代码除了效率低下,没什么好说的
2008-07-15 05:16
ahuangzheng
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-9-4
得分:0 
有木有减法的额
2011-09-04 14:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-214537-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063448 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved