微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

#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。这样,编译器就会为您的代码生成错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。