| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3238 人关注过本帖
标题:大数 高精运算------加法
取消只看楼主 加入收藏
vvilp
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-1
收藏
 问题点数:0 回复次数:1 
大数 高精运算------加法
#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
vvilp
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-1
收藏
得分:0 
我 还发了一个乘法的  加精了 就是没人顶  我现在正在做除法  过几天就贴过来!!!!!
  大数除大数 要有牛顿迭代 算成 倒数 然后再乘就可以了
收到的鲜花
  • 卧龙孔明2008-05-17 16:33 送鲜花  1朵   附言:用那么麻烦吗
2008-05-17 15:37
快速回复:大数 高精运算------加法
数据加载中...
 
   



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

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