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