c语言中输出所有的“水仙花数”。所谓的“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33
时间: 2024-03-09 12:46:47 浏览: 60
好的,以下是 C 语言代码实现:
```
#include <stdio.h>
int main() {
int i;
for (i = 100; i < 1000; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d\n", i);
}
}
return 0;
}
```
这个程序使用了 for 循环遍历 100-999 之间的所有数字,然后分别计算每个数字的百位、十位、个位上的数字,并判断这个数字是否是“水仙花数”,如果是就输出。
相关问题
c语言输出所有水仙花数。所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。
A:
```c
#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
int num = i * 100 + j * 10 + k;
int sum = i * i * i + j * j * j + k * k * k;
if (num == sum) {
printf("%d\n", num);
}
}
}
}
return 0;
}
```
输出结果:
```
153
370
371
407
```
解释:
在三重循环中,分别枚举百位、十位和个位上可能的数字。对于每个三位数,计算其各位数字的立方和,并将结果与这个三位数本身进行比较。如果相等,则输出这个三位数。
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。
阅读全文