【必懂】C语言水仙花数题解

注意:学生党如果存在付费问题可以加我好友,我可以开单篇短时间的免费哟~ 私聊我就好~

前言

本专栏内容将会以轻松、简单的方式完成习题的解答,用情景再现的文章风格使读者能够在轻松愉悦的阅读氛围中完成知识的吸收,本专栏考虑读者的吸收能力,不讲解过多高效的计算方法,降低阅读门槛,希望各位多多支持~

作者简介

作者名:1_bit

简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

博客地址:https://i1bit.blog.csdn.net


情景再现

🐰小C:Hi~小媛,怎么今天垂头丧气的?

👸小媛:小C,你可要救救我。今天在一个学习群里,他们在讨论一个叫做求水仙花数的内容,我不懂水仙花数,我感觉我被打击了。 😭

🐰小C:哈哈哈,水仙花数呀,水仙花数其实就是指一个三位数,他们的个位、十位、百位的立方和等于这个三位数本身。

👸小媛:他们也是这样解释的,但我还是不懂呀。

🐰小C:那你看一个例子,有一个数 153,个位是 3、十位是 5、百位是 1,然后个位的立方也就是 333 等于 27,十位的立方 555 等于 125,百位的立方 111 等于 1,而这些立方 27、125 以及 1 相加起来是不是等于 153?

👸小媛:是呀,那又怎么样? 😂

🐰小C:这 153 不就是这个三位数本身吗?这个三位数本书也是等于 153 呢。

👸小媛:唔,你意思就是说符合这种规律的数就叫做水仙花数吧?

🐰小C:是的,理解了吗?

👸小媛:懂是懂了,那怎么写呢? 😨

🐰小C:其实这道题不难,有简单的解法;我们知道,一个三位数的范围是大于 99 以及小于 1000,那么我们只需要取模在 99 到 1000 之间数的个位、十位、百位,随后使用这些书进行立方计算,最后进行求和,将最后的结果与原有的数进行对比,这时就可以得知当前的数是否是水仙花数了。

👸小媛:你的意思就是说使用一个循环,然后这个循环从变量直接从 100 开始往 1000 循环,随后对这个循环变量进行取模,取到个位、十位、百位就可以进行计算了?

🐰小C:是的,你先试试这一步你能不能完成。

👸小媛:你在小看我,那么简单,你看下面的代码。 😡

#include<stdio.h>
int main(){
	int ones,tens,hundreds,i;
	for(i=100;i<1000;i++){
		ones=i%10;
		tens=i/10%10;
		hundreds=i/100;
		printf("%d : ones=%d , tens=%d , hundreds=%d \n",i,ones,tens,hundreds);
	}
}

🐰小C:那你来解释一下循环里面你是怎么获取个位、十位、百位的吧。

👸小媛:其实很简单呀,循环是从 100 到 1000的循环,那么循环变量 i 也会逐渐进行增加,那么想要获取个位,那么直接直接这个循环变量取模10就可以得到个位的数了。

🐰小C:具体怎样可以详细说说吗?

👸小媛:那我给你举个例子吧,例如 153%10 也就是 153 取模 10,取模就是除这个 10 后得到一个余数就是结果,那么此时除 10 就会得到数字 3,这个 3 就是得数,那么就得到了个位,代码就可以写成 ones=i%10;;百位的获取也简单,首先给 153 除 10,由于除 10 后是15.3 但是整型并不保留小数位,那么就可以得到 15,此时再对 15 进行取模即可得到 5 这个结果,代码写成 tens=i/10%10;;最后的百位即同理,直接除 100 就得到了 hundreds=i/100;

🐰小C:行,不错。那你去进行检验过了吗?检验可是最直接的验证方式。

👸小媛:当然,下面就是结果。

🐰小C:那么你就还剩一步,判断个位、十位、百位上的数字的立方相加是否等于循环变量 i,也就是他们原本的数,你知道怎么做吗?

👸小媛:当然知道,那么简单的需求,你看下面的完整代码。

#include<stdio.h>
int main(){
	int ones,tens,hundreds,i;
	printf("水仙花数有:\n");
	for(i=100;i<1000;i++){
		ones=i%10;
		tens=i/10%10;
		hundreds=i/100;

		if(i==ones*ones*ones+tens*tens*tens+hundreds*hundreds*hundreds){
			printf("%d 、",i);
		}
	}
}

👸小媛:结果在下面。

🐰小C:解释一下吧。

👸小媛:其实也就是在 for 循环中添加了一个 if 语句,判断当前的循环变量 i 是否等于个位立方、十位立方、百位立方的相加和,如果等于就直接输出就好了,在输出内容的时候我也没有换行,为了并排显示,所以就没加换行 \n

🐰小C:哈哈哈,考虑的挺周到的,那你懂水仙花数了吧?不难吧?

👸小媛:之前只是没想过来,都是小东西。

本专栏已参加 CSDN 蓄力计划,感谢读者支持。

已标记关键词 清除标记
相关推荐
程序员的经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL据库。使用量大同时,掌握MySQL早已是运维、DBA的备技能,甚至部分IT开发岗位也要求对据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL据库学的核心课程(共98课时)   课程1:《MySQL据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值