| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:再次修改代码~大位数乘法~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:2 
再次修改代码~大位数乘法~
看看这个能不能改好?~先谢过了~

程序代码:
#include<stdio.h>
#include<string.h>
#define N 101

void Init(char a[]);
char* fun(char a[],char b[],char c[]);

int main()
{
    char a[N+1]={0};                                //默认A比B长
    char b[N+1]={0};
    char c[N+2]={0};

    Init(a);
    Init(b);

    printf("%s\n",fun(a,b,c));

    return 0;
}

void Init(char a[])
{
    char c=0;
    int i=1;

    a[0]='0';

    while ((c=getchar())!='\n')
        a[i++]=c;
}

char* fun(char a[],char b[],char c[])
{
    char* pa=a+strlen(a)-1;                                      //*pc+=((*pa-'0')+(*pb-'0'))
    char* pb=b+strlen(b)-1;
    char* pc=c+N-2;
    int s=0;

     while(pb!=b)
     { 
         char* pa=a+strlen(a)-1;
         int jin=0;
           while(pa!=a)
           { 
               if((*pa-'0')*(*pb-'0')>=10)
               {
                   *pc=*pc+((*pa-'0')*(*pb-'0')+jin)%10;                     //进位与入数组
                    jin=((*pa-'0')*(*pb-'0'))/10;
               }              
               else if(((*pa-'0')*(*pb-'0'))<10)                                          
               {   
                   *pc=*pc+((*pa-'0')*(*pb-'0'))+jin;  
               }
               if((*pc-'0')>=10)
               {  
                   *(pc-1)+=1;
                   *pc=(*pc-'0')%10;         
               }
               --pa;
               --pc;                        
           }
           s++;
           --pb;
           pc=c+N-2-s;     
     }
    return (pc+s+strlen(c)-1);
}
搜索更多相关主题的帖子: color 
2017-04-11 22:51
NiuYoohoo
Rank: 4
等 级:业余侠客
威 望:2
帖 子:65
专家分:216
注 册:2016-10-8
收藏
得分:20 
assert也没打,判断也不加,想当然的认为 a*b的位数在c的范围内???

位数= ceil(log(a*b))= ceil(log(a))+ceil(log(b))

2*ceil(log(N+1))= ceil(log((N+1)*100)) != ceil(log(N+2)) 所以我都不想看你的代码因为他肯定存在Bug!
2017-04-11 23:17
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 2楼 NiuYoohoo
这个另外再说~就算测试在c范围里面的也是有问题啊~还是先搁置一下~等一段时间看看那位同学有何进展再说~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-12 13:08
快速回复:再次修改代码~大位数乘法~
数据加载中...
 
   



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

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