c++给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
时间: 2024-09-21 10:08:04 浏览: 40
在C++中,你可以使用内置的库函数如`std::stoi`将字符串转换成整数,同时遍历每一位数字。下面是满足上述要求的一个简单示例:
```cpp
#include <iostream>
#include <sstream>
void printNumber(int num) {
// 求出数字位数
int digit_count = std::numeric_limits<int>::digits10; // 对于int类型,总是5位
// 打印每一位数字
for (int i = digit_count - 1; i >= 0; i--) {
int digit = num % 10; // 取最后一位
std::cout << digit;
num /= 10; // 移除最低位
}
std::cout << "\n";
// 按逆序打印每位数字
for (int i = 0; i < digit_count; i++) {
std::cout << num % 10;
num /= 10;
}
std::cout << "\n";
}
int main() {
std::string input;
std::cout << "请输入一个不超过5位的正整数: ";
std::getline(std::cin, input);
try {
int number = std::stoi(input);
if (number > 0 && number <= pow(10, digit_count)) { // 验证输入是否有效
printNumber(number);
} else {
std::cerr << "输入无效,请输入一个不超过5位的正整数.\n";
}
} catch (const std::invalid_argument &e) {
std::cerr << "输入无效,请输入一个正整数.\n";
}
return 0;
}
```
这段代码首先从用户处获取输入并尝试将其转换为整数。然后,它会打印原始数字和逆序数字。如果输入超过5位或者不是正整数,会捕获异常并提示用户。
阅读全文