问答详情
源自:4-9 循环结构之for循环(二)

为什么运行结果这样

#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


提问者:刺猬ss 2017-12-07 20:57

个回答

  • 慕粉6281325
    2017-12-07 22:10:24
    已采纳

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

  • q翱翔
    2017-12-07 21:21:40

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

  • qq_厌倦_11
    2017-12-07 21:14:30

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