要求写一个“输入一个非负整数n,然后输出n内所有的自守数”的代码。注意输入格式是输入一个非负整数n,输出格式是在一行内输出n内包含的所有自守数
时间: 2024-11-18 10:27:43 浏览: 14
自守数( narcissistic number )也称为阿姆斯壮数(Armstrong number),是指一个 n 位正整数,其各位数字的 n 次幂之和等于原数本身。例如,153 是一个自守数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
下面是一个简单的 C 语言程序,用于输入一个非负整数 `n` 并找出范围内的所有自守数:
```c
#include <stdio.h>
int is_narcissistic(int num, int digits) {
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += digit * digit * digit; // 计算每位数的立方
num /= 10;
}
return sum == digits;
}
void find_narcissists(int limit) {
for (int i = 1; i <= limit; ++i) {
if (is_narcissistic(i, i)) { // 自守数的位数等于本身的条件
printf("%d ", i);
}
}
printf("\n");
}
int main() {
int n;
printf("Enter a non-negative integer n: ");
scanf("%d", &n);
printf("The narcissistic numbers within the range are: ");
find_narcissists(n); // 输出n范围内的自守数
return 0;
}
```
在这个程序中,`is_narcissistic` 函数检查一个数是否为自守数,`find_narcissists` 函数则遍历从 1 到给定限制的数并打印自守数。用户被提示输入一个非负整数 `n`,程序将查找这个范围内(包括 `n`)的自守数。
阅读全文