为了账号安全,请及时绑定邮箱和手机立即绑定

为什么运行结果这样

#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


正在回答

3 回答

把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后结束循环。

1 回复 有任何疑惑可以回复我~
#1

刺猬ss 提问者

谢谢
2017-12-12 回复 有任何疑惑可以回复我~

在输出框前的判断框加&&i>=100

0 回复 有任何疑惑可以回复我~
#1

q翱翔

判断框里面应该是这样   if(i==a*a*a+b*b*b+c*c*c)
2017-12-07 回复 有任何疑惑可以回复我~
#2

q翱翔 回复 q翱翔

在C语言中= =才是等于
2017-12-07 回复 有任何疑惑可以回复我~

。。。。。。。。。。。。。。。。。。。。。。。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么运行结果这样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信