c++输出:给定一个不多于5位的正整数,要求.(1)求它是几位数:(2)分别输出每一位数字: (3)按逆序输出每一位数字(例如,原数为321,应输出123)。
时间: 2024-10-13 14:11:37 浏览: 72
在C++中,你可以通过以下几个步骤来实现这个功能:
1. **输入验证和判断位数**:
首先,从用户那里获取输入并检查它是否是一个不超过5位的正整数。可以使用`std::cin`读取,并确保输入是整型。
```cpp
int num;
std::cout << "请输入一个不超过5位的正整数: ";
std::cin >> num;
if (num < 0 || num >= pow(10, 6)) {
std::cerr << "输入错误,只能输入1到99999之间的整数!" << std::endl;
return; // 或者抛出异常
}
```
2. **计算位数**:
然后,使用`std::log10`函数(对10取对数)来计算位数,因为对数的结果就是小数点后的指数。
```cpp
int digits = static_cast<int>(std::log10(num) + 1);
```
3. **输出每一位数字**:
使用循环遍历每一位数字,可以利用`std::setw`设置每一步输出的宽度,确保每位数字占据相同的列宽。
```cpp
for (int i = digits - 1; i >= 0; --i) {
int digit = num / pow(10, i);
std::cout << std::setw(2) << std::setfill('0') << digit; // 设置两位填充零以防不足显示
num %= pow(10, i + 1); // 取余操作得到下一位数字
}
std::cout << std::endl;
```
4. **逆序输出每一位数字**:
对于逆序输出,同样使用循环,但这次是从低位开始向高位反向处理。
```cpp
std::cout << "逆序输出: ";
for (int i = 0; i < digits; ++i) {
int digit = num % 10;
std::cout << digit;
num /= 10;
}
std::cout << std::endl;
```
完整代码示例:
```cpp
#include <iostream>
#include <iomanip>
int main() {
int num;
std::cout << "请输入一个不超过5位的正整数: ";
std::cin >> num;
if (num < 0 || num >= pow(10, 6)) {
std::cerr << "输入错误,只能输入1到99999之间的整数!" << std::endl;
return 0;
}
int digits = static_cast<int>(std::log10(num) + 1);
for (int i = digits - 1; i >= 0; --i) {
int digit = num / pow(10, i);
std::cout << std::setw(2) << std::setfill('0') << digit;
}
std::cout << std::endl;
std::cout << "逆序输出: ";
for (int i = 0; i < digits; ++i) {
int digit = num % 10;
std::cout << digit;
num /= 10;
}
std::cout << std::endl;
return 0;
}
```
阅读全文