定义函数判断是否为水仙花数c语言
时间: 2023-12-25 17:27:00 浏览: 102
以下是判断一个数是否为水仙花数的C语言函数:
```c
#include <stdio.h>
#include <math.h>
int isArmstrong(int num) {
int sum = 0, temp = num, digit;
int digits = (int)log10(num) + 1; // 获取数字位数
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, digits);
temp /= 10;
}
return (num == sum);
}
```
该函数接受一个整数作为参数,返回一个布尔值,表示该数是否为水仙花数。水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
函数的实现思路是先计算出数字的位数,然后依次取出每一位上的数字,计算它的n次幂之和,最后判断是否等于原数。
相关问题
输入一个数判断是否为水仙花数 C语言
### 判断水仙花数的C语言实现
以下是基于提供的引用内容以及标准编程实践编写的 C 语言程序,用于判断一个三位数是否为水仙花数。
#### 完整代码示例
```c
#include <stdio.h>
// 函数定义:判断是否为水仙花数
int fun(int n) {
int a, b, c;
a = n % 10; // 获取个位数字
b = n / 10 % 10; // 获取十位数字
c = n / 100; // 获取百位数字
if (a * a * a + b * b * b + c * c * c == n) { // 判断条件
return 1; // 是水仙花数返回1
} else {
return 0; // 不是水仙花数返回0
}
}
int main() {
int num;
printf("请输入一个三位数: ");
scanf("%d", &num);
if (fun(num)) { // 调用函数判断
printf("%d 是水仙花数。\n", num);
} else {
printf("%d 不是水仙花数。\n", num);
}
return 0;
}
```
上述代码实现了通过 `fun` 函数来判断输入的三位数是否为水仙花数的功能[^1]。在主函数中,用户可以通过键盘输入任意三位数并得到相应的判断结果。
---
#### 关键逻辑解析
1. **分解数字**
使用取模运算 `%` 和除法 `/` 将输入的三位数拆分为个位、十位和百位上的数值:
- 个位数字计算方式为 `a = n % 10`。
- 十位数字计算方式为 `b = n / 10 % 10`。
- 百位数字计算方式为 `c = n / 100`。
2. **立方和验证**
验证三个数字的立方和是否等于原数本身,即满足以下条件则该数为水仙花数:
\[
a^3 + b^3 + c^3 = n
\]
3. **函数封装**
将判断逻辑封装到独立的函数 `fun` 中,便于复用和测试。此设计符合模块化编程原则。
4. **循环遍历(可选扩展)**
如果需要找出所有的三位水仙花数,则可以采用如下方法进行枚举[^2]:
```c
#include <stdio.h>
int main() {
int i, j, k, n;
for (i = 100; i < 1000; i++) { // 枚举所有三位数
j = i % 10; // 个位
k = i / 10 % 10; // 十位
n = i / 100; // 百位
if (j * j * j + k * k * k + n * n * n == i) { // 条件判断
printf("%5d\n", i); // 输出符合条件的数
}
}
return 0;
}
```
---
用定义函数求水仙花数字c语言
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是一个求解水仙花数的函数示例:
```c
#include <stdio.h>
#include <math.h>
int isNarcissistic(int n) {
int sum = 0;
int temp = n;
int digit;
while (temp != 0) {
digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
return sum == n;
}
int main() {
int i;
for (i = 100; i <= 999; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
}
}
return 0;
}
```
在这个函数中,`isNarcissistic` 函数判断一个数是否是水仙花数。该函数首先通过一个 while 循环,计算出该数的各位数字的立方和。然后,它将计算出的和与原数进行比较,如果相等,就说明该数是水仙花数,返回 true。否则,返回 false。
在 `main` 函数中,通过一个 for 循环,遍历所有的三位数,调用 `isNarcissistic` 函数判断每个数是否是水仙花数,如果是,就打印出该数。
阅读全文
相关推荐














