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

for循环

#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%100)/10;

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

        sd =num%10;

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

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

        {

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

        }

    }

    return 0;    

}

问题:

  1. 为什么表达式二的num<1000不能写成num<=999

  2. 为什么if中的语句我写成num==sd*sd*sd+td*td*td+hd*hd*hd就提交不了

正在回答

4 回答

我复制了上面的代码,运行的结果为:

水仙花数字:153
水仙花数字:370
水仙花数字:371
水仙花数字:407

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

花开半夏123 提问者

我知道这样的代码运行结果是正确的,但是我之前是想把n<1000改为n<=999;把num==hd*hd*hd+td*td*td+sd*sd*sd改为num==sd*sd*sd+td*td*td+hd*hd*hd,这样的代码系统总是提交不了,我看过了,不是分号的问题。不知道是什么原因?
2016-11-10 回复 有任何疑惑可以回复我~
#2

zhonggang4234975

是不是这个提示:“请检查代码中是否包含:for( num = 100 ; num < 1000 ; num++ ),再试试!直接进入下一节”?不用管它,评分标准被的太刻板了,还有很多这样的题,只要输出结果正确了就跳过吧
2016-11-10 回复 有任何疑惑可以回复我~
#3

花开半夏123 提问者 回复 zhonggang4234975

嗯嗯嗯,就是这样。原来是这样啊,谢谢啦!
2016-11-10 回复 有任何疑惑可以回复我~
#4

慕粉4988923

这种情况应该是这个系统本身的问题,它答案没有包括所有的正确答案,虽然你的代码没问题它也不会判断你对,这种情况我也遇到过,不管它,多试下代码的不同表达就好,还有要对自己的代码要有信心。
2016-11-10 回复 有任何疑惑可以回复我~
查看1条回复

你应该是用的慕课网自带的编辑器吧,他们内部有关键代码验证功能,虽然你改了代码和原文运行结果一样,但是网站检测不到关键代码就会报错,和代码无关,你可以自己下一个软件http://img1.sycdn.imooc.com//58242d2100015d7f04080214.jpg跑一下就知道了。

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

右边的输出窗口中会给出出错信息,你可以看一下提示哪里出错了。

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

请检查:分号是否错用了全角形式;<=和==中间是否多了空格(< =,= =).

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

花开半夏123 提问者

检查了,分号没有问题,也没有多出空格,但还是提交不了,怎么办?
2016-11-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926019    人
  • 解答问题       20793    个

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

进入课程
意见反馈 帮助中心 APP下载
官方微信