看看问题在哪我不知道

#include<stdio.h>
int main()
{
int num,a,b=0;
printf("请输入一个三位数");
scanf("%d",&num);
while(num>0){
a=num%10;
b=aaa+b;
num=num/10;
}
if(b==num){
printf("是水仙花数");
}else{
printf("不是水仙花数");
}
return 0;
}

回答:出现问题的原因有两个,num的值被你改了,a的立方是aaa,修改后的代码如下:

#include<stdio.h>
int main()
{
    int num,a,b=0,c,d;
    printf("请输入一个三位数:");
    scanf("%d",&num);
    int temp=num;
    while(num>0){
        a=num%10;        
        b=a*a*a+b;
        num=num/10;
    }
    if(b==temp){
        printf("是水仙花数");
    }else{
        printf("不是水仙花数");
    }
    return 0;
}
//输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,
//例如153是“水仙花数”,因为:153 = 1 3 + 5 3 + 3 3 。

注释:下次可以将代码放在标签内,不然不好复制,空格需要注意,编程需要严谨,记住立方的计算;另外,你的思想很敏捷,我想到的只是分别表示,代码如下:

#include<stdio.h>
int main()
{
    int num,a,b=0,c,d;
    printf("请输入一个三位数:");
    scanf("%d",&num);   
    if(num>0){
        a=num%10;  
        c=(num%100)/10;             //除以100取余后再除以10表示10位数上的数字
        d=num/100;                  //可以这样计算的原因是int类型会自然舍弃小数       
        b=a*a*a+c*c*c+d*d*d;       
    }
    if(b==num){
        printf("是水仙花数");
    }else{
        printf("不是水仙花数");
    }
    return 0;
}
//输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,
//例如153是“水仙花数”,因为:153 = 1 3 + 5 3 + 3 3 。

b = aaa+b;这句有问题