所谓水仙花数,是指一个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;
}