写一个输出所有水仙花数的C语言程序
时间: 2023-06-04 22:09:00 浏览: 49
好的,以下是输出所有水仙花数的C语言程序:
```c
#include <stdio.h>
int main() {
int i, n, sum;
for (i = 100; i <= 999; i++) {
n = i;
sum = 0;
while (n > 0) {
sum += (n % 10) * (n % 10) * (n % 10);
n = n / 10;
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```
注意:水仙花数指的是一个三位数,它的各个位数的立方和等于它本身,例如153、370、371、407等。
相关问题
用c语言写一个输出所有水仙花数
好的,让我来回答你的问题。下面是用 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;
}
```
如果你希望输出一定范围内的所有水仙花数,可以在程序中加上循环和条件语句,例如:
```
#include <stdio.h>
int main()
{
int num, originalNum, remainder, result = 0, i;
printf("输入要输出的范围:");
scanf("%d", &num);
printf("在 1 到 %d 之间的所有水仙花数为:\n", num);
for (i = 1; i <= num; i++)
{
originalNum = i;
result = 0;
while (originalNum != 0)
{
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
if (result == i)
printf("%d ", i);
}
return 0;
}
```
这样就可以输出指定范围内的所有水仙花数了。希望我的回答能够帮到你!
输出所有的水仙花数c语言程序
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如153=1³+5³+3³,153就是一个水仙花数。现在我们来编写一个输出所有水仙花数的C语言程序。
首先,我们需要循环遍历所有n位数,从100开始到999结束。对于每个数,我们需要计算它每个位上的数字的n次幂之和,并判断是否等于本身。
具体实现代码如下:
```
#include <stdio.h>
#include <math.h>
int main()
{
int n = 3; // 水仙花数的位数
int i, num, sum;
for (num = 100; num <= 999; num++)
{
sum = 0;
for (i = 0; i < n; i++)
{
int digit = num / (int)pow(10, i) % 10;
sum += pow(digit, n);
}
if (sum == num)
{
printf("%d\n", num);
}
}
return 0;
}
```
在循环中,我们首先将当前数的个位、十位、百位上的数字分别计算出来,并逐个求出它们的n次幂。接着将这些n次幂之和赋值给sum,最后判断sum是否等于num,是则输出num。
运行这个程序可以看到,它将所有3位水仙花数(即153、370、371、407)输出了出来。如果想输出更多位数的水仙花数,只需将n的值更改为相应的位数即可。