c语言如何判断一个数是不是水仙花数
时间: 2024-10-23 15:09:33 浏览: 32
在C语言中,判断一个数是否是水仙花数可以通过下面的步骤完成:
1. 定义一个函数,比如`isArmstrong(int num)`,接受一个整数作为输入。
2. 计算数字的位数,这可以通过对数取整得到。例如,如果`num`有三位数,则位数等于`log10(num) + 1`向下取整后的值。
3. 初始化三个变量分别存储每一位数字,例如`temp = num`,然后依次除以10并取余数,将结果赋给第一个变量`digit1`,接着将`temp`除以100再取余数赋给第二个变量`digit2`,最后将`temp`除以1000取余数赋给第三个变量`digit3`。
4. 遍历每一位数字,计算它们的立方,然后检查这个立方是否等于原来的数字。例如,如果`digit1`、`digit2`和`digit3`的立方之和等于`num`,则`num`是一个水仙花数。
5. 检查完成后,返回一个布尔值表示是否是水仙花数。如果是,返回`true`;如果不是,返回`false`。
以下是简单的C语言代码示例:
```c
#include <stdio.h>
#include <math.h>
int isArmstrong(int num) {
int digit1, digit2, digit3, sum = 0;
int original_num = num;
if (original_num == 0 || original_num < 10) {
return 0; // 对于0和一位数,不是水仙花数
}
while (num > 0) {
digit1 = num % 10;
sum += pow(digit1, 3);
num /= 10;
}
return sum == original_num;
}
int main() {
int input;
printf("请输入一个三位数: ");
scanf("%d", &input);
if (isArmstrong(input)) {
printf("%d 是水仙花数。\n", input);
} else {
printf("%d 不是水仙花数。\n", input);
}
return 0;
}
```
阅读全文