互联网笔试,经常被输入输出搞蒙,最后不能AC,故总结与数组相关输入处理。
1)第一种情况:输入n个数,存放在数组中
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N; // 输入总个数
int temp;
while (cin >> N)
{
vector<int> num;
for (int i = 0; i < N; i++)
{
cin >> temp;
num.push_back(temp);
}
//输出显示
for (int i = 0; i < num.size(); i++)
cout << num[i] << " ";
cout << endl;
}
}
2)输入一行数字,数字之间以空格分割
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str;
while (getline(cin, str))
{
vector<int> num;
int temp;
istringstream iss(str);
while (iss >> temp)
{
num.push_back(temp);
}
// 输出显示
for (int i = 0; i < num.size(); i++)
cout << num[i] << " ";
cout << endl;
}
}
3)输入一行数字,数字之间以逗号隔开
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
// 输入一行,以逗号隔开
int main()
{
string str;
while (getline(cin, str))
{
vector<int> num;
string s;
for (int i = 0; i < str.length(); i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
s = s + str[i];
}
else
{
stringstream ss;
ss << s;
int n;
ss >> n;
num.push_back(n);
s = "";
}
}
stringstream ss;
ss << s;
int n;
ss >> n;
num.push_back(n);
// 输入结果,输出显示
for (int i = 0; i < num.size(); i++)
{
cout << num[i] << endl;
}
}
}
4)带有效位数的输出
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
float t = 2.354;
// 输出五位数字
cout << setprecision(5) << 12.35467 << endl;
// 输出保留小数点后四个
cout.setf(ios::fixed);
cout << fixed << setprecision(6) << t << endl;
// 取消小数点固定位数
cout.unsetf(ios::fixed);
cout << t << endl;
return 0;
}