第1个回答 2023-09-27
水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153就是一个水仙花数,因为153=1³+5³+3³。
下面是一个使用C语言和while循环来输出所有的3位数水仙花数,并统计水仙花数的个数的程序:
c复制代码
#include <stdio.h>
#include <math.h>
int main() {
int count = 0; // 用于计数水仙花数的个数
int num = 100; // 从100开始检查,因为它是最小的3位数
while (num <= 999) { // 检查所有的3位数
int sum = 0; // 用于存储各位数的立方和
int temp = num; // 存储当前检查的数,以便在循环中修改它
while (temp > 0) { // 计算各位数的立方和
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == num) { // 如果立方和等于原数,那么这是一个水仙花数
printf("%d is an Armstrong number\n", num);
count++;
}
num++; // 检查下一个数
}
printf("Total Armstrong numbers: %d\n", count);
return 0;
}
这个程序使用两个嵌套的while循环。外部的while循环从100开始检查所有的3位数,内部的while循环计算一个数的各位数的立方和。如果立方和等于原数,那么这是一个水仙花数,程序会输出这个数,并将水仙花数的个数加1。在检查了所有的3位数之后,程序会输出水仙花数的个数。