编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数,水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称他为水仙花数)C语言怎么算
时间: 2024-11-09 14:24:49 浏览: 37
在C语言中,你可以编写一个简单的循环结构来找出给定范围内的水仙花数。以下是一个示例程序:
```c
#include <stdio.h>
#include <math.h>
// 检查是否为水仙花数
int is_armstrong(int num) {
int digit_sum = 0;
int original_num = num; // 备份原始数字,用于获取每一位
while (original_num > 0) {
int last_digit = original_num % 10;
digit_sum += pow(last_digit, 3); // 立方和
original_num /= 10;
}
if (digit_sum == num) {
return 1; // 如果立方和等于原数,则是水仙花数
} else {
return 0;
}
}
int main() {
int N;
printf("请输入一个正整数N(100 <= N <= 999): ");
scanf("%d", &N);
for (int i = 100; i <= N; ++i) {
if (is_armstrong(i)) {
printf("%d 是一个水仙花数。\n", i);
}
}
return 0;
}
```
这个程序首先定义了一个函数`is_armstrong`,它检查一个数字是否是水仙花数。然后,在主函数`main`中,通过从100到N的循环,逐个检查每个数是否是水仙花数,并打印出来。
阅读全文