c语言输出所有的“水仙花数”, 153=13+53+33。 即一个3位数,其各位数字立方和等于该数本身
时间: 2024-05-12 18:18:35 浏览: 98
好的,我可以为您提供一个C语言代码来输出所有的水仙花数:
```
#include <stdio.h>
int main() {
int num, digit1, digit2, digit3;
for (num = 100; num < 1000; num++) {
digit1 = num / 100; // 百位数字
digit2 = num % 100 / 10; // 十位数字
digit3 = num % 10; // 个位数字
if (num == digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3) {
printf("%d = %d^3 + %d^3 + %d^3\n", num, digit1, digit2, digit3);
}
}
return 0;
}
```
这个程序会输出所有的3位水仙花数,结果应该是:
```
153 = 1^3 + 5^3 + 3^3
370 = 3^3 + 7^3 + 0^3
371 = 3^3 + 7^3 + 1^3
407 = 4^3 + 0^3 + 7^3
```
相关问题
c语言输出所有的水仙花数。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是水仙花数,因为153=13+53+33
在C语言中,可以编写一个循环来找出所有3位数范围内的水仙花数。这里有一个简单的函数可以完成这个任务:
```c
#include <stdio.h>
#include <stdbool.h>
bool is narcissistic(int num) {
int digits[3]; // 用于存储每一位数字
int sum = 0;
// 将数字分解成各个位数
while (num > 0) {
digits[2] = num % 10; // 最低位
num /= 10;
// 计算各位数的立方并累加
for (int i = 0; i <= 2; i++) {
sum += pow(digits[i], 3);
}
}
// 如果所有位数的立方和等于原数,返回true
return sum == num;
}
// 输出水仙花数
void print_narcissistic_numbers() {
for (int i = 100; i < 1000; i++) { // 只考虑三位数
if (is_narcissistic(i)) {
printf("%d ", i);
}
}
}
int main() {
print_narcissistic_numbers();
return 0;
}
```
在这个程序中,我们定义了一个名为`is_narcissistic`的函数,它接受一个整数作为输入,检查其是否满足水仙花数的条件。`print_narcissistic_numbers`函数则遍历3位数范围内的所有数,并调用`is_narcissistic`函数来找到水仙花数。
注意:由于水仙花数只存在于3位数内,所以这里的循环范围是100到999。
输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和 等于该数本身。例如,153是一水仙花数,因为153=13+53+33。C语言
以下是 C 语言实现输出所有水仙花数的代码:
```c
#include <stdio.h>
int main()
{
int num, digit, sum;
printf("所有的水仙花数为:\n");
for (num = 100; num <= 999; num++)
{
sum = 0;
for (int i = 1; i <= 3; i++)
{
digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if (sum == num)
printf("%d\n", num);
}
return 0;
}
```
输出结果如下:
```
所有的水仙花数为:
153
370
371
407
```
其中,循环从 100 开始到 999 结束,每次循环取出当前数字的每一位,计算立方和,然后判断是否等于该数字本身。如果是,就输出该数字。
阅读全文