这是求水仙花数运行没结果

img


主要问题是运行出来没结果,while里面a的值,是求出个十百三次方的之和,然后if语句判断c和a是否相等,但运行出来没一个结果

while循环前,初始化为a=0,以用于重新计算每个f的三次幂之和;

然后用一个临时变量记录f,用临时变量记录f的值,来计算f的每个数位的3次幂之和;

最后再判断这个和是否和f相等就可以了。

修改如下:

参考链接:

#include <stdio.h>


int main(void){
    
    int f,b,a=0,c=99;
    
    for(f=100;f<1000;f++){
        
    //  用临时变量temp记录每个f的值 
        int temp=f;
  // 存储f每个数位的3次幂之和的变量,每次判断初始化为0         
        a=0; 
        // 求当前f的每个数位数字3次幂之和 
        while(temp!=0){
            b=(temp%10);
            a+=(b*b*b);
            temp/=10;
        }
        
    
    // https://cn.bing.com/?mkt=zh-CN
    // 如果f的每个数位3次幂之和a等于f,则f是水仙花数,打印它    
        if(f==a){
            printf("%d\n",a);
        }
    }
    
    return 0;
}

img

f 是 for循环的循环变量,while循环里已经修改了它,这是有问题的
另外,每次内循环 while之前,a 都需要初始化为0,为了不影响下次计算

img