水仙花数是一个有趣的数学问题,也称为阿姆斯特朗数。一个水仙花数是一个n位数,它的每个位上的数字的n次方之和等于它本身。例如,一个三位的水仙花数是数字153,因为 1^3 + 5^3 + 3^3 = 153。用C语言实现判断是否为水仙花数的程序相对简单。下面是一个可能的实现方式:
c
include
include
int isNarcissisticNumber(int num) {
int originalNum = num; // 保存原始数字以便后续比较
int remainder, sum = 0; // 用于存储余数及累加和的变量
int n = 0; // 存储数字的位数
while (num != 0) { // 计算数字的位数
n++;
num /= 10;
}
num = originalNum; // 恢复原始数字以便计算每位数的立方和
while (num != 0) { // 计算每位数的立方并累加
remainder = num % 10; // 获取最后一位数字
sum += pow(remainder, n); // 计算该位数字的立方并累加
num /= 10; // 移去最后一位数字
}
return sum == originalNum; // 如果累加和等于原始数字,则为水仙花数,返回true;否则返回false
}
int main() {
int num; // 待检测的数字
printf(“请输入一个整数:”); // 提示用户输入一个整数进行验证
scanf(“%d”, &num); // 获取用户输入的整数
if (isNarcissisticNumber(num)) { // 判断是否为水仙花数并输出结果
printf(“%d 是一个水仙花数。”, num);
} else {
printf(“%d 不是一个水仙花数。”, num);
}
return 0; // 程序结束,返回0表示正常退出
}
这个程序首先定义了一个函数 `isNarcissisticNumber` 来判断一个数字是否为水仙花数。这个函数首先计算出输入数字的位数,然后计算出该数字每一位的立方和。如果立方和等于原始数字,那么这个数字就是一个水仙花数。在 `main` 函数中,程序获取用户的输入并调用 `isNarcissisticNumber` 函数进行判断,然后输出相应的结果。