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 5a 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,5a,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;
}
posted @   daydayupzgz  阅读(2463)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示