1096水仙花数(函数专题)解析

前言:

水仙花数此题,说实话就算高手不一定一遍就能过,稍微马虎一点就错了!

(今日Godyu有些伤心,心情格外忧伤很想喝酒,已然说不出来其他的话了)

妈的该*题就*题, 内啡肽启动!

解析

  • 前面呢 就是一个模板而已 这个就是对应前面求水仙花数 前面题有碰见过 模板还不会的建议查看我前面的文章初遇函数~~ 水仙花呢翁恺也有讲
    主要是主函数int main 后面的上难度了
    输入数据有多组 所以用到while循环 不等于EOF没什么问题吧兄弟们
    然而while内的代码特别注意
    注意空格问题! 为什么要定义一个x=0?
    本质上是我们在寻找第一个数字 为什么要把第一个数字拉开?
    因为输出的时候我们需要一个空格隔开.
    输入 300 380
    输出 370 371
    因为370 和371 之间需要一个空格 所以我们每次需要输出(printf” %d”) ;没什么问题
    但是第一个我们输出的时候前面也会有一个空格 所以第一个必须给他隔开! 所以就知道为何要把第一个单独拉开 剩余的就好理解了吧 注释也有 这里附上翁恺和我的文章
96答案+解析
#include<stdio.h>
int narcissus(int n) 
{ 
        int b,c,d;//定义数字,个位b,十位c,和百位d
        b=n%10;
        c=(n/10)%10;
        d=(n/100)%10;
        if(n==c*c*c+b*b*b+d*d*d) return 1;//判断n是否为水仙花数若是函数返回1
        else  return 0;//否则返回0 
}
int main ()
{
	int m,n,a,x;//定义数字m和n,以及循环变量a和标志器x
	while(scanf("%d %d",&m,&n)!=EOF)//当输入没有截止时
	{
	    x=0;//每次初始化标志器为0
	    for(a=m;a<=n;a++)//从m到n开始查找
	    {
	        if(narcissus(a)&&x==0)//如果标志器初始化状态,并且
		    printf("%d",a),x++;
		    else if(narcissus(a)&&x!=0)//如果函数返回了1,x!=0说明他并不是第一个数字
		    {
		    printf(" %d",a);//说明不是第一数字,在前面加空格后再输出
		    }
        }
	    if(x==0)//如果没找到
	    {
	    printf("no");//输出no
	    }
	    printf("\n");//每次结束查找,换一次行
	}
}

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
善语结善缘,恶语伤人心
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情图片

    暂无评论内容