#include <stdio.h>
#include <stdlib.h>
typedef struct{
char num[2000];//大数
int count;//大数的位数
}data;
int main(void){
data multi(data temp,int elementx);
data temp={{'0','0','5'},3};
int i;
temp=multi(temp,3);
for(i=temp.count-1;i>=0;i++)
printf("%c",temp.num[i]);
return 0;
}
data multi(data temp,int elementx){
int i,t;
data tempx={{0}};
for(i=0;i<temp.count;i++){
t=(temp.num[i]-'0')*elementx;
tempx.num[i]+=(t%10+'0');
tempx.num[i+1]+=t/10;
if(i==temp.count-1&&t/10>0){
temp.count++;
tempx.num[i+1]+='0';
}
}
tempx.count=temp.count;
return tempx;
}
这写的是一个个位数与一个大数相乘的程序,想了半天不知道哪里错了
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char num[2000]; //大数
int count; //大数的位数
} data;
int main(void)
{
data multi(data temp, int elementx);
data temp = {{'0', '0', '5'}, 3};
int i;
temp = multi(temp, 3);
for (i = temp.count - 1; i >= 0; i--)
printf("%c", temp.num[i]);
return 0;
}
data multi(data temp, int elementx)
{
int i, t;
data tempx = {{0}};
for (i = 0; i < temp.count; i++)
{
t = (temp.num[i] - '0') * elementx;
tempx.num[i] += (t % 10 + '0');
tempx.num[i + 1] += t / 10;
if (i == temp.count - 1 && t / 10 > 0)
{
temp.count++;
tempx.num[i + 1] += '0';
break;
}
}
tempx.count = temp.count;
return tempx;
}
输出循环i--写成i++了
最高位处理有点问题我也改了一下
有帮助望采纳