ACM模式常见输入输出练习(C++代码)
大厂笔试 ACM模式常见输入输出练习
一、大厂篇
1.1 单行数字,用空格/逗号分割
输入描述
输入数据有1行数字,空格分开,表示一组输入数据。
或
输入数据有1行数字,逗号','分开,表示一组输入数据。
4 1 2 3 4
或
4,1,2,3,4
代码
#include <iostream>
using namespace std;
int main(){
vector<int> data;
int tmp;
while (cin >> tmp) {
//data.push_back(tmp);// 处理数据
if (cin.get() == '\n') break;
}
return 0;
}
1.2 单行字符串,用空格/逗号分割
输入描述
输入数据有1行字符串,空格分开,表示一组输入数据。
或
输入数据有1行字符串,逗号','分开,表示一组输入数据。
string char xiao meng
或
string,char,xiao,meng
代码
#include <iostream>
using namespace std;
int main(){
string str;
vector<string> v;
getline(cin, str);
stringstream ss(str);
while (getline(ss, str, ' ')) {//用空格为分隔符
//while (getline(ss, str, ',')) {//用','为分隔符
v.push_back(str);
}
return 0;
}
2.1 多行数字/字符串,用空格分割
输入描述
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。(1 <= n <= 100)。
或
输入数据有多组, 每行表示一组输入数据。
每行不定有n个字符串,空格隔开。(1 <= n <= 100)。
1 2 3
4 5
或
a c bb
f dddd
代码
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
int main(){
vector<string> v;
string s;
while(cin >> s){
v.push_back(s);
if(getchar() == '\n'){
// 处理数据
v.clear();
}
}
return 0;
}
2.2 多行数字/字符串,用逗号分割
输入描述
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,','隔开。(1 <= n <= 100)。
或
输入数据有多组, 每行表示一组输入数据。
每行不定有n个字符串,','隔开。(1 <= n <= 100)。
1,2,3
4,5
或
a,c,bb
f,dddd
nowcoder
代码1
#include <iostream>
using namespace std;
#include <sstream>
#include <vector>
#include <algorithm>
int main(){
vector<int> v;
string str;
while(getline(cin,str)){
stringstream ss(str);//定义流对象 复制str到ss
while(getline(ss, str, ',')){//分隔符, 从流ss中取字符到str
v.push_back(stoi(str));
}
// 处理数据
v.clear();
}
return 0;
}
代码2 (前提已知有 n 行数据)
vector<int> data;
int tmp;
while(n--){
while (cin >> tmp) {
data.push_back(tmp);
if (cin.get() == '\n') break;
}
}
3、二维数组,逗号隔开,同时接收换行符
【范例】输入
则
输入描述
二维数组,用空格或','隔开。
12 23 34
23 45 56
34 45 76
或
12,23,34
23,45,56
34,45,76
代码1
#include <iostream>
using namespace std;
#include <sstream>
#include <vector>
#include <algorithm>
int main(){
int num;
vector<vector<int>> v;
vector<int> tmp;
int n =3;//二维数组行数
while (cin>>num){
tmp.push_back(num);
if (cin.get() == '\n'){
v.push_back(tmp);
n++;
tmp.clear();
}
if(n == 3){
break;
}
}
//二维数组遍历
for (int i = 0; i < v.size(); i++){
for(int j = 0; j < v[i].size(); j++){
cout << *it <<" "<<endl;
}
cout << endl;
}
return 0;
}
牛客篇
1、
输入描述
输入有两行,第一行n
第二行是n个字符串,字符串之间用空格隔开
5
c d a bb e
代码
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
int main(){
int n;
cin >> n;
vector<string> v;
string s;
while(n--){
cin >> s;
v.push_back(s);
}
// 处理数据
return 0;
}
2、
输入描述
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
4 1 2 3 4
5 1 2 3 4 5
代码
#include <iostream>
using namespace std;
int main(){
int n;
while(cin >> n){
int nums[n];
// 处理数据
}
return 0;
}
输入描述
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
2
4 1 2 3 4
5 1 2 3 4 5
代码
#include <iostream>
using namespace std;
int main(){
int n,k;
cin >> k;
while(k--){
while(cin>>n){
int nums[n];
// 处理数据
}
}
return 0;
}
输入描述
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
4 1 2 3 4
5 1 2 3 4 5
0
代码
#include <iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
if(n == 0){
return 0;
}
int nums[n];
// 处理数据
}
return 0;
}
3、输入包括两个正整数a,b(1 <= a, b <= 1000),输入数据包括多组。
1 5
10 20
代码
#include <iostream>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
// 处理数据
}
return 0;
}
输入描述
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 1000)
2
1 5
10 20
代码
#include <iostream>
using namespace std;
int main(){
int a,b;
int n;
while(n--){
cin>>a>>b;
// 处理数据
}
return 0;
}
输入描述
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
1 5
10 20
0 0
代码
#include <iostream>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
if(a == 0 && b == 0){
return 0;
}
// 处理数据
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)