#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;
}
这写的是一个个位数与一个大数相乘的程序,想了半天不知道哪里错了

能帮帮忙看看这几行代码怎么错了吗?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Pliosauroidea 2021-08-21 09:33关注
#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++了
最高位处理有点问题我也改了一下
有帮助望采纳本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报