使用pow函数判断水仙花数c语言
时间: 2024-05-13 17:17:36 浏览: 10
判断一个数是否为水仙花数可以使用以下代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, sum = 0, temp, digits = 0;
printf("Enter a number: ");
scanf("%d", &num);
temp = num;
while (temp != 0) {
digits++;
temp /= 10;
}
temp = num;
while (temp != 0) {
sum += pow(temp % 10, digits);
temp /= 10;
}
if (num == sum) {
printf("%d is a Narcissistic number.", num);
} else {
printf("%d is not a Narcissistic number.", num);
}
return 0;
}
```
该程序首先读取一个整数,然后使用两个 while 循环计算该数的位数和每个数字的 N 次方之和,其中 N 是该数的位数。最后,它将该和与原始数进行比较以确定它是否是水仙花数。
相关问题
判断水仙花数c语言程序使用pow函数
判断水仙花数的C语言程序可以使用pow函数,但是它并不是必须的。以下是一个不使用pow函数的示例程序:
```c
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("请输入一个正整数: ");
scanf("%d", &num);
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
if (result == num)
printf("%d 是一个水仙花数", num);
else
printf("%d 不是一个水仙花数", num);
return 0;
}
```
这个程序使用了while循环和取余运算符来计算每个数字的立方和,而不使用pow函数。
调用函数fun判断水仙花数C语言
以下是一个示例程序,使用函数fun判断一个数是否为水仙花数。
```c
#include <stdio.h>
#include <math.h>
int fun(int num) {
int digit, sum = 0, temp = num;
int n = (int)log10(num) + 1; // 求出num的位数
while (temp > 0) {
digit = temp % 10; // 取出个位数字
sum += pow(digit, n); // 每位数字的n次方之和
temp /= 10; // 去掉个位数字
}
if (sum == num) {
return 1; // 是水仙花数
} else {
return 0; // 不是水仙花数
}
}
int main() {
int num;
printf("请输入一个三位数:");
scanf("%d", &num);
if (fun(num)) {
printf("%d 是水仙花数。\n", num);
} else {
printf("%d 不是水仙花数。\n", num);
}
return 0;
}
```
程序中的函数`fun`接受一个整数作为参数,判断该数是否为水仙花数。如果是,返回1;否则返回0。在主函数中,从用户输入中读取一个三位数,调用`fun`函数判断它是否为水仙花数,并输出结果。