解题思路: 少年无所畏惧,直接上就是了
注意事项: 我觉得这题写不出来的可能原因如下:
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 ;
}
//还不能理解,可评论,我尝试解释一下你的疑问
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复