#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;这句有问题