C语言实现查找指定位数的水仙花数

水仙花数(也称为阿姆斯特朗数)是指一个n位数,其各位数字的n次方之和等于该数本身。例如,153是一个三位水仙花数,因为 1^3 + 5^3 + 3^3 = 153。

以下是使用C语言查找指定位数的水仙花数的程序:c#include <stdio.h>#include <math.h>

int isArmstrong(int num, int n) { int sum = 0; int temp = num; while (temp > 0) { int digit = temp % 10; sum += pow(digit, n); temp /= 10; } if (sum == num) return 1; else return 0;}

void printArmstrongNumbers(int n) { int start = pow(10, n - 1); int end = pow(10, n) - 1; int i; printf('所有的%d位水仙花数: ', n); for (i = start; i <= end; i++) { if (isArmstrong(i, n)) { printf('%d ', i); } }}

int main() { int n; printf('请输入正整数n(3 ≤ n ≤ 7):'); scanf('%d', &n); if (n < 3 || n > 7) { printf('输入无效!请重新运行程序并输入有效的n值。 '); return 1; } printArmstrongNumbers(n); return 0;}

程序说明:

  1. isArmstrong 函数: - 接受两个参数:要检查的数字 num 和位数 n。 - 计算数字 num 的各位数字的 n 次方之和。 - 如果计算出的总和等于 num,则返回 1(表示是水仙花数),否则返回 0

  2. printArmstrongNumbers 函数: - 接受一个参数:位数 n。 - 计算 n 位数的起始值和结束值。例如,对于三位数,起始值为 100,结束值为 999。 - 循环遍历从起始值到结束值的所有数字。 - 对于每个数字,调用 isArmstrong 函数检查它是否是水仙花数。 - 如果是,则打印该数字。

  3. main 函数: - 从用户获取位数 n。 - 验证输入是否在有效范围内(3 到 7 之间)。 - 如果输入有效,则调用 printArmstrongNumbers 函数打印所有 n 位水仙花数。

示例输出:

如果用户输入 3,程序将输出:

所有的3位水仙花数:153370371407

C语言实现查找指定位数的水仙花数

原文地址: https://www.cveoy.top/t/topic/b9j3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录