如何在C语言程序(PTA)中生成和验证N位的水仙花数并输出它们?
时间: 2024-12-10 11:37:01 浏览: 28
在C语言中,生成和验证N位的水仙花数可以分为两部分:生成所有N位数并检查它们是否是水仙花数,然后输出符合条件的数。这里有一个基本的示例,展示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数来判断一个数字是否是水仙花数
bool is_narcissistic_number(int num, int n) {
int digits[n];
int total = 0;
// 分割数字并存储各个位
while (num > 0) {
digits[n - 1] = num % 10;
num /= 10;
n--;
}
// 计算各个位的立方和
for (int i = 0; i < n; ++i) {
total += pow(digits[i], 3);
}
// 返回结果
return total == num;
}
// 主函数生成并验证N位水仙花数
void generate_and_validate(int n) {
int start = pow(10, n - 1); // 起始值,如3位数则为100
int end = pow(10, n) - 1; // 结束值,如3位数则为999
printf("N位水仙花数:\n");
for (int num = start; num <= end; ++num) {
if (is_narcissistic_number(num, n)) {
printf("%d ", num);
}
}
}
int main() {
int n; // 用户输入的位数
printf("请输入你要找的位数: ");
scanf("%d", &n);
generate_and_validate(n);
return 0;
}
```
在这个程序中,`is_narcissistic_number`函数负责检查单个数字是否是水仙花数,`generate_and_validate`函数则遍历指定位数的所有数字并打印出满足条件的水仙花数。
阅读全文