司亓swag 2024-11-30 09:31 采纳率: 100%
浏览 8
已结题

问题是输出所有的水仙花数

img


不知道是代码哪里出了问题,在控制台上没有看见输出的所有水仙花数。

  • 写回答

1条回答 默认 最新

  • 关注

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

    看起来你的代码存在一些问题,我会帮你纠正。另外,你的描述中似乎包含了一些无关的信息,例如图1和图2的内容,这些信息对于解决问题并没有帮助。我会专注于你的代码问题。

    你的代码应该是这样的:

    #include<stdio.h> 
    
    int main() 
    {
        int n, i, j, k, sum;
        for(n=100; n<1000; n++) 
        {
            i = n / 100; // 获取百位数
            j = (n / 10) % 10; // 获取十位数
            k = n % 10; // 获取个位数
            sum = i * i * i + j * j * j + k * k * k; // 计算立方和
            if(n == sum) 
            {
                printf("%d\n", n); // 输出水仙花数
            }
        }
        return 0; 
    }
    

    你的代码问题在于变量j的计算方式不正确。你应该使用(n / 10) % 10来获取十位数,而不是n / 10 - i * 100。此外,变量k的计算方式也有误,应该直接使用n % 10来获取个位数。最后,你在输出水仙花数时可能需要添加一个换行符\n,以便每个数都在新的一行输出。

    关于你描述的在控制台没有看见输出的所有水仙花数的问题,这可能是由于你的程序运行得太快,输出被缓冲了。你可以尝试在printf函数后添加一个fflush(stdout)来清空输出缓冲区,确保每个数都能立即输出。另外,确保你的程序在正确的环境下运行,并且没有任何错误或警告。如果问题仍然存在,那可能是你的控制台设置问题,可以尝试在Visual Studio的设置中查看或更改控制台的输出设置。

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

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 11月30日