水仙花数是指一个 n 位数(n23),它每位上的数字的 n 次幂之和等于它本身。例如,1^3+5^3+3^3=153,153即为水仙花数。 从键盘输入两个正整数 a 和 b ,计算区间[ a , b ]或区间[ b , a ]上水仙花数的个数。(用C语言格式)
时间: 2024-11-03 18:13:49 浏览: 38
水仙花数是一个有趣的数学概念,在C语言中实现查找特定范围内水仙花数的数量需要对数字进行处理,并检查其是否满足条件。以下是一个简单的C程序片段,用于计算指定范围内的水仙花数:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否为水仙花数的函数
bool is_armstrong(int num) {
int len = (int)log10(num) + 1; // 计算位数
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += digit * digit * digit; // 求每一位的立方和
num /= 10;
}
return sum == num;
}
// 计算区间的水仙花数计数
int count_armstrong_numbers(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
if (is_armstrong(i)) {
count++;
}
}
return count;
}
int main() {
int a, b;
printf("请输入起始数值 a: ");
scanf("%d", &a);
printf("请输入结束数值 b: ");
scanf("%d", &b);
// 如果用户输入的 b 小于 a,则交换它们
if (a > b) {
int temp = a;
a = b;
b = temp;
}
int count = count_armstrong_numbers(a, b);
printf("在区间 [%d, %d]内有 %d 个水仙花数.\n", a, b, count);
return 0;
}
```
在这个程序中,`is_armstrong` 函数用于验证一个数字是否是水仙花数,而 `count_armstrong_numbers` 函数则遍历给定范围内的所有整数并计数水仙花数。
阅读全文