写一个C++程序:输出所有的“水仙花数”,所谓“水仙花数”是指一个3 位数,其各位数字立方和等于该数本身。例如,153 是一水仙花数
时间: 2023-10-27 20:04:49 浏览: 98
。这是一个简单的 C 语言程序,用于打印所有的“水仙花数”:
```
#include <stdio.h>
int main() {
int i, j, k, n;
for (n = 100; n < 1000; n++) {
i = n / 100; // 计算百位
j = (n / 10) % 10; // 计算十位
k = n % 10; // 计算个位
if (i * i * i + j * j * j + k * k * k == n) {
printf("%d\n", n); // 打印该数
}
}
return 0;
}
```
该程序使用 for 循环遍历所有的三位数,分别计算其百位、十位和个位数字。然后,它检查该数是否是“水仙花数”,即它的立方和是否等于该数本身。如果是,则打印该数。
相关问题
C++l输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。
好的,下面是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
// 判断一个数是否是水仙花数
bool isNarcissistic(int num) {
int sum = 0, temp = num;
while (temp) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return sum == num;
}
int main() {
for (int i = 100; i <= 999; i++) {
if (isNarcissistic(i)) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
运行结果:
```
153 370 371 407
```
如何用C++程序来计算并输出100到一个特定整数n范围内的所有水仙花数?
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。要编写C++程序来找出100到n范围内的所有水仙花数,你可以按照以下步骤:
1. 定义一个函数`isArmstrong(int number)`,用于检查一个数是否为水仙花数。这个函数需要将输入的数分解成三个位数,然后分别计算它们的立方和并与原数比较。
```cpp
bool isArmstrong(int number) {
int original_number, digit, sum = 0;
original_number = number;
// 把数字转换为字符串,便于提取每一位
std::string num_str = std::to_string(number);
int length = num_str.length();
if (length != 3) return false; // 只考虑三位数
for (int i = 0; i < length; ++i) {
digit = num_str[i] - '0'; // 转换为整数
sum += pow(digit, 3); // 立方和
}
return sum == original_number;
}
```
2. 主程序部分遍历从100到n的每个数,调用上述函数,如果返回true,则输出这个数。
```cpp
#include <iostream>
#include <cmath>
int main() {
int n;
std::cout << "请输入一个整数n(大于100): ";
std::cin >> n;
for (int i = 100; i <= n; ++i) {
if (isArmstrong(i)) {
std::cout << i << " 是一个水仙花数.\n";
}
}
return 0;
}
```
阅读全文