自己实际参与笔试的过程中经常因为数据流读入读出过程而损失时间,所以这里尽量总结一下读入读出的具体方法,希望对以后的笔试也有所帮助。
最简单的情况:写入一个数,写出一个数
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a; //写入单个数,可以通过改变a类型来改变写入数据类型
int b;
b = solution(a); //返回也为int类型数据
cout << b << endl; // 写出单个数
return 0;
}
稍微复杂情况:以某一标志为参照,写入一个数组,写出一个数组
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,tmp;
vector<int> numbers;
cin >> a;
while(a--) //适用于首位数为数组长度其余部分为数组
{
cin >> tmp;
num.push_back(tmp);
}
for(auto item:num)
{
res.push_back(solution(item)); //适用于对数组进行逐一操作的情况
} //也可以对数组整体进行处理,这里不做重点讨论
for(auto item:res)
{
cout << item << endl; //此时结果会逐一输出
}
return 0;
}
很麻烦的另一种情况,读入的数据中掺杂着符号,并要求读出数据也掺杂符号
#include <bits/stdc++.h>
using namespace std;
int main()
{
string l;
int tmp;
int num = 0;
vector<int> res;
cin >> l;
for(int i=0; i<l.length(); i++) //以输入数组带逗号为例
{
if (l[i] != ',')
{
tmp = l[i]-'0';
num = num*10+tmp;
}
else
{
res.push_back(num);
num = 0;
}
}
res.push_back(num); // 跳出循环还要在pushback一次
vector<int> result;
result = solution(num);
for (int i=0; i<result.size();i++)
{
cout << result[i] << (i == result.size()-1? '\n':','); //以输出逗号为例
}
return 0;
}
见题量有限,还不熟悉,如果有错误还请指正,欢迎交流!
祝大家顺利拿offer!