用c++写出判断x是否为水仙花数,若是返回1,不是返回0
时间: 2024-02-28 13:54:56 浏览: 70
好的,以下是用 C++ 编写的水仙花数判断函数:
```c++
int isNarcissistic(int x) {
int sum = 0;
int temp = x;
int n = 0;
while (temp > 0) {
n++;
temp /= 10; // 求出 x 的位数
}
temp = x;
while (temp > 0) {
int r = temp % 10; // 求出 x 的个位
sum += pow(r, n); // 计算每一位的 n 次方之和
temp /= 10;
}
return sum == x; // 判断是否为水仙花数
}
```
在主函数中,可以这样调用:
```c++
int main() {
int x;
cin >> x;
if (isNarcissistic(x)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
其中,输入的 x 为待判断的数,isNarcissistic(x) 返回 1 表示 x 是水仙花数,返回 0 表示 x 不是水仙花数。
相关问题
c++判断给定整数是否为水仙花数,是则返回1,否则返回0。
好的,以下是一个C++实现的示例代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int is_narcissistic_number(int num) {
// 获取num的位数
int n = 0, temp = num;
while (temp > 0) {
n++;
temp /= 10;
}
// 求每个位上的数字的n次幂之和
int sum = 0, digit;
temp = num;
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
// 判断是否为水仙花数
if (sum == num) {
return 1;
}
else {
return 0;
}
}
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
if (is_narcissistic_number(num)) {
cout << num << " 是水仙花数" << endl;
}
else {
cout << num << " 不是水仙花数" << endl;
}
return 0;
}
```
你可以将这段代码复制粘贴到你的编程环境中运行,也可以根据需要进行修改和优化。
用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;
}
```
阅读全文