水仙花数在 C 语言中的高效输出169


水仙花数,又称自幂数或阿姆斯特朗数,是指一个 n 位的数,其各位数字的 n 次方之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。

算法分析

检测一个数是否为水仙花数的过程如下:1. 将给定的数字转换为字符串。
2. 找到字符串的长度(表示数字的位数)。
3. 逐位遍历字符串,将每个字符转换为数字。
4. 为每个数字计算其 n 次方并将结果累加到一个和中。
5. 如果和等于给定的数字,则该数字是水仙花数。

C 语言实现以下 C 语言代码实现了上述算法:
```c
#include
#include
#include
int main() {
char number[100]; // 存储输入的数字
int len; // 数字的位数
int sum; // 各个数字的 n 次方之和
int i; // 循环变量
int digit; // 每个数字的 n 次方
int n; // 指数
printf("请输入一个数字:");
scanf("%s", number);
len = strlen(number);
printf("这个数字的位数是:%d", len);
sum = 0;
for (i = 0; i < len; i++) {
digit = atoi(&number[i]);
n = len;
while (n > 0) {
digit *= digit;
n--;
}
sum += digit;
}
printf("各个数字的 %d 次方之和是:%d", len, sum);
if (sum == atoi(number)) {
printf("%s 是一个水仙花数。", number);
} else {
printf("%s 不是一个水仙花数。", number);
}
return 0;
}
```

使用方法

要使用此代码,请编译并在命令行中运行它。然后,输入一个数字并按 Enter 键。程序将分析给定的数字并确定它是否是一个水仙花数。

示例输出
请输入一个数字:153
这个数字的位数是:3
各个数字的 3 次方之和是:153
153 是一个水仙花数。


请输入一个数字:123
这个数字的位数是:3
各个数字的 3 次方之和是:36
123 不是一个水仙花数。

2024-11-24


上一篇:C 语言中分段函数的实现

下一篇:C语言输出整数的全面指南