帮我编写一个c++程序,要求可以直接运行,输入m,n两个数字,输出m,n之间所有的水仙花数,若m,n之间没有水仙花数,则输出no
时间: 2024-04-22 14:27:57 浏览: 19
好的,下面是一个能够实现你要求的C++程序:
```cpp
#include <iostream>
#include <cmath>
bool isArmstrongNumber(int num) {
int sum = 0;
int temp = num;
int digits = 0;
// 计算数字的位数
while (temp != 0) {
temp /= 10;
digits++;
}
temp = num;
// 计算每个位数的立方和
while (temp != 0) {
int remainder = temp % 10;
sum += pow(remainder, digits);
temp /= 10;
}
return num == sum;
}
void printArmstrongNumbers(int m, int n) {
bool found = false;
for (int i = m; i <= n; i++) {
if (isArmstrongNumber(i)) {
std::cout << i << " ";
found = true;
}
}
if (!found) {
std::cout << "no";
}
std::cout << std::endl;
}
int main() {
int m, n;
std::cout << "请输入两个数字m和n:" << std::endl;
std::cin >> m >> n;
std::cout << "m到n之间的水仙花数为:" << std::endl;
printArmstrongNumbers(m, n);
return 0;
}
```
你可以将以上代码保存为一个名为 `armstrong_numbers.cpp` 的文件,然后通过编译器编译运行该程序。运行时,程序会要求你输入两个数字 `m` 和 `n`,然后会输出 `m` 和 `n` 之间的所有水仙花数,如果没有水仙花数则输出 "no"。
注意:水仙花数是指一个 n 位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)