10个水仙花数c语言程序两种方法
时间: 2023-09-06 08:00:36 浏览: 74
第一种方法是使用循环,逐个判断每个数是否为水仙花数。水仙花数是指一个三位数,它的个位、十位和百位的立方和等于它本身。首先,我们通过一个循环遍历从100到999的所有三位数。在循环内部,我们将当前的数分别取个位、十位和百位,并计算其立方和。最后,我们将计算得到的立方和与原数进行比较,如果相等,则输出该数为水仙花数。
第二种方法是使用递归,通过逐渐减小问题规模来找到水仙花数。我们定义一个递归函数,该函数可以接收一个三位数作为参数。在函数内部,我们首先将参数分解为个位、十位和百位,并计算其立方和。然后,我们将立方和与原数进行比较,如果相等,则输出该数为水仙花数。接下来,我们再次调用该递归函数,将参数减1,并继续进行判断,直到达到递归终止条件。
这两种方法都可以用C语言来实现。无论是循环还是递归,都需要使用一些基本的语法,如循环语句、条件语句和函数等。这些方法都可以有效地找到所有的水仙花数,并输出结果。
相关问题
水仙花数c语言程序
下面是一个求水仙花数的 C 语言程序:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, originalNum, remainder, n = 0;
float result = 0.0;
printf("请输入一个三位数:");
scanf("%d", &num);
originalNum = num;
// 计算位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 计算每一位的立方和
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
// 判断是否为水仙花数
if ((int)result == num) {
printf("%d 是水仙花数", num);
}
else {
printf("%d 不是水仙花数", num);
}
return 0;
}
```
该程序会要求用户输入一个三位数,然后计算这个数是否为水仙花数。如果是,程序会输出该数是水仙花数。如果不是,程序会输出该数不是水仙花数。
判读水仙花数c语言程序
以下是一个判断水仙花数的C语言程序:
```c
#include <stdio.h>
#include <math.h>
int isArmstrong(int num) {
int temp = num;
int digits = 0;
int sum = 0;
// 计算数字位数
while (temp != 0) {
digits++;
temp /= 10;
}
temp = num;
// 计算每位数的立方和
while (temp != 0) {
int remainder = temp % 10;
sum += pow(remainder, digits);
temp /= 10;
}
// 判断是否为水仙花数
if (sum == num) {
return 1;
} else {
return 0;
}
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (isArmstrong(number)) {
printf("%d 是水仙花数\n", number);
} else {
printf("%d 不是水仙花数\n", number);
}
return 0;
}
```
这个程序会提示用户输入一个整数,然后判断该数是否为水仙花数。相关问题如下:
相关问题:
1. 如何判断一个数是否为质数?
2. 如何计算一个数的阶乘?
3. 如何判断一个字符串是否为回文串?