用C语言编写一个函数求水仙花数
时间: 2023-09-10 19:06:57 浏览: 42
当然,我可以帮你编写一个 C 语言函数来求水仙花数。水仙花数是指一个 n 位数( n>=3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 就是一个 3 位的水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
下面是一个求水仙花数的 C 语言函数的示例代码:
```c
#include <math.h>
int is_narcissistic_number(int num) {
int sum = 0, n = 0, temp = num;
while (temp > 0) {
temp /= 10;
n++;
}
temp = num;
while (temp > 0) {
sum += pow(temp % 10, n);
temp /= 10;
}
return sum == num;
}
```
这个函数的参数是一个整数 `num`,它会返回一个整数值,如果 `num` 是一个水仙花数,则返回 1,否则返回 0。
这个函数中用到了 `pow()` 函数来计算幂次方。函数中首先计算出 `num` 的位数,然后逐位计算每个数位的幂次方并求和,最后判断和是否等于 `num`。
希望这个代码能够帮到你!
相关问题
用c语言,编写一个求水仙花数的函数,求100到999之间的全部水仙花数
好的,以下是求水仙花数的C语言函数:
```c
#include <stdio.h>
#include <math.h>
void NarcissisticNumber(){
int i,j,k;
int sum;
printf("100到999之间的水仙花数有:\n");
for(i=1;i<=9;i++){
for(j=0;j<=9;j++){
for(k=0;k<=9;k++){
sum = i*i*i + j*j*j + k*k*k;
if(sum >= 100 && sum <= 999 && sum == i*100+j*10+k){
printf("%d ", sum);
}
}
}
}
}
int main(){
NarcissisticNumber();
return 0;
}
```
在主函数中调用了`NarcissisticNumber()`函数,该函数通过三层循环分别枚举百位、十位和个位上的数字,并计算出它们的立方和`sum`,如果`sum`符合水仙花数的定义,即`sum`等于它们的三次方和,则输出该数即可。
用c语言,编写一个求水仙花数的函数,求100到999之间的全部水仙花数。
好的,以下是代码实现:
```c
#include <stdio.h>
// 求一个数的位数
int getDigits(int num) {
int digits = 0;
while (num != 0) {
digits++;
num /= 10;
}
return digits;
}
// 求一个数的各位数字的立方和
int getCubeSum(int num) {
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += (digit * digit * digit);
num /= 10;
}
return sum;
}
// 判断一个数是否为水仙花数
int isNarcissistic(int num) {
int digits = getDigits(num);
int cubeSum = getCubeSum(num);
return num == cubeSum;
}
// 求100到999之间的全部水仙花数
void printNarcissisticNumbers() {
for (int i = 100; i <= 999; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
}
}
}
int main() {
printNarcissisticNumbers();
return 0;
}
```
解释一下:
1. `getDigits` 函数用于求一个数的位数,采用了除以 10 的方法逐个地取出每一位数字,直到这个数变成 0。
2. `getCubeSum` 函数用于求一个数的各位数字的立方和,同样也是采用了除以 10 的方法逐个地取出每一位数字,并累加起来。
3. `isNarcissistic` 函数用于判断一个数是否为水仙花数,只需要将这个数和它的各位数字的立方和进行比较即可。
4. `printNarcissisticNumbers` 函数则是用于求100到999之间的全部水仙花数,只需要从 100 开始循环到 999,依次判断每个数是否为水仙花数,如果是就打印出来。
最后在 `main` 函数中调用 `printNarcissisticNumbers` 函数即可。
阅读全文