编写C语言程序,根据用户输入的正整数n(3≤n≤7),计算并输出所有n位的水仙花数。解释什么是水仙花数,即一个n位数中,每个位上的数字立方和等于该数本身的特性,并展示如何实现这个功能。
时间: 2024-10-25 13:06:41 浏览: 51
输出所有在m和n范围内的水仙花数.cpp
5星 · 资源好评率100%
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
在C语言中,你可以通过循环遍历3到9的每一位,然后分别取每位的立方,加起来并与原数比较,如果相等就找到了一个水仙花数。以下是一个简单的实现示例:
```c
#include <stdio.h>
// 函数来检查是否为水仙花数
int is_armstrong_number(int num) {
int orig_num, sum = 0;
orig_num = num;
// 把数字分解成每一位
while (num > 0) {
int digit = num % 10; // 取个位
sum += digit * digit * digit; // 立方和累加
num /= 10; // 移除个位
}
return sum == orig_num;
}
int main() {
int n, i;
printf("请输入一个3到7位的正整数: ");
scanf("%d", &n);
if (n < 3 || n > 7) {
printf("输入范围错误!只接受3到7位的正整数。\n");
return 0;
}
for (i = 100; i <= 999; i++) { // 对于3位数,从100开始到999
if (is_armstrong_number(i)) {
printf("%d 是一个水仙花数。\n", i);
}
}
return 0;
}
```
阅读全文