例 个三位整数,如果满足条件:个位数的立方+十位数立方+百位数立方==这个数,那么称之为"水仙花数"编程判断一个三位整数是不是水仙花数。 输入格式: 输入一个三位整数 输出格式: 是则输出YES,不是输出NO (注意是大写字母),如果输入不是三位数,不处理。
时间: 2024-10-18 21:06:13 浏览: 20
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身
5星 · 资源好评率100%
要编写一个程序来检查一个三位整数是否为水仙花数,你可以按照以下步骤进行:
1. 首先,你需要从用户那里获取输入的三位数。为此,你可以使用`scanf`函数并设置格式说明符为 `%d`,但请注意只接受三位数。
```c
int num;
scanf("%d", &num);
```
2. 接着,你需要提取百位、十位和个位数。这可以通过对输入数进行除法和取模运算完成。例如,`num % 100` 将得到个位数,`(num / 10) % 10` 将得到十位数,而 `num / 100` 是百位数。
```c
int lastDigit = num % 10; // 个位数
int tenthDigit = (num / 10) % 10; // 十位数
int hundredthDigit = num / 100; // 百位数
```
3. 计算每个数字的立方并加起来。
```c
int cubeSum = pow(lastDigit, 3) + pow(tenthDigit, 3) + pow(hundredthDigit, 3);
```
4. 最后,比较计算结果和原始数字是否相等。如果相等,就是水仙花数,否则不是。
```c
if (cubeSum == num) {
printf("YES\n");
} else {
printf("NO\n");
}
```
完整代码示例:
```c
#include <stdio.h> // 引入数学库,用于pow函数
int main() {
int num;
scanf("%d", &num);
if (num >= 100 && num <= 999) { // 检查是否为三位数
int lastDigit = num % 10;
int tenthDigit = (num / 10) % 10;
int hundredthDigit = num / 100;
int cubeSum = pow(lastDigit, 3) + pow(tenthDigit, 3) + pow(hundredthDigit, 3);
if (cubeSum == num) {
printf("YES\n");
} else {
printf("NO\n");
}
} else {
printf("Invalid input. Please enter a three-digit number.\n");
}
return 0;
}
```
阅读全文