C语言实现水仙花数程序

需积分: 0 1 下载量 57 浏览量 更新于2024-08-03 收藏 1KB TXT 举报
"该资源提供了一个使用C语言编写的程序,用于查找并打印所有三位的水仙花数。水仙花数是指一个n位数,其每个位上的数字的n次方和等于该数本身。程序通过定义一个名为is_narcissistic的函数来检查一个数是否满足水仙花数的条件,并在main函数中遍历100到999之间的所有数,调用该函数进行验证。" 在这个程序中,我们首先引入了几个标准库,包括`stdio.h`用于输入输出,`stdlib.h`通常用于类型定义和内存管理,而`math.h`则提供了数学函数,如`pow()`,用于计算数字的幂。程序的核心在于`is_narcissistic`函数,它接受一个整数`num`作为参数,判断该数是否为水仙花数。 1. `is_narcissistic`函数: - 初始化`n`为0,用于计算`num`的位数。 - 初始化`sum`为0,用于存储`num`的位上数字的n次幂和。 - 使用一个`temp`变量保存`num`的原始值,防止在计算过程中改变`num`。 - 通过循环,每次将`temp`除以10,直到`temp`变为0,计算出`num`的位数`n`。 - 再次将`temp`设为`num`,以便后续计算。 - 进行第二个循环,使用模运算`%10`获取`temp`的个位数`digit`,然后使用`pow()`计算`digit`的n次方,并累加到`sum`。 - 最后,比较`sum`和`num`,如果相等,则返回1表示`num`是水仙花数,否则返回0。 2. `main`函数: - 使用`printf`打印字符串"水仙花数有:",作为输出的前缀。 - 使用一个for循环遍历100到999的所有数,这是所有可能的三位数范围。 - 对于每个数`i`,调用`is_narcissistic`函数进行判断。 - 如果`is_narcissistic(i)`返回1,说明`i`是水仙花数,使用`printf`打印出这个数。 - 循环结束后,`main`函数返回0,表示程序正常结束。 这个程序展示了C语言的基础结构、循环、条件判断、数学操作以及函数的使用,是学习C语言基础编程的一个好例子。同时,它也涉及到数字理论中的特定概念——水仙花数,对于理解位运算和数学逻辑也有一定的帮助。