| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 831 人关注过本帖
标题:我这个【高精度加法】哪里出问题了?谢谢!
只看楼主 加入收藏
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
 问题点数:0 回复次数:6 
我这个【高精度加法】哪里出问题了?谢谢!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{int a[100]={0},b[100]={0},c[200]={0};
int jw;
int i,la,lb;
printf("--large first--\n");
printf("a:");
scanf("%s",a);
printf("b:");
scanf("%s",b);

la=strlen(a);
lb=strlen(b);
printf("a lengh:%d\nb lengh:%d\n",la,lb);

      
   for(i=la;i>=0;i--)
      {
      if((a[i]+b[i])>9)
        {c[i]=a[i]+b[i]-10+jw;
         jw++;
        }
      else
         {c[i]=a[i]+b[i]+jw;
          jw=0;
         }
      }
  
        printf("answer:%s",c);
      
getch();
}

[[it] 本帖最后由 子洋虾米 于 2008-10-3 12:04 编辑 [/it]]
搜索更多相关主题的帖子: 高精度 加法 
2008-10-03 11:55
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
无法计算数字的和
结果出现乱码
2008-10-03 11:55
yizishashou
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-10-2
收藏
得分:0 
建议
这个程序的问题很多
1、jw的初值未赋0
2、char型和int型要做个转换,比如往数组a里面输入1,然后进行运算,这个1并不是整数1,而是字符‘1’,它对应的值为49,真正运算的是49,你要转换一下才可以运算
3、la和lb的长度问题,la不一定等于lb,如果长度不一样,你要考虑移位对齐
4、 for(i=la;i>=0;i--)
      {
      if((a[i]+b[i])>9)
        {c[i]=a[i]+b[i]-10+jw;
         jw++;
        }
      else
         {c[i]=a[i]+b[i]+jw;
          jw=0;
         }
这个循环里的初始i=la(或lb)-1,这个不影响结果,但是你的输入最多只到a[la-1]和b[lb-1]。
5、从你的程序来看,a[0]和b[0]是最高位,如果la=lb,且a[0]+b[0]+jw〉9怎么办,这个1往哪进位?
一点建议
2008-10-03 13:07
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
[bo][un]yizishashou[/un] 在 2008-10-3 13:07 的发言:[/bo]

这个程序的问题很多
1、jw的初值未赋0
2、char型和int型要做个转换,比如往数组a里面输入1,然后进行运算,这个1并不是整数1,而是字符‘1’,它对应的值为49,真正运算的是49,你要转换一下才可以运算
3、la和lb ...

jw我记得赋初值了吖```感谢你的建议..我会回去修改下先
2008-10-03 14:03
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
前两天我刚写过一个
2008-10-03 19:56
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
高精度加法——菲波那契数列

        int A[1000], B[1000], *a, *b, *t, len;
        A[0] = 0; B[0] = 1;
        a = A; b = B; len = 1;
        for(i=0; i<n; i++)
        {
            for(j=0; j<len; j++)
            {
                a[j] += b[j];
                a[j+1] += a[j]/100000000;
                a[j] %= 100000000;
            }
            if(a[len]) len ++;
            t=a; a=b; b=t;
        }
        printf("%d", b[len-1]);
        for(i=len-2; i>=0; i--) printf("%08d", b[i]);
        printf("\n");

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-10-04 12:24
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
谢谢哈!!
2008-10-04 15:22
快速回复:我这个【高精度加法】哪里出问题了?谢谢!
数据加载中...
 
   



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

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