从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐,要求用C++写
时间: 2024-03-17 12:46:43 浏览: 85
C++处理键盘输入的方法
5星 · 资源好评率100%
以下是一个简单的 C++ 代码示例,可以实现从键盘输入一批数值并进行上下行小数点对齐的输出:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
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, (int)to_string((int)num).size() + 3);
}
// 输出格式化后的数值,保留3位小数并进行上下行小数点对齐
for (int i = 0; i < nums.size(); i++) {
printf("%*.*f\n", max_len, 3, nums[i]);
}
return 0;
}
```
在这个代码中,我们首先包含了一些头文件,包括 `<iostream>` 用于输入输出、`<vector>` 用于存储数值、`<string>` 用于字符串操作、`<algorithm>` 用于计算最大值等。接着,我们定义了一个空的 `vector` 对象 `nums` 和一个整型变量 `max_len`,用于分别存储输入的数值和最大小数位数。
在 `while` 循环中,我们使用 `cin` 从键盘读取数值,并将其添加到 `nums` 向量中。在读取每个数值时,我们使用 `to_string()` 函数将其转换为字符串,并使用 `size()` 方法获取该数值的整数部分和小数点的长度,然后加上 3 得到该数值的总长度,并将其与 `max_len` 变量比较,更新最大小数位数。
接下来,我们使用一个 `for` 循环遍历 `nums` 向量中的每个数值,并使用 `printf()` 函数来对其进行格式化输出。具体地,我们使用格式字符串 `"%*.*f"` 来进行格式化,其中,`*` 表示从后面的参数中读取宽度值,`.*` 表示从后面的参数中读取小数位数值,`f` 表示浮点数类型。通过将总宽度设置为 `max_len`,我们可以保证所有数值的小数点在同一列上对齐。最后,我们使用 `printf()` 函数将格式化后的字符串输出到控制台。
阅读全文