从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐,要求用C++写,并要求用C++流类库与输入输出的相关内容写
时间: 2024-03-17 20:46:45 浏览: 104
C++编程基础100题-蓝桥杯-CSP-机器人等级考试
以下是一个使用 C++ 流类库实现从键盘输入一批数值并进行上下行小数点对齐的输出的示例:
```c++
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
vector<double> nums;
int max_len = 0;
double num;
// 读取输入的数值并记录最大长度
while (cin >> num) {
nums.push_back(num);
max_len = max(max_len, static_cast<int>(to_string(static_cast<int>(num)).size()) + 3);
}
// 输出格式化后的数值,保留3位小数并进行上下行小数点对齐
for (int i = 0; i < nums.size(); i++) {
cout << fixed << setprecision(3) << right << setw(max_len) << nums[i] << endl;
}
return 0;
}
```
在这个代码中,我们首先包含了一些头文件,包括 `<iostream>` 用于输入输出和 `<iomanip>` 用于流控制。接着,我们定义了一个空的 `vector` 对象 `nums` 和一个整型变量 `max_len`,用于分别存储输入的数值和最大小数位数。
在 `while` 循环中,我们使用 `cin` 从键盘读取数值,并将其添加到 `nums` 向量中。在读取每个数值时,我们使用 `to_string()` 函数将其转换为字符串,并使用 `size()` 方法获取该数值的整数部分和小数点的长度,然后加上 3 得到该数值的总长度,并将其与 `max_len` 变量比较,更新最大小数位数。
接下来,我们使用一个 `for` 循环遍历 `nums` 向量中的每个数值,并使用 `cout` 输出流来对其进行格式化输出。具体地,我们首先使用 `fixed` 和 `setprecision()` 方法来保留数值的小数位数为 3,并使用 `right` 方法将数值右对齐。然后,我们使用 `setw()` 方法将输出的宽度设置为 `max_len`,并将数值本身作为最后一个参数传递给 `cout` 流对象。通过这种方式,我们可以保证所有数值的小数点在同一列上对齐,并且宽度相同。最后,我们使用 `endl` 操作符将格式化后的字符串输出到控制台。
阅读全文