c++判断一个数是否为水仙花数,要求使用for循环结构实现程序功能。
时间: 2023-04-08 08:03:26 浏览: 110
可以回答这个问题。以下是代码实现:
num = int(input("请输入一个三位数:"))
sum = 0
temp = num
for i in range(3):
sum += (temp % 10) ** 3
temp //= 10
if num == sum:
print(num, "是水仙花数")
else:
print(num, "不是水仙花数")
相关问题
用c++判断一个数是否是水仙花数
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在C++中,你可以通过循环结构和条件判断来检查一个整数是否是水仙花数。以下是简单的步骤:
```cpp
#include <iostream>
#include <cmath>
bool is NarcissisticNumber(int num) {
if (num < 100 || num > 999) { // 只考虑三位数
return false;
}
int digits[3];
int sum = 0;
// 分割百位、十位和个位
int temp = num;
while (temp > 0) {
digits[0] = temp % 10;
digits[1] = (temp / 10) % 10;
digits[2] = temp / 100;
temp /= 100;
}
// 检查每一位立方和是否等于原数
for (int i = 0; i < 3; ++i) {
if (digits[i]^digits[i]) { // 如果当前位为0,则不影响结果
sum += std::pow(digits[i], 3);
}
}
return sum == num;
}
int main() {
int num;
std::cout << "请输入一个三位数:";
std::cin >> num;
if (is NarcissisticNumber(num)) {
std::cout << num << " 是水仙花数。\n";
} else {
std::cout << num << " 不是水仙花数。\n";
}
return 0;
}
```
若一个整数的各位数字的立方之和等于这个整数,称之为“水仙花数”。求1000以内所有的水仙花数。用c++的for基本结构
在C++中,你可以使用for循环遍历1000以内的所有三位数,然后分别计算每一位数字的立方并累加,检查是否等于原数,以此来找到所有的水仙花数。以下是使用for的基本结构的C++代码示例:
```cpp
#include <iostream>
using namespace std;
int cubeDigit(int n) {
int sum = 0;
while (n != 0) {
int digit = n % 10;
sum += digit * digit * digit;
n /= 10;
}
return sum;
}
bool is narcissistic(int num) {
return num == cubeDigit(num);
}
void findNarcissisticNumbers(int limit) {
for (int i = 100; i <= limit; ++i) {
if (isNarcissistic(i)) {
cout << i << " ";
}
}
}
int main() {
int maxLimit = 1000;
findNarcissisticNumbers(maxLimit);
cout << "\nTotal narcissistic numbers between 1 and " << maxLimit << " are: ";
阅读全文