解题思路: 少年无所畏惧,直接上就是了

注意事项:  我觉得这题写不出来的可能原因如下:

                1.怎么循环输入输出问题;下面有解释

                2.怎么知道它是不是水仙花数;首先要先分离它的各个位数,然后判断

                3.怎么让计算机判断这个范围内有没有水仙花数;加个循环,用一个循环遍历(把这个范围内的所有数字都尝试一遍)这个范围,然后判断水仙花数


参考代码:

#include<stdio.h>

int main ( )

{

int n=0 ,m=0 ;

int a=0 ,b=0 , c=0 ,d=0 ;

//初始化为0,是我个人习惯,让它的值一开始就可控

while(scanf("%d %d",&n ,&m )!=EOF)

/*循环输入的一种方式,EOF 在Windows系统里面就是 Ctrl+z 没有遇见EOF我就一直可以输入 C语言网里面也可直接用*/

/*或者用while(~scanf("%d %d",&n ,&m ))也可以,但是千万千万不要画蛇添足的写while(~scanf("%d %d",&n ,&m )!=EOF),我就这么干了,然后一直输出超过限制,而且codeblocks刚开始运行也很慢(捂脸),幸亏我有学霸指点,不然我还真就不好发现我画蛇添足了*/

      {

        for ( int i=n ; i<=m ; i++ )

/* 因为我是按从小到大的顺序遍历的,所以不需要考虑从小到大排列输出问题 */

            {

//例如 i=123

            a=i/100 ; 

//分离百位 ,a=123/100==1

            b=i/10%10 ;

 //分离十位, b=123/10%10==12%10==2

            c=i%10 ; 

//分离个位数 ,c=123%10==3

/*用在开头再定义一个中间变量e的方法分离也可以, 开头定义 变量a 那些的的时候一起定义 int e=0 ; 

然后这里e=i/10 ; a=e/10; b=e%10; c=i%10; 

e=123/10==12; a=12/10==1 ; b=12%10==2 ; c=123%10==3 ; */

            if ( a*a*a+b*b*b+c*c*c==i )

//判断是不是水仙花数

/*当然啊,用pow(a,3)+pow(b,3)+pow(c,3)==i 也行啊,就是要开头加个头文件#include<math.h> */

                {

                d++ ;

//如果是水仙花数我就记录下来

                printf("%d ",i) ;

//并且输出这个水仙花数

                }

            }

        if ( d==0 ) printf("no\n") ;

//如果一个循环结束了,我还是没有记录到一个水仙花数

//说明这个范围里面没有水仙花数

//那么就输出no

        else printf("\n") ;

/*为了输出结果好看,我在把这个范围内的水仙花数输出完了之后,我会让它换行,这句话没有也可以*/

        d=0 ;

//不管结果怎么样,我都让 变量d 重新记录水仙花数的数量

       }

return 0 ;

}

//还不能理解,可评论,我尝试解释一下你的疑问

点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论