水仙花数也被称为阿姆斯特朗数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,数字 153 是一个水仙花数,因为 1 的三次方加上 5 的三次方再加上 3 的三次方等于 153。下面是一个 C 语言函数,用于判断一个给定的数是否为水仙花数。
c
include
include
// 判断是否为水仙花数
int isNarcissisticNumber(int num) {
int n = log10(num) + 1; // 获取数字位数
int tempNum = num; // 保存原始数字以便后续计算
int sum = 0; // 存储每位数字的n次幂之和
int remainder; // 存储取余结果,用于获取数字的每一位
while (tempNum != 0) { // 获取数字的每一位
remainder = tempNum % 10;
sum += pow(remainder, n); // 计算当前位的n次幂并累加
tempNum /= 10; // 移动到下一位数字
}
if (sum == num) { // 如果每位数字的n次幂之和等于原始数字,则为水仙花数
return 1; // 返回真(是水仙花数)
} else {
return 0; // 返回假(不是水仙花数)
}
}
int main() {
int num; // 待检测的数字
printf(“请输入一个整数:”);
scanf(“%d”, &num); // 从用户输入获取待检测的数字
if (isNarcissisticNumber(num)) { // 检测是否为水仙花数
printf(“%d 是一个水仙花数。”, num); // 如果是水仙花数,则输出提示信息
} else {
printf(“%d 不是水仙花数。”, num); // 如果不是水仙花数,则输出提示信息
}
return 0; // 程序结束返回0
}
这个函数首先通过计算数字位数来确定需要计算每个数字的几次幂。然后,通过循环获取数字的每一位,计算其对应次数的幂并累加。如果累加的结果等于原始数字,则该数字为水仙花数。在 main 函数中,从用户输入获取待检测的数字,并调用函数判断是否为水仙花数,然后输出相应的提示信息。