所谓水仙花数(也称自幂数、自恋数、阿姆斯特朗数),它是一个 3 位数,其每位数字的 3 次幂之和等于它本身。 请编写函数,判断水仙花数。 函数原型 int IsNarc(int x); 说明:参数 x 是任意自然数。若 x 是水仙花数,则函数值为 1 (真),否则为 0 (假)。 裁判程序 #include <stdio.h> ...... int IsNarc(int x); int main() { int x; scanf("%d", &x); if (IsNarc(x)) { puts("Yes"); } else { puts("No"); } return 0; } ...... /* 你提交的代码将被嵌在这里 */ 要求:利用前面作业中编写的 Cube 函数或宏命令求立方。
时间: 2024-01-27 11:03:04 浏览: 131
水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身,例如:$1^3+5^3+3^3=153$。请编写程序求出100到999之间的所有水仙花数。代码
以下是判断水仙花数的 C 语言函数实现:
```c
#include <math.h>
int Cube(int x) // 求 x 的立方
{
return x * x * x;
}
int IsNarc(int x) // 判断水仙花数
{
int sum = 0;
int temp = x;
while (temp > 0)
{
int digit = temp % 10; // 取出个位数字
sum += Cube(digit); // 立方求和
temp /= 10; // 去掉个位数字
}
return sum == x; // 比较和与原数是否相等
}
```
函数中使用一个循环取出 `x` 的每个位上的数字,然后求出该数字的立方,最后累加到变量 `sum` 中。最后比较 `sum` 是否等于原数 `x`,若相等则返回 1,否则返回 0。需要注意的是,求立方的函数 `Cube` 可以直接使用前面作业中编写的函数或宏命令。
阅读全文