为什么这种情况

来源:4-9 循环结构之for循环(二)

无知的贤者

2015-11-11 22:17

http://img.mukewang.com/56434dcd00015b8809340609.jpg提示我可以进入下一节了但显示的是乱码

写回答 关注

5回答

  • qq__3559
    2016-01-05 16:09:17

    转换时数据类型加()

  • qq__3559
    2016-01-05 16:08:08

       //获取三位数字num百位上的数字

            hd =(int)(num/100);

            //获取三位数字num十位上的数字

            td =(int)(num%100/10);

            //获取三位数字num个位上的数字

            sd =num%10;

            //水仙花数的条件是什么?

            if(num==hd*hd*hd+td*td*td+sd*sd*sd) 

            {

                printf("水仙花数字:%d\n", num);    

            }


  • Zheard
    2015-12-10 16:41:37

    if()内部两个等号才是判断 否则是赋值

  • Perona
    2015-11-11 22:39:41
    for(   num=100 ;  num<408   ;    num++  )

    这里应该是判断小于1000,三位数的范围应该是100~1000(不包含1000),虽然我们知道到407就没有水仙花数了,但是也不能直接写408呀。

     hd =      int(num/100)     ;

    这里不用转换数据类型,hd、num本来就是int。int型做除法,得到的值也还是int型。而且数据类型转换还给写错了。是括号包裹int。如:int num1=(int)num;

    td =        int{(num-hd*100)/10}        ;

    这里的花括号又是怎么回事,还有就还是数据转换问题。

    if(    hd*hd*hd+td*td*td+sd*sd*sd=num              )

    =是赋值的意思,==才是判断。

    修改后的代码

    #include <stdio.h>
    int main()
    {
        //定义三位数num,个位数sd,十位数td,百位数hd
        int num, sd, td, hd;
        //循环所有三位数
        for(   num=100 ;  num<1000;    num++  )
        {
            //获取三位数字num百位上的数字
            hd =num/100;
            //获取三位数字num十位上的数字
            td =(num-hd*100)/10;
            //获取三位数字num个位上的数字
            sd =num-hd*100-td*10;
            //水仙花数的条件是什么?
            if(hd*hd*hd+td*td*td+sd*sd*sd==num) 
            {
                printf("水仙花数字:%d\n", num);    
            }
        }
        return 0;    
    }


  • 顾玌
    2015-11-11 22:32:05
    #include <stdio.h>
    int main()
    {
        //定义三位数num,个位数sd,十位数td,百位数hd
        int num, sd, td, hd;
        //循环所有三位数
        for(   num=100 ;  num<408   ;    num++  )
        {
            //获取三位数字num百位上的数字
            hd =      num/100   ;
            //获取三位数字num十位上的数字
            td =        num%100/10       ;
            //获取三位数字num个位上的数字
            sd =        num%10        ;
            //水仙花数的条件是什么?
            if(    hd*hd*hd+td*td*td+sd*sd*sd==num              ) //判断是否相等要用“==”,“=”是赋值
            {
                printf("水仙花数字:%d\n", num);    
            }
        }
        return 0;    
    }

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题