typue 2024-09-11 21:14 采纳率: 85.7%
浏览 12
已结题

for循环好像失效了,不知道为什么只出来一个数字

img


要输出水仙花数
代码运行没有提示,是不是循环那里出错了,按道理应该是有四个数字的,但是只输出了407

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-11 21:15
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据你提供的代码片段,我注意到了一些问题。这可能是导致循环只输出一个数字的原因。下面是代码的修正版本:

    #include <stdio.h>
    
    int main() {
        int i, x1, x2, x3;
        for (i = 100; i <= 999; i++) { // 注意这里的加号'+'应该是一个右花括号'}'
            x1 = i % 10; // 修改这里,获取个位数
            x2 = i / 10 % 10; // 修改这里,获取十位数
            x3 = i / 100; // 修改这里,获取百位数
            if (i == x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3) {
                printf("%6d", i); // 输出水仙花数,注意这里应该有一个换行符'\n',否则所有输出会在一行显示
            }
        }
        return 0;
    }
    

    你的原始代码中有几个问题需要修复:

    1. for循环中的i+应该是i++或者i)
    2. 获取个位、十位和百位数的逻辑有误。应该是x1 = i % 10x2 = i / 10 % 10x3 = i / 100。原来的代码没有正确获取各个位数。
    3. 输出语句中的格式字符串最好加上换行符\n,这样每个水仙花数会单独在一行输出。

    修复这些问题后,代码应该可以正确地输出所有的水仙花数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月11日
  • 已采纳回答 9月11日
  • 创建了问题 9月11日