作者:解学武
水仙花数C语言实现(源码+解析)
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
比如 153,1 的立方是 1,5 的立方是 125,3 的立方是 27,1 + 125 + 27 = 153,所以 153 就是水仙花数。再比如 370,3 的立方是 27,7 的立方是 343,0 的立方是 0,27 + 343 + 0 = 370,所以 370 也是水仙花数。
寻找水仙花数,通常是遍历所有的三位数,对于每个数,分离出它的个位、十位和百位数字,计算这三个数字的立方和,然后与原数进行比较,如果相等,那么这个数就是水仙花数。
求解水仙花数需要用到 C语言的以下知识点:
寻找水仙花数的 C语言程序如下:
运行结果为:
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
比如 153,1 的立方是 1,5 的立方是 125,3 的立方是 27,1 + 125 + 27 = 153,所以 153 就是水仙花数。再比如 370,3 的立方是 27,7 的立方是 343,0 的立方是 0,27 + 343 + 0 = 370,所以 370 也是水仙花数。
寻找水仙花数,通常是遍历所有的三位数,对于每个数,分离出它的个位、十位和百位数字,计算这三个数字的立方和,然后与原数进行比较,如果相等,那么这个数就是水仙花数。
求解水仙花数需要用到 C语言的以下知识点:
- 循环:通过循环遍历所有的三位数,for 或者 while 都可以。
- 算术运算:借助除法和取余运算来分离出每个数的各位数字。
- 条件判断:判断计算得到的数字立方和是否与原数相等。
寻找水仙花数的 C语言程序如下:
#include <stdio.h> int main() { int num, hundreds, tens, units; printf("水仙花数有:"); for (num = 100; num <= 999; num++) { hundreds = num / 100; // 分离出百位数字,如 567 除以 100 得到 5 tens = (num / 10) % 10; // 先除以 10 得到 56,再对 10 取余得到 6,即十位数字 units = num % 10; // 对 10 取余得到个位数字,如 567 对 10 取余得到 7 if (hundreds * hundreds * hundreds + tens * tens * tens + units * units * units == num) { printf("%d ", num); } } printf("\n"); return 0; }在这段代码中,我们使用一个`for`循环从 100 迭代到 999。对于每一个数`num`,通过除法和取余运算得到它的百位`hundreds`、十位`tens`和个位`units`数字。然后,计算这三个数字的立方和,并与`num`进行比较。如果相等,就使用`printf`函数输出这个水仙花数。
运行结果为:
水仙花数有:153 370 371 407
总结
通过这个水仙花数的 C语言实现,我们清晰地看到了如何通过数学运算和循环来解决特定的数字问题。这不仅加深了我们对 C语言基本运算和控制结构的理解,也锻炼了我们的逻辑思维能力。希望大家能从这样的小例子中不断积累编程经验,提高自己的技能。声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。