【牛客刷题】输入输出练习
牛客链接: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;
}
由于不能直接判断换行,思路是先【读取整行】,再【按逗号分割】,后面都是一样的。