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

为什么这种情况

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

正在回答

5 回答

转换时数据类型加()

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

   //获取三位数字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);    

        }


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

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

0 回复 有任何疑惑可以回复我~
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;    
}


1 回复 有任何疑惑可以回复我~
#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;    
}
1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这种情况

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