刺猬ss
2017-12-07 20:57
#include <stdio.h>
int main(){
int i;
int a,b,c;
for(i=100;i<1000;i++){
a = i/100;
b = (i-a*100)/10;
c = i-a*100-b*10;
if(i = a*a*a+b*b*b+c*c*c){
printf("水仙花数字:%d\n",i);
}
}
return 0;
}
运行成功,输入错误
水仙花数字:1
水仙花数字:8
水仙花数字:729
水仙花数字:370
水仙花数字:371
水仙花数字:378
水仙花数字:1099
把if(i = a*a*a+b*b*b+c*c*c)改成if(i == a*a*a+b*b*b+c*c*c)就可以了。因为“=”是赋值,“==”是判断是否等价,于是:
第一次(i=100,a=1,b=c=0,if中(i=1*1*1+0*0*0+0*0*0),即i为1(非0),执行printf输出i此时的值(1)
之后i加1,所以
第二次(i=2,a=2,b=c=0,if中(i=2*2*2+0*0*0+0*0*0),即i为8(非0),执行printf输出i此时的值(8)
之后i加1,所以
第三次(i=9,a=9,b=c=0,if中(i=9*9*9+0*0*0+0*0*0),即i为729(非0),执行printf输出i此时的值(729)
以此类推,直到进行加1后i不满足循环条件(即i不小于1000),所以输出1099后结束循环。
在输出框前的判断框加&&i>=100
。。。。。。。。。。。。。。。。。。。。。。。。
C语言入门
926020 学习 · 20793 问题
相似问题
回答 2
回答 3
回答 1
回答 3
回答 1