在线作答编程——输入输出测试
在线作答编程:输入输出测试,进行了总结。转载请注明链接,有问题请及时联系博主:Alliswell_WP
问题描述:
在线作答编程,需要自己处理输入输出,建议你进行在线oj输入输出练习——https://ac.nowcoder.com/acm/contest/5649?from=hr_test#question
题目1:计算a+b
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。
输出描述:
输出a+b的结果
示例1
输入:
1 5
10 20
输出:
6
30
答案一:
#include<iostream> using namespace std; int main(){ int a,b; while(cin>>a>>b){ cout<<a+b<<endl; } }
答案二:
#include<iostream> using namespace std; int main(){ int a, b; while (scanf("%d %d", &a, &b) != EOF){ printf("%d\n", a+b); } return 0; }
答案三:
#include<iostream> #include<vector> using namespace std; int main() { int a,b; vector<int>v; while(cin>>a>>b) { int c=a+b; v.push_back(c); } for(int i=0;i<v.size();i++) { cout<<v[i]<<endl; } return 0; }
题目2:计算a+b
输入描述:
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
输出描述:
输出a+b的结果
示例1
2
1 5
10 20
输出
6
30
答案一:
#include<iostream> using namespace std; int main(){ int t; cin >> t; int x,y; for(int i = 0;i < t;i++){ cin >> x >> y; cout << x + y << endl; } return 0; }
答案二:
#include<iostream> #include<vector> using namespace std; int main() { int a,b,N; vector<int>v; cin>>N; while(N--) { cin>>a>>b; int c=a+b; v.push_back(c); } for(int i=0;i<v.size();i++) { cout<<v[i]<<endl; } return 0; }
题目3:计算a+b
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出描述:
输出a+b的结果
示例1
输入
1 5
10 20
0 0
输出
6
30
答案一:
#include <iostream> using namespace std; int main(){ int a,b; while(cin >> a >> b){ if(a == 0|| b == 0) break; cout << a + b << endl; } return 0; }
答案二:
#include<iostream> #include<vector> using namespace std; int main() { int a,b; vector<int>v; while(cin>>a>>b) { int c=a+b; if(c==0) { break; } else v.push_back(c); } for(int i=0;i<v.size();i++) { cout<<v[i]<<endl; } return 0; }
题目4:计算一系列数的和
输入描述:
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
4 1 2 3 4
5 1 2 3 4 5
0
输出
10
15
答案一:
#include <iostream> using namespace std; int main(){ int n; while(cin >> n){ if(n == 0) break; int m,sum = 0; for(int i=0;i<n;i++){ cin >> m; sum += m; } cout << sum << endl; } return 0; }
答案二:
#include<iostream> #include<vector> using namespace std; int main() { int N,n; vector<int>v; int num=0; while(cin>>N) { if(N==0) { break; } while(N--) { cin>>n; num+=n; } v.push_back(num); num=0; } for(int i=0;i<v.size();i++) { cout<<v[i]<<endl; } return 0; }
题目5:计算一系列数的和
输入描述:
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
2
4 1 2 3 4
5 1 2 3 4 5
输出
10
15
答案一:
#include<iostream> using namespace std; int main() { int t; cin>>t; for(int i=0; i<t; i++){ int n; int sum=0; cin>>n; for(int j=0; j<n; j++){ int a; cin>>a; sum+=a; } cout<<sum<<endl; } return 0; }
答案二:
#include<iostream> #include<vector> using namespace std; int main() { int T,N,n; vector<int>v; cin>>T; while(T--) { while(cin>>N) { int num=0; while(N--) { cin>>n; num+=n; } v.push_back(num); num=0; } } for(int i=0;i<v.size();i++) { cout<<v[i]<<endl; } return 0; }
题目6:计算一系列数的和
输入描述:
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
4 1 2 3 4
5 1 2 3 4 5
输出
10
15
答案一:
#include<iostream> using namespace std; int main() { int n; while(cin>>n){ int sum=0; for(int i=0; i<n; i++){ int a; cin>>a; sum+=a; } cout<<sum<<endl; } return 0; }
答案二:
#include<iostream> #include<vector> using namespace std; int main() { int N,n; vector<int>result; while(cin>>N) { int num=0; while(N--) { cin>>n; num+=n; } result.push_back(num); num=0; cout << result[result.size()-1] << endl; } }
题目7:计算一系列数的和
输入描述:
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。(1 <= n <= 100)。
输出描述:
每组数据输出求和的结果
示例1
输入
1 2 3
4 5
0 0 0 0 0
输出
6
9
0
答案一:
#include<iostream> using namespace std; int main() { int n; int sum=0; while(cin>>n){ sum+=n; if(getchar()=='\n'){ //注意:可替换为cin.get()==
'\n'
cout<<sum<<endl; sum=0; } } return 0; }
答案二:
#include<iostream> using namespace std; int main(){ int num, sum; sum = 0; while (scanf("%d", &num) != EOF){ sum += num; if (getchar() == '\n'){ //注意:可替换为cin.get()==
'\n'
printf("%d\n", sum); sum = 0; } } return 0; }
答案三:
#include <iostream> #include <vector> using namespace std; int main() { int a; int sum = 0; vector<int> result; while(cin >> a) { sum += a; if(cin.get() == '\n') { result.push_back(sum); sum = 0; } } for(vector<int>::iterator it = result.begin(); it != result.end(); it++) cout << *it << endl; return 0; }
题目8:对输入的字符串进行排序后输出
输入描述:
输入有两行,第一行n
第二行是n个空格隔开的字符串
输出描述:
输出一行排序后的字符串,空格隔开,无结尾空格
示例1
输入
5
c d a bb e
输出
a bb c d e
答案一:
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; int main() { int T; string s; cin>>T; vector<string>v; while(T--) { cin>>s; v.push_back(s); } sort(v.begin(),v.end()); for(int i=0;i<v.size()-1;i++) { cout<<v[i]<<" "; } cout<<v[v.size()-1]<<endl; return 0; }
答案二:
#include <iostream> #include <cstring> #include <string> using namespace std; void sort(string str[], int n){ for(int i = 0; i < n-1; i++){ for (int j = i+1; j<n; j++){ if (str[i] > str[j]){ string temp = str[j]; str[j] = str[i]; str[i] = temp; } } } } void print(string str[], int n){ for (int i = 0; i< n-1;i++){ cout << str[i] << ' '; } cout << str[n-1] << endl; } int main(){ int n; while(cin >> n){ string str[n]; for(int i = 0; i<n;i++){ cin >> str[i]; } sort(str,n); print(str,n); } return 0; }
题目9:对输入的字符串进行排序后输出
输入描述:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
示例1
输入
a c bb
f dddd
nowcoder
输出
a bb c
dddd f
nowcoder
答案一:
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; int main() { string str; vector<string> strVec; while(cin>>str){ strVec.push_back(str); if(cin.get()=='\n'){ sort(strVec.begin(), strVec.end()); for(int i=0; i<strVec.size()-1; i++){ cout<<strVec[i]<<" "; } cout<<strVec[strVec.size()-1]<<endl; strVec.clear(); } } return 0; }
答案二:
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { vector<string> strs; string str; while (cin >> str) { strs.clear(); while (true) { strs.push_back(str); if (cin.get() == '\n') break; cin >> str; } sort(strs.begin(), strs.end()); for (auto it = strs.begin(); it != strs.end(); it++) cout << *it << ' '; cout << endl; } return 0; }
题目10:对输入的字符串进行排序后输出
输入描述:
多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100
输出描述:
对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格
示例1
输入
a,c,bb
f,dddd
nowcoder
输出
a,bb,c
dddd,f
nowcoder
答案一:
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <sstream> using namespace std; int main() { string str; vector<string> output; while(cin >> str) { stringstream ss(str); while(getline(ss, str, ',')) { output.push_back(str); } sort(output.begin(), output.end()); for(int i = 0; i < output.size() - 1; i++) { cout << output[i] << ','; } cout << output[output.size() - 1] << endl; output.clear(); } }
答案二:
#include <iostream> #include <string> #include <set> #include <sstream> #include <vector> #include <algorithm> using namespace std; int main() { string temp; vector<string> all; while(cin >> temp) { stringstream sstr; sstr << temp; while(getline(sstr, temp, ',')) { all.push_back(temp); } sort(all.begin(), all.end()); for(unsigned int i = 0; i < all.size()-1; i++) { cout << all[i] << ','; } cout << all.back() << endl; all.clear(); } return 0; }
答案三:
#include<iostream> #include<string> #include<vector> #include <algorithm> using namespace std; int main() { vector<string> vs; string tmp="",str1; while(cin>>str1){ for(int i=0;i<str1.size();i++){ if(str1[i]!=','){ tmp.push_back(str1[i]); } else{ vs.push_back(tmp); tmp.erase(tmp.begin(), tmp.end()); } } vs.push_back(tmp);//处理每行最后一个字符串(后边没有,) tmp.erase(tmp.begin(), tmp.end()); sort(vs.begin(), vs.end()); for(int i=0;i<vs.size()-1;i++){ cout<<vs[i]<<','; } cout<<vs[vs.size()-1]<<endl; vs.clear(); } }
注意:vector头文件的push_back函数,在vector类中作用为在vector尾部加入一个数据。
string中的push_back函数,作用是字符串之后插入一个字符。
血的结论:添加字符到字符串一定用push_back函数,切不可直接用“+”。但是原因是什么,尚未搞清楚。
#include<iostream> #include<string> #include<vector> using namespace std; int main() { string s = "12345"; string tmpString; tmpString += s[0] + s[1] + s[2]; stoi(tmpString); cout << tmpString << endl; getchar(); system("pause"); return 0; }
运行出错!!!
问题:链接:https://ac.nowcoder.com/acm/contest/5649/K
输入有多组测试用例,每组空格隔开两个整数
输出描述:
对于每组数据输出一行两个整数的和
#include<iostream> using namespace std; int main() { int a,b; while(cin >> a >> b) { cout << a+b << endl; } return 0; }
#include <iostream> using namespace std; int main() { // 不要用 int a, b, 因为测试数据会越界,为了效果,所以这个题目故意不在题面说数据范围 // 不要用 int a, b, 因为测试数据会越界,为了效果,所以这个题目故意不在题面说数据范围 // 不要用 int a, b, 因为测试数据会越界,为了效果,所以这个题目故意不在题面说数据范围 // 不要用 int a, b, 因为测试数据会越界,为了效果,所以这个题目故意不在题面说数据范围 // 你可以试试测试用例 12141483647 12141483647,输出结果是否正确 long long a,b; while(cin >> a >> b)// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例 cout << a+b << endl; }
在线作答编程:输入输出测试,进行了总结。转载请注明链接,有问题请及时联系博主:Alliswell_WP
posted on 2020-08-26 20:02 Alliswell_WP 阅读(684) 评论(0) 编辑 收藏 举报