混淆为什么程序输出不正确的问题是要检查整数是否为阿姆斯壮数

问题描述

#include<stdio.h>
int cube(int n)
{
    return (n*n*n);
}/*function to return cubic root*/
int sumcube(int x)
{
    int sum=0,m;
    while(x>0)
    {
        m=x%10;
        sum=sum+(cube(m));
        x=x/10;
    }
    return sum;

}/* returns the sum if cubic digits of an integer*/
int main ()
{
    int i;
    for(i=1; i<=5000; i++)
    {
        if (i==sumcube(i));
        {
            printf("%d\t",i);
        }
    }
}

/ *此程序用于检查数字是否是从1到5000的整数,以及检查输出是否是从1到5000的所有整数* /

解决方法

在if之后有一个;,它被解释为if的空主体,因此无论if语句中的条件如何,它将执行之后的所有内容是或不是。

为避免将来出现相同的错误,请启用所有编译器警告,并仅禁用您确定要忽略的警告,并将处理警告设置为开发的错误标志(不是在发布代码时使用,但这不是必需的)您应该在知识水平上做)。对于gcc,请使用标志-Wall -Wextra -Wpedantic -Werror。这样,编译器就会为您的代码生成错误。