【牛客刷题】输入输出练习

牛客链接:https://ac.nowcoder.com/acm/contest/5657#question

带空格的字符串(整数)

输入:

多个测试用例,每个测试用例一行。

每行通过空格隔开,有n个字符,n<100

输出:

对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开

示例:

input:
a c bb
f dddd
nowcoder

output:
a bb c
dddd f
nowcoder

C++:

//#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    string s;
    vector<string> str;
    while (cin>>s){
        str.push_back(s);
        if (cin.get()=='\n'){
            sort(str.begin(),str.end());
            for (auto ss: str) cout << ss << " ";
            cout << endl;
            str.clear();
        }
    }
    return 0;
}

可以看出,思路是【直接输入+判断换行】。

实际上只要是用空格分隔,都可以用这个模板,整数处理也一样。参考如下输出要求。

输出:

对于每组测试用例,输出求和的结果。

示例:

input:
1 2 3
4 5
0 0 0 0 0

output:
6
9
0

C++:

#include<iostream>
using namespace std;

int main(){
    int a, sum = 0;
    while (cin >> a){
        sum += a;
        if (cin.get()=='\n'){
            cout << sum << endl;
            sum = 0;
        }
    }
    return 0;
}

带逗号的字符串

还是上面的问题,所有的空格改为逗号。

输入:

多个测试用例,每个测试用例一行。

每行通过逗号隔开,有n个字符,n<100

输出:

对于每组测试用例,输出一行排序过的字符串,每个字符串通过逗号隔开

示例:

input:
a c bb
f dddd
nowcoder

output:
a bb c
dddd f
nowcoder

C++:

#include<iostream>
#include<sstream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    string s;
    vector<string> str;
    while (getline(cin,s)){
        stringstream ss(s);
        string tmp;
        while (getline(ss,tmp,',')){
            str.push_back(tmp);
        }
        sort(str.begin(),str.end());
        for (int i=0; i<str.size(); i++){
            cout << str[i];
            if (i==str.size()-1) {
                cout << endl;
            }else{
                cout << ",";
            }
        }
        str.clear();
    }
    return 0;
}

由于不能直接判断换行,思路是先【读取整行】,再【按逗号分割】,后面都是一样的。