所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
方法一
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i, j, k, num;
// 循环遍历所有的3位数
for (i = 1; i <= 9; i++)
{
for (j = 0; j <= 9; j++)
{
for (k = 0; k <= 9; k++)
{
num = i * 100 + j * 10 + k;
// 判断是否为水仙花数并打印
if (num == i*i*i + j*j*j + k*k*k)
{
printf("%d\n", num);
}
}
}
}
return 0;
}
这个程序通过三个嵌套的循环遍历所有的3位数,并检查它们是否满足水仙花数的条件。如果一个数满足条件,它就会被打印出来。
方法二
#include <stdio.h>
int main() {
int num, digit, sum;
printf("水仙花数:\n");
for (num = 100; num <= 999; num++)
{
sum = 0;
int temp = num;
while (temp != 0)
{
digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
if (sum == num)
{
printf("%d ", num);
}
}
printf("\n");
return 0;
}
方法三
#include <stdio.h>
int main() {
int i, j, k, n;
printf("水仙花数:\n");
for (n = 100; n <= 999; n++)
{
i = n / 100; // 百位数
j = n / 10 % 10; // 十位数
k = n % 10; // 个位数
if (n == i * i * i + j * j * j + k * k * k)
{
printf("%d ", n);
}
}
return 0;
}
方法四
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c, n;
n = 100;
printf("水仙花数:\n");
while (n < 1000)
{
a = n % 10; // 取个位数
b = n / 10 % 10; // 取十位数
c = n / 100; // 取百位数
if (n == pow(a, 3) + pow(b, 3) + pow(c, 3)) // 判断是否为水仙花数
{
printf("%d ", n); // 输出水仙花数
}
n++;
}
return 0;
}
方法五(函数)
#include <stdio.h>
int isWaterfallNumber(int num)
{
int digit1 = num / 100; // 获取百位数字
int digit2 = (num % 100) / 10; // 获取十位数字
int digit3 = num % 10; // 获取个位数字
// 判断各位数字的立方和是否等于该数本身
if(digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3 == num)
{
return 1; // 是水仙花数
} else {
return 0; // 不是水仙花数
}
}
void printWaterfallNumbers()
{
int num;
printf("水仙花数:");
for(num = 100; num <= 999; num++)
{
if(isWaterfallNumber(num))
{
printf("%d ", num);
}
}
}
int main()
{
printWaterfallNumbers();
return 0;
}