那位大虾帮我看看,我这哪里出错了。
题目很简单的,一个多位数乘以一个两位数想用代码写出他们是如何运行每一步的,最终输出结果。
下面是我写的代码,请大家看看,找找看,到底是哪里出错了怎么不能运行,谢谢大家了
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#define MAXLENGTH 1000
#define b.len 2
typedef struct Tdata
{
int len;
char data[MAXLENGTH];
}Tdata
int HighMul(Tdata a,Tdata b,Tdata *result)
{
int i ,j;
for(i=0;i<a.len;i++)
{
for(j=0;j<b.len;j++)
{
result->data[i+j]+=a.data[i]*b.data[j]%10;
result->data[i+j+1]+=a.data[i]*b.data[j]/10; //进位
}
}
for(i=0;i<a.len+b.len;i++)
{
if(result->data[i]>=10) //两个数相加,值大于10,进位。
{
result->data[i+1]+=result->data[i]/10;
result->data[i]=result->data[i]%10;
i++;
}
}
result->len=i-1;
return i-1;
}
main()
{
Tdata a, b, c;
int i;
printf("Please input two data:\n");
scanf("%s%s",&a.data,&b.data);
for(i=0;i<MAXLENGTH;i++)
{
c.data[i]=0;
a.len = strlen(a.data);
b.len = strlen(b.data);
for(i=0;i<a.len;i++)
{
a.data[i] -= 48; //将Ascil码转换为数据.
}
for(i=0;i<b.len;i++)
{
b.data[i] -= 48;
}
}
HighMul(a,b,&c);
for(i=c.len;i<=0;i--)
{
printf("%d",c.data[i]);
}
printf("\n");
getch();
return 1;
}