水仙花数程序,总是不出结果

老师和学校都有病。模特学编程干嘛?偏偏要考C语言二级。帮忙啊!

#include<stdio.h>
void main()
{
 int i,j,k,n;
 n=i*100+j*10+k;
 for(i=1;i<10;i++)
  for(j=0;j<10;j++)
   for(k=0;k<10;k++)
    if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
     printf("水仙花数为:%d",n);
}

出不来结果。

阅读 6.4k
4 个回答
#include<stdio.h>

#define tube(x) ((x)*(x)*(x))

int main(){
  int i, j, k;
  for(i = 1; i < 10; i++){
    for(j = 0; j < 10; j++){
      for(k = 0; k < 10; k++){
        if(i * 100 + j * 10 + k == tube(i) + tube(j) + tube(k)){
          printf("发现一只水仙花数:%d\n", i * 100 + j * 10 + k);
        }
      }
    }
  }
  return 0;
}

问题中的代码的错误在于,n在赋值的时候,i、j、k都没有初始化,n的值这时就没有道理;其次,n在被赋值后,就再也没有被修改过……看起来题主是把i、j、k当指针来用了啊XD

解决方案:

在最后的一层for循环中:

for(k=0;k<10;k++)
  if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
    printf("水仙花数为:%d",n);

改成这样:

for(k=0;k<10;k++)
{
  n = (i*i*i)+(j*j*j)+(k*k*k);
  if((i*100+j*10+k)==n)
    printf("水仙花数为:%d",n);
}

实际上就是把n值在每次寻找水仙花数的时候更新一下~

#include<stdio.h>
void main()
{
  int i,j,k,n;
  for(i=1;i<10;i++){
    for(j=0;j<10;j++){
      for(k=0;k<10;k++){
        if(i * 100 + j * 10 + k == i*i*i + j*j*j + k*k*k){
          n = i*100 + j*10 + k;
          printf("水仙花数为:%d",n);
        }
      }
    }
  }
}
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏