水仙花数,c语言程序设计

水仙花数(Narcissistic number)是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。例如,三位水仙花数是指一个三位数,其各个位数的立方和等于该数本身。

C 语言程序设计实现水仙花数的查找:

  1. 定义水仙花数:对于一个 n 位数 ABCABC\ldots,其各个位数的立方和等于 A3+B3+C3+A^3 + B^3 + C^3 + \ldots

  2. 实现步骤

    • 使用循环遍历可能的 n 位数范围。
    • 对每个数,计算其各个位数的立方和。
    • 如果立方和等于该数本身,则输出该数,即为水仙花数。
  3. 具体代码实现

c
#include <stdio.h> #include <math.h> int main() { int num, originalNum, remainder, n = 0, result = 0; printf("请输入一个整数:"); scanf("%d", &num); originalNum = num; // 计算位数 while (originalNum != 0) { originalNum /= 10; ++n; } originalNum = num; // 计算每位数的立方和 while (originalNum != 0) { remainder = originalNum % 10; result += pow(remainder, n); originalNum /= 10; } // 判断是否为水仙花数 if (result == num) printf("%d 是水仙花数\n", num); else printf("%d 不是水仙花数\n", num); return 0; }

解释:

  • 变量说明

    • num:输入的整数。
    • originalNum:用于保存输入的整数的副本,用于计算位数和立方和。
    • remainder:用于存储每个位数的数字。
    • n:用于存储数字的位数。
    • result:存储每个位数的立方和。
  • 程序流程

    • 用户输入一个整数。
    • 计算该整数的位数。
    • 计算该整数每个位数的立方和。
    • 如果立方和等于该整数本身,则输出它是水仙花数;否则输出它不是水仙花数。

这样的程序可以有效地找出给定范围内的水仙花数,展示了 C 语言中的基本控制流程和数学运算的应用。