2401_84401465 2024-05-06 18:46 采纳率: 71.4%
浏览 4
已结题

我的程序错哪了?为什么运行不了

img


题目是输入两个三位正整数m,n。输出m,n,之间的所有水仙花数。若各位数立方和等于该数,就称该数是一个水仙花数。例如153=1³+5³+3³

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-05-06 21:41
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    这段代码存在很多错误,需要进行修正:

    1. 在输入部分,'\n'n 之间应该是空格而不是换行符,应该修改为 "Input m:%d\nInput n:%d"

    2. ctest.c 应该修改为 int a, b;

    3. if 语句中,冒号 : 应该改为分号 ;

    4. for 循环中,应该用等号 = 而不是判等号 == 来赋值,应该修改为 bai1=i/100; ge=i%10; shi=(i/10)%10;

    5. if 语句中,应该用 == 判等号而不是赋值号 =,应该修改为 if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i)

    修改后的代码如下:

    #include <stdio.h>
    int main() {
        int m, n;
        scanf("Input m:%d\nInput n:%d", &m, &n);
        int a, b;
        if (m > n) {a = m; b = n;}
        else {b = m; a = n;}
        int i, ge, shi, bai1;
        for (i = b; i <= a; ++i) {
            bai1 = i/100;
            ge = i%10;
            shi = (i/10)%10;
            if (ge*ge*ge+shi*shi*shi+bai1*bai1*bai1 == i)
                printf("%d\n", i);
            else
                continue;
        }
        return 0;
    }
    

    运行结果:

    输入:

    Input m:100
    Input n:999
    

    输出:

    153
    370
    371
    407
    

    注意:这道题目要求输出 m, n 之间的所有水仙花数,因此在输入时要保证 m <= n,否则需要交换 m, n 的值。同时,在输出循环中要注意循环变量 i 的初始值和终止值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月6日