C语言高精度乘法求纠错,没输出

C语言高精度乘法求纠错,没输出#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){inti,j,... C语言高精度乘法求纠错,没输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,k,sa[501]={0},sb[501]={0},sc[501]={0};
char a[501],b[501];
int c[501]={0};
int m,n,flag=0,chang=0;
scanf("%s%s",a,b);
m=strlen(a);
n=strlen(b);
j=0;
for(i=0;i<m;i++)
{
sa[i]=a[j];j++;
} j=0;
for(i=0;i<n;i++)
{
sb[i]=b[j];j++;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c[j+flag]=sa[i]*sb[j];
}
flag++;
}
i=0;
while(c[i]>0)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
chang++;
}
for(i=chang;i>=0;i++)
{
printf("%d ",c[i]);
}
system("pause");
return 0;
}
展开
 我来答
成都IO
2015-01-03 · TA获得超过117个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:129万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int ctoi(const char *c )
{
char t[2]={0};
        t[0] = c;
        t[1]='\0';
      
        int i = atoi( t ); 
return i;
}

int q( int n )
{
       
int r = 1;

if( n < 1 ) return r;

while(--n!= 0)
{
r*=10;
}
        
return r;
}

int main()
{
int i,j,sa[501]={0},sb[501]={0} ;
     char a[501]={"101"};
char b[501]={"101"};
    
        int c= 0;
     int m = 0 ,n = 0;
     //scanf("%s%s",a,b);
     m=strlen(a);
     n=strlen(b);
     j=0;

for(i=0;i<m;i++)
     {
      sa[i]=ctoi((a[j]))*q(m-i);
                
j++; 

        printf("\n");
j=0;
     for(i=0;i<n;i++)
     {
sb[i]=ctoi((b[j]))*q(n-i);
               
j++;
     }
      for(i=0;i<m;i++)
      {
for(j=0;j<n;j++)
{
c+=sa[i]*sb[j];
       }
      
      }
printf("%s*%s = %u\n",a,b,c);

        return 0;
}

源码的逻辑我没有理解清楚,按照了解的乘法规则在你的基础上修改了下,如上代码。代码在在线编辑器:http://codepad.org/ 编译通过,因这个在线编辑器不支持输入,所以用了两个测试值。需要输入修改为录入即可。

Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式