用c语言输出n位水仙花数
时间: 2024-05-09 17:16:38 浏览: 14
水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个3位数,它的每个位上的数字的3次幂之和等于它本身,即1^3 + 5^3 + 3^3 = 153。下面是一个用C语言输出n位水仙花数的示例代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, sum, num;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("%d位水仙花数有:\n", n);
for (i = pow(10, n - 1); i < pow(10, n); i++) {
sum = 0;
num = i;
for (j = 1; j <= n; j++) {
sum += pow(num % 10, n);
num /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
运行程序后,输入一个正整数n,程序会输出n位水仙花数。例如,当n为3时,输出结果为:
```
请输入一个正整数n:3
3位水仙花数有:
153 370 371 407
```
相关问题
用C语言输出四位水仙花数
以下是用C语言输出四位水仙花数的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int i, a, b, c, d;
for(i = 1000; i < 10000; i++)
{
a = i / 1000;
b = i / 100 % 10;
c = i / 10 % 10;
d = i % 10;
if(i == pow(a, 4) + pow(b, 4) + pow(c, 4) + pow(d, 4))
{
printf("%d\n", i);
}
}
return 0;
}
用C语言输出所有的水仙花数
好的,下面是使用C语言输出所有的水仙花数的代码示例:
```c
#include <stdio.h>
#include <math.h>
// 计算一个数的位数
int get_num_digits(int num) {
int count = 0;
while (num > 0) {
++count;
num /= 10;
}
return count;
}
// 判断一个数是否为水仙花数
int is_narcissistic_number(int num) {
int sum = 0;
int original_num = num;
int num_digits = get_num_digits(num);
while (num > 0) {
int digit = num % 10;
sum += pow(digit, num_digits);
num /= 10;
}
return original_num == sum;
}
// 输出所有的水仙花数
void print_narcissistic_numbers() {
printf("所有的水仙花数为:\n");
for (int i = 100; i <= 999; ++i) {
if (is_narcissistic_number(i)) {
printf("%d\n", i);
}
}
}
int main() {
print_narcissistic_numbers();
return 0;
}
```
代码中的 `get_num_digits` 函数用于计算一个数的位数,`is_narcissistic_number` 函数用于判断一个数是否为水仙花数, `print_narcissistic_numbers` 函数用于输出所有的水仙花数。在 `main` 函数中,调用 `print_narcissistic_numbers` 函数即可输出所有的水仙花数。