C语言实现查找指定位数的水仙花数
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;}
程序说明:
-
isArmstrong函数: - 接受两个参数:要检查的数字num和位数n。 - 计算数字num的各位数字的n次方之和。 - 如果计算出的总和等于num,则返回1(表示是水仙花数),否则返回0。 -
printArmstrongNumbers函数: - 接受一个参数:位数n。 - 计算n位数的起始值和结束值。例如,对于三位数,起始值为 100,结束值为 999。 - 循环遍历从起始值到结束值的所有数字。 - 对于每个数字,调用isArmstrong函数检查它是否是水仙花数。 - 如果是,则打印该数字。 -
main函数: - 从用户获取位数n。 - 验证输入是否在有效范围内(3 到 7 之间)。 - 如果输入有效,则调用printArmstrongNumbers函数打印所有n位水仙花数。
示例输出:
如果用户输入 3,程序将输出:
所有的3位水仙花数:153370371407
原文地址: https://www.cveoy.top/t/topic/b9j3 著作权归作者所有。请勿转载和采集!