若一个整数的各位数字的立方之和等于这个数,称为水仙花数,请用C语言求1000以内所有的水
时间: 2024-11-27 13:23:26 浏览: 6
在C语言中,你可以通过循环遍历1000以内的所有三位数,并对每一位进行立方运算,然后判断是否等于原数,来找出所有的水仙花数。以下是简单的示例代码:
```c
#include <stdio.h>
int cube_of_digit(int n) {
int sum = 0;
while (n > 0) {
int digit = n % 10;
sum += digit * digit * digit;
n /= 10;
}
return sum;
}
int find_water_lily_numbers(int limit) {
for (int i = 100; i <= limit && i >= 10; i++) { // 遍历100到999
if (cube_of_digit(i) == i) {
printf("%d ", i); // 输出找到的水仙花数
}
}
return 0;
}
int main() {
int result = find_water_lily_numbers(1000);
printf("\nNumber of water lily numbers found: %d\n", result);
return 0;
}
```
当你运行这段程序,它会输出1000以内的所有水仙花数。
相关问题
编写c语言程序一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,请输出全部水仙花数,
在C语言中,编写一个程序来找出所有的水仙花数(即其各位数字的立方和等于原数本身的正整数),你可以采用遍历的方式从最小的三位数到最大的三位数,对每个数字进行检查。以下是简单的代码示例:
```c
#include <stdio.h>
// 计算一个三位数每位数字的立方和
int sum_of_cubes(int num) {
int digits[4]; // 存储每一位数字,包括千位
int sum = 0;
// 分割并计算立方和
while (num != 0) {
digits[3] = num % 10;
num /= 10;
for (int i = 0; i < 3; i++) {
sum += digits[i] * digits[i] * digits[i];
}
}
return sum;
}
// 主函数遍历并输出所有水仙花数
void find_hyacinth_numbers() {
for (int i = 100; i <= 999; i++) {
if (sum_of_cubes(i) == i) {
printf("%d is a Hyacinth number.\n", i);
}
}
}
int main() {
find_hyacinth_numbers();
return 0;
}
```
当你运行这个程序,它会打印出所有满足条件的水仙花数。
水仙花数是各位数字立方之和等于数字本身的三位整数,如153是水仙花数,因为153=13+53+33,利用C语言编写程序求出所有的水仙花数并输出。
好的,以下是利用 C 语言编写的求解水仙花数的程序:
```c
#include <stdio.h>
int main()
{
int i, j, k, n;
for (n = 100; n <= 999; n++)
{
i = n / 100;
j = (n % 100) / 10;
k = n % 10;
if (i * i * i + j * j * j + k * k * k == n)
printf("%d\n", n);
}
return 0;
}
```
程序中使用了一个 for 循环,枚举了从 100 到 999 的所有三位数。对于每个三位数,我们将其分解为百位、十位和个位,然后判断是否满足水仙花数的定义。如果满足,就将其输出。
希望这个程序可以帮到你!
阅读全文