牛客网笔试C++输入输出

函数相关知识

  • cin将数据存放到temp里面,并且进行好了类型转换,也就是说如果temp是int,那么输入的数据就会转化成int,如果是string类型,那么就将输入的数据转换成string类型,然后存入到temp里面:

    • cin>>输入的数据不包含空格和回车,空格和回车会存入到cin的缓冲区中

    • 如果想拿到输入的空格和回车,通过cin.get()获得

    • cin读取的每个数据以空格和回车分隔

    • cin.get()则是读取每个字符/数,包括空格和回车

  • while(cin >> value)

    • 在while循环中,cin只有在遇到文件结束符(end-of-file),或遇到一个无效输入时(例如输入的值不是一个整数),cin的状态会变为无效退出循环。

    • 从键盘输入文件结束符(end-of-file):

      • 在Windows系统中,输入文件结束符的方法是按Ctrl+Z,然后按Enter或Return键。

      • 在Unix系统中,包括在Mac OS X系统中,文件结束符输入Ctrl+D

输入数字

1 输入包括两个正整数a,b,输入数据包括多组

int main() {
    int a, b;
    while(cin >> a >> b) {
        cout << a+b << endl;
    }
    return 0;
}

2 先输入组数n,再输入每组数据a和b

int main(){
    int n, a, b;
    cin >> n;
    for(int i = 0; i < n; ++i) {
        cin >> a >> b;
        cout << a + b << endl;
    }
    return 0;
}

3 输入包括两个正整数a,b,输入数据包括多组,如果输入为0则结束输入

int main(){
    int a, b;
    while(cin >> a >> b){
        if(a == 0 && b == 0) break;
        cout << a + b << endl;
    }
    return 0;
}

4 输入多组数据,每组第一个数为该组数据个数n,n为0时结束输入

// 方式1
int main(){
    int n;
    while(cin >> n&&n>0){
        int sum=0, num;
        for(int i=0;i<n;i++){
            cin >> num;
            sum+=num;
        }
        cout << sum << endl;
    } 
}

// 方式2
#include<iostream>
using namespace std;
int main(){
    int n, a;
    while(cin >> n){
        if(n == 0)break;
        int sum = 0;
        for(int i=0; i<n; ++i){
            cin >> a;
            sum += a;
        }
        cout << sum << endl;
    }
    return 0;
}

5 先输入组数,再输入每组数据,每组第一个数为该组数据个数

#include<iostream>
using namespace std;
int main(){
    int group, num;
    cin >> group;
    for(int i = 0; i < group; ++i){
        cin >> num;
        int a;
        int sum = 0;
        for(int j = 0; j < num; ++j){
            cin >> a;
            sum += a;
        }
        cout << sum <<endl;
    }
}

6 输入多组数据,每组第一个数为该组数据个数n

#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        int sum=0, num;
        for(int i=0;i<n;i++){
            cin >> num;
            sum+=num;
        }
        cout << sum << endl;
    } 
}

7 输入多组数据,每行表示一组数据,每组数据个数不定√√

#include<iostream>
using namespace std;
int main(){
    int sum=0, a;
    while(cin >> a){
        sum += a;
        if(cin.get() == '\n'){ // 判断数据之间的间隔是不是换行
            cout << sum <<endl;
            sum = 0;     
        }
    }
}

输入字符串

8 输入有两行,第一行n,第二行是n个空格隔开的字符串

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin >> n;
    string s;
    vector<string> res;
    for(int i=0; i<n; ++i){
        cin >>s;
        res.push_back(s);
    }
    sort(res.begin(),res.end());
    for(auto s: res){
        cout << s << ' ';
    }
    return 0;
}

9 多个测试用例,每个测试用例一行,字符串间空格隔开

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    string s;
    vector<string> ans;
    while(cin >> s){
        ans.push_back(s);
        if(cin.get()=='\n'){
            sort(ans.begin(),ans.end());
            for(auto s:ans){
                cout << s << " ";
            }
            cout << endl;
            ans.clear();
        }
    }
    return 0;
}

10 多个测试用例,每个测试用例一行,字符串间逗号隔开

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    string s;
    vector<string> ans;
    char a;
    while(cin.get(a)){  // 一个一个字符地读
        if(a!=','&&a!='\n'){
            s = s + a;
        }
        if(a==','){
            ans.push_back(s);
            s.clear();
        }
        // 一组数据结束
        if(a=='\n'){
            ans.push_back(s);
            s.clear();
            int n = ans.size();
            sort(ans.begin(),ans.end());
            for(int i=0;i<n-1;i++){
                cout << ans[i] << ",";
            }
            cout << ans[n-1] << endl;
            ans.clear();
        }
    }
    return 0;
}

11 自测本地通过提交为0

#include<iostream>
using namespace std;
int main(){
    long a, sum=0;
    while(cin >> a){
        sum += a;
        if(cin.get() == '\n'){ // 数据和数据之间不是换行,则是同组数据
            cout << sum <<endl;
            sum = 0;
        }
    }
    return 0;
}
posted @ 2021-08-27 18:19  夏目的猫咪老师  阅读(1309)  评论(0编辑  收藏  举报