百科知识

c语言函数判断水仙花数,用C语言编写函数来检测一个数是否是水仙花数

水仙花数也被称为阿姆斯特朗数,是指一个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 函数中,从用户输入获取待检测的数字,并调用函数判断是否为水仙花数,然后输出相应的提示信息。