C语言输出水仙花数。输入一个正整数n,输出所有的n位水仙花数
时间: 2023-05-12 17:04:11 浏览: 139
以下是C语言代码,可以输出n位水仙花数:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, k, sum;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = pow(10, n-1); i < pow(10, n); i++) {
sum = 0;
j = i;
while (j > 0) {
k = j % 10;
sum += pow(k, n);
j /= 10;
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
这个程序会输出所有n位水仙花数,例如输入3,输出的结果为:
```
153
370
371
407
```
相关问题
输出水仙花数,输入一个正整数n,输出所有的n位水仙花数 c语言
输出n位水仙花数是指一个n位数,其各位数字立方之和等于它本身。例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153。
在C语言中,你可以使用循环结构遍历指定范围内的所有n位数,并计算它们的立方和来判断是否是水仙花数。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否是水仙花数的函数
bool is_armstrong_number(int num, int n) {
int sum = 0, temp = num;
// 取反向每一位并求和
while (temp > 0) {
int digit = temp % 10;
sum += digit * digit * digit; // 立方和
temp /= 10;
}
// 如果原数等于立方和,则是水仙花数
return num == sum;
}
// 主函数
int main() {
int n;
printf("请输入位数(n): ");
scanf("%d", &n);
for (int i = 100; ; i++) { // 从100开始,防止误判单位数和两位数
if (i >= pow(10, n)) break; // 达到n位就停止
if (is_armstrong_number(i, n)) {
printf("%d ", i); // 输出水仙花数
}
}
return 0;
}
```
用c语言实现判断从键盘输入的N位数是不是水仙花数 输入格式: 输入一个不超过7位的正整数 输出格式: 按N是水仙花数或N不是水仙花数输出。
可以使用以下代码来实现判断一个N位数是否为水仙花数:
```c
#include <stdio.h>
#include <math.h>
int isArmstrongNumber(int number) {
int temp, remainder, n = 0;
double result = 0.0;
temp = number;
// 计算位数
while (temp != 0) {
temp /= 10;
++n;
}
temp = number;
// 计算各位数字的 n 次幂和
while (temp != 0) {
remainder = temp % 10;
result += pow(remainder, n);
temp /= 10;
}
// 判断是否为水仙花数
if ((int)result == number)
return 1;
else
return 0;
}
int main() {
int number;
printf("请输入一个不超过7位的正整数:");
scanf("%d", &number);
if (isArmstrongNumber(number))
printf("%d是水仙花数\n", number);
else
printf("%d不是水仙花数\n", number);
return 0;
}
```
这段代码中,我们首先定义了一个函数 `isArmstrongNumber` 来判断一个数字是否为水仙花数。在主函数中,我们通过键盘输入一个正整数,然后调用 `isArmstrongNumber` 函数来进行判断,并输出结果。
注意,这段代码假设输入的数字是正整数且不超过7位。如果需要验证输入的合法性,还需要添加相应的输入校验逻辑。
阅读全文