作者:解学武

C语言水仙花数详解(附带源码和解析)

水仙花数,指的是一种独特的三位数,其各位数字的立方和恰好等于自身。

举个例子,153 就是水仙花数,因为 1 的立方为 1,5 的立方是 125,3 的立方是 27,1 + 125 + 27 正好等于 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