作者:解学武

水仙花数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语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

添加微信咨询 加站长微信免费领
C语言学习小册
加站长微信免费领C语言学习小册
微信ID:xiexuewu333