C语言输出0-1000以内的水仙花数 水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3 提示:for循环,求余(%)、取整(/)运算符
时间: 2023-10-21 11:29:04 浏览: 46
好的,以下是C语言代码示例:
```c
#include <stdio.h>
int main() {
int num, i, j, k;
for (num = 0; num <= 1000; num++) {
i = num / 100; // 取百位数
j = num / 10 % 10; // 取十位数
k = num % 10; // 取个位数
if (num == i * i * i + j * j * j + k * k * k) { // 判断是否为水仙花数
printf("%d\n", num);
}
}
return 0;
}
```
这段代码会从0开始循环到1000,对于每一个数,分别取其百位、十位和个位,计算它们的立方和并判断是否等于该数本身。如果等于,则输出该数。最后达到输出0-1000以内的水仙花数的目的。
相关问题
c语言求水仙花数的算法病输出153=1*1*1+5*5*5+3*3*3
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 是水仙花数\n", num);
} else {
printf("%d 不是水仙花数\n", num);
}
return 0;
}
```
运行该程序,输入一个整数,程序会判断该整数是否为水仙花数,并输出结果。
以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身,用两种算法
实现。
算法一:
```
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<=9; i++)
{
for(j=0; j<=9; j++)
{
for(k=0; k<=9; k++)
{
if(i*i*i + j*j*j + k*k*k == i*100 + j*10 + k)
{
printf("%d ", i*100 + j*10 + k);
}
}
}
}
return 0;
}
```
算法二:
```
#include <stdio.h>
#include <math.h>
int main()
{
int i;
for(i=100; i<=999; i++)
{
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if(pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
{
printf("%d ", i);
}
}
return 0;
}
```
两种算法的思路都是一样的,都是枚举三位数,然后将每个数的个位、十位、百位分离出来,计算其立方和,判断是否等于原数。第一种算法使用了三重循环,第二种算法使用了数学库中的 pow 函数来计算立方,但是可能会影响程序的效率。