ACM模式多输入处理问题:
一、处理输入问题:
1.以字符串形式接收输入,再转换为数字
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int stuNum = 0;
string str1; //获取第一行输入,确定输入行数
getline(cin, str1);
stuNum = stoi(str1); //字符串转换为整数
vector<vector<int>> arr; //保存所有整数到二维数组
vector<int> tmp; //临时保存字符串转换后的每行整数
int order = 0;
string str; //临时存储每行字符串
for (int i = 0; i < stuNum; i++)
{
getline(cin, str);
while (!str.empty())
{
auto pos = find(str.begin(), str.end(), ' '); //求空格字符的迭代器位置
order = distance(str.begin(), pos); //计算第一个数长度
tmp.push_back(stoi(str.substr(0, order))); //求子串并转换为int型存入tmp
str.erase(0, order + 1); //删除已经转换过的字符
}
arr.push_back(tmp);
tmp.clear();
str.clear();
}
for (int i = 0; i < arr.size(); i++)
{
for (auto a : arr[i])
cout << a << ' ';
cout << endl;
}
system("pause");
return 0;
}
代码输出:
二、处理输出问题:
2.1 输出为保留位小数
printf 函数输出
printf("%.nf", x) //保留n位小数输出
cout 输出方式
#include<iomanip>
int main()
{
cout << fixed << setprecision(n) << value << endl;// 输出保留n位小数
}