C++ 判断水仙花数:代码示例和解析
以下是用 C++ 语言判断一个整数是否是水仙花数的示例代码:
#include <iostream>
#include <cmath>
bool isArmstrongNumber(int number) {
int temp = number;
int sum = 0;
int digits = 0;
// 计算数字位数
while (temp != 0) {
temp /= 10;
digits++;
}
temp = number;
// 计算各个位的立方和
while (temp != 0) {
int remainder = temp % 10;
sum += pow(remainder, digits);
temp /= 10;
}
// 判断是否为水仙花数
if (sum == number) {
return true;
} else {
return false;
}
}
int main() {
int number;
std::cout << '请输入一个整数:';
std::cin >> number;
if (isArmstrongNumber(number)) {
std::cout << number << ' 是水仙花数。' << std::endl;
} else {
std::cout << number << ' 不是水仙花数。' << std::endl;
}
return 0;
}
代码解析:
-
isArmstrongNumber函数:- 接收一个整数
number作为参数。 - 使用
temp变量保存number的值,并使用digits变量记录数字的位数。 - 使用循环计算数字的位数,并将
temp除以 10 直到temp等于 0。 - 再次使用循环计算各个位的立方和,将每个数字取余 10,然后计算其
digits次方并累加到sum中。 - 最后判断
sum是否等于number,如果是则返回true,表示是水仙花数;否则返回false。
- 接收一个整数
-
main函数:- 从用户输入中获取一个整数。
- 调用
isArmstrongNumber函数判断该整数是否是水仙花数。 - 根据函数返回值输出相应的结果。
优化建议:
- 可以将
isArmstrongNumber函数改写为更简洁的形式,例如使用三目运算符:
bool isArmstrongNumber(int number) {
// ...
return sum == number;
}
- 可以对输入进行验证,例如判断输入是否为正整数。
希望以上内容对你有所帮助。如果你有任何其他问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/bcAK 著作权归作者所有。请勿转载和采集!