c语言中如何求水仙花数
时间: 2024-04-14 13:28:09 浏览: 28
在C语言中,可以通过以下代码来求解水仙花数:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, originalNum, remainder, result = 0, n = 0;
printf("请输入一个整数: ");
scanf("%d", &num);
originalNum = num;
// 计算数字的位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 求解水仙花数
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num)
printf("%d 是水仙花数\n", num);
else
printf("%d 不是水仙花数\n", num);
return 0;
}
```
首先,用户需要输入一个整数。然后,程序会计算该数字的位数。接着,程序会用每一位数字的n次方求和,并将结果与原始数字进行比较。如果结果等于原始数字,则说明该数字是水仙花数,否则不是水仙花数。最后,程序会输出结果。
相关问题
c语言函数求水仙花数
以下是用C语言函数求水仙花数的代码示例:
```c
#include <stdio.h>
// 定义函数判断是否为水仙花数
int isArmstrong(int num) {
int originalNum, remainder, result = 0;
originalNum = num;
// 计算每位数字的立方和
while (originalNum != 0) {
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
// 判断是否为水仙花数
if (result == num) {
return 1; // 是水仙花数
} else {
return 0; // 不是水仙花数
}
}
int main() {
int n;
printf("100-1000 包含的“水仙花”数分别有:\n\n");
for (n = 100; n < 1000; n++) {
if (isArmstrong(n)) {
printf("%-5d", n); // 输出水仙花数
}
}
printf("\n"); // 换行
return 0;
}
```
c语言求水仙花数思维导图
很抱歉,根据提供的引用内容,没有找到关于C语言求水仙花数的思维导图。但是,我可以为您提供一份C语言求水仙花数的代码和思路:
思路:
1. 循环遍历所有三位数
2. 将三位数的每一位数分离出来
3. 计算每一位数的立方和
4. 判断计算结果是否等于原数,如果相等则为水仙花数
代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int i, num, digit, sum;
printf("水仙花数为:");
for (i = 100; i < 1000; i++) {
num = i;
sum = 0;
while (num > 0) {
digit = num % 10;
sum += pow(digit, 3);
num /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```