qq_58625182
2021-08-21 17:11
采纳率: 100%
浏览 42

能帮帮忙看看这几行代码怎么错了吗?

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

  • 收藏

1条回答 默认 最新

  • Pliosauroidea 2021-08-21 17: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++了
    最高位处理有点问题我也改了一下
    有帮助望采纳

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题