水仙花数的 C 语言函数实现305


水仙花数又称自幂数,是指一个 n 位数满足其各位数字的 n 次方之和等于该数本身。例如,153 是一个水仙花数,因为 13 + 53 + 33 = 153。编写一个 C 语言函数来判断一个给定的数字是否是水仙花数。

算法步骤
将给定的数字转换为字符串形式。
计算字符串的长度,即数字的位数 n。
初始化一个累加变量 sum 为 0,用于存储各位数字的 n 次方之和。
遍历字符串,对于每个字符(将字符串中的字符转换为数字):

计算字符的 n 次方。
将 n 次方累加到 sum 中。


比较 sum 和给定数字,如果相等,则返回 true(表示该数字是水仙花数),否则返回 false(表示该数字不是水仙花数)。

C 语言函数实现```c
#include
#include
#include
// 判断一个数字是否是水仙花数
int is_narcissistic(int number) {
// 将给定的数字转换为字符串形式
char str[12];
sprintf(str, "%d", number);
// 计算字符串的长度,即数字的位数
int n = strlen(str);
// 初始化累加变量 sum 为 0
int sum = 0;
// 遍历字符串,对于每个字符
for (int i = 0; i < n; i++) {
// 将字符转换为数字
int digit = str[i] - '0';
// 计算字符的 n 次方
int power = 1;
for (int j = 0; j < n; j++) {
power *= digit;
}
// 将 n 次方累加到 sum 中
sum += power;
}
// 比较 sum 和给定数字
if (sum == number) {
// 如果相等,则返回 true(表示该数字是水仙花数)
return 1;
} else {
// 如果不相等,则返回 false(表示该数字不是水仙花数)
return 0;
}
}
// 主函数
int main() {
// 获取用户输入的数字
int number;
printf("请输入一个数字:");
scanf("%d", &number);
// 判断该数字是否是水仙花数
int result = is_narcissistic(number);
// 打印结果
if (result) {
printf("%d 是一个水仙花数。", number);
} else {
printf("%d 不是一个水仙花数。", number);
}
return 0;
}
```

测试示例输入:153
输出:153 是一个水仙花数。
输入:123
输出:123 不是一个水仙花数。

2025-01-27


上一篇:嵌入式C语言中的构造函数

下一篇:C语言中成绩单排序函数