判断水仙花数的函数编写c语言
时间: 2024-05-13 16:14:08 浏览: 169
以下判断水仙花数的函数的C语言代码:
```c
#include <stdio.h>
#include <math.h>
int isArmstrong(int num) {
int sum = 0, temp = num, digitCount = 0;
while (temp > 0) {
temp /= 10;
digitCount++;
}
temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, digitCount);
temp /= 10;
}
return sum == num;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (isArmstrong(num)) {
printf("%d是水仙花数\n", num);
} else {
printf("%d不是水仙花数\n", num);
}
return 0;
}
```
该函数首先通过两个while循环分别计算num的位数和每一位的数字,然后根据水仙花数的定义计算各位数字的n次方之和,最后将之和与原数比较判断是否为水仙花数。在主函数中,我们通过输入一个数字来调用该函数并输出结果。
相关问题
水仙花数函数专题C语言
水仙花数函数(又称 Narcissistic Number 或 Pluperfect Digital Invariant)是指一个三位数(在十进制下),其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
在C语言中编写一个检查水仙花数的函数,可以按照以下步骤:
```c
#include <stdio.h>
// 函数声明
int is_narcissistic(int num);
int main() {
int input;
printf("请输入一个三位数:");
scanf("%d", &input);
if (is_narcissistic(input)) {
printf("%d 是一个水仙花数。\n", input);
} else {
printf("%d 不是水仙花数。\n", input);
}
return 0;
}
// 实现水仙花数检查函数
int is_narcissistic(int num) {
int sum = 0;
int temp = num; // 保存原始数字以便取出每一位
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit; // 计算每个位的立方
temp /= 10;
}
return sum == num; // 如果计算结果等于原始数字,则返回true
}
编写一个判断水仙花的函数,所谓水仙花数是指一个三位数的立方和等于该数的本身,例如153是一个水仙花数,因为。通过主函数调用该函数求100~999之间的全部水仙花数。用c语言
在C语言中,你可以编写一个函数`is narcissistic_number()`来检查一个数字是否是水仙花数。首先,我们需要创建一个辅助函数`cube_sum(n)`来计算一个整数n的各个位立方之和。然后,我们定义主函数`main()`遍历100到999范围内的每个数,并调用`is narcissistic_number()`函数进行检验。
```c
#include <stdio.h>
// 辅助函数,计算输入数字各位立方之和
int cube_sum(int n) {
int sum = 0;
while (n != 0) {
int digit = n % 10; // 取最后一位
sum += digit * digit * digit; // 立方并累加
n /= 10; // 移除最后一位
}
return sum;
}
// 判断一个数字是否是水仙花数
int is_narcissistic_number(int num) {
if (num < 100 || num > 999) {
return 0; // 超出范围,非水仙花数
} else {
return cube_sum(num) == num; // 检查立方和是否等于原数
}
}
// 主函数,寻找并打印水仙花数
int main() {
for (int i = 100; i <= 999; ++i) {
if (is_narcissistic_number(i)) {
printf("%d 是水仙花数\n", i);
}
}
return 0;
}
```
阅读全文