谁帮忙看下下面的C++高精度乘法哪里错了。是高精度数乘一个正常精度数的程序

#include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;#definemax1000ch... #include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

#define max 1000

char s[max];
int num[max];
int key;
int len;

void tonum();
void multiply();

int main()
{
int x;

scanf("%d",&x);

while(x--){

scanf("%s",s);
tonum();

scanf("%d",&key);

if(key==0)
printf("0\n");

else{
multiply();
}
}

return 0;
}

void tonum()
{
memset(num,0,sizeof(num));
int j;

len=strlen(s);
j=len-1;

for(int i=len-1;i>=0;i--)
num[j--]=s[i]-'0';
}

void multiply()
{
int i,k;

for(i=0;i<len;i++)
num[i]=num[i]*key;

for(i=0;i<len;i++){
num[i+1]+=num[i]/10;
num[i]%=10;
}

while(num[i]>0){
num[i+1]=num[i]/10;
num[i]=num[i]%10;
i++;
len++;
}

for(i=len-1;i>=0;i--)
printf("%d",num[i]);

printf("\n");
}
关于3楼的问题,输出不是倒的,因为我存数的时候本身就是倒的,这样是为了方便从个位相乘。2楼也许是正解,没测试过
展开
 我来答
百度网友07e610b
2010-12-22 · TA获得超过267个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:143万
展开全部
在软件环境里按F5调试,出错的命令双击显示哪行再找原因
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyibetter
2010-12-22 · TA获得超过140个赞
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:194万
展开全部
没测试,不过int * int 再赋值给int很容易溢出的,不知道你是不是这问题.你测试的是多大的数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行走的标本
2010-12-22 · TA获得超过179个赞
知道答主
回答量:168
采纳率:0%
帮助的人:143万
展开全部
你不感觉你的输出结果是倒的吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式