牛客网输入输出练习c++ 个人版题解

简介: 牛客网输入输出练习c++ 个人版题解

原题链接

https://ac.nowcoder.com/acm/contest/5657#question

https://www.nowcoder.com/test/27976983/summary

1.计算a + b a+ba+b,任意组数据任意结尾

链接:https://ac.nowcoder.com/acm/contest/5657/A

来源:牛客网

image.png

输入样例:

1 5
10 20

输出样例:

6
30

代码:

#include<iostream>
using namespace std;
int a,b;
int main(){
    while(cin>>a>>b){
        cout<<a+b<<endl;
    }
}

说明:while(cin>>a>>b)可以反复输入,直到没有读取到输入结束

2.计算a + b a+ba+b,指定组数据

链接:https://ac.nowcoder.com/acm/contest/5657/B

来源:牛客网

image.png

输入样例:

2
1 5
10 20

输出样例:

6
30

代码:

#include<iostream>
using namespace std;
int t;
int main(){
    cin>>t;
    while(t--){
        int a,b;
        cin>>a>>b;
        cout<<a+b<<endl;
    }
}

3.计算a + b a+ba+b,任意组数据以0 0结尾

链接:https://ac.nowcoder.com/acm/contest/5657/C

来源:牛客网

image.png

输入样例:

1 5
10 20
0 0

输出样例:

6
30

代码:

#include<iostream>
using namespace std;
int a,b;
int main(){
    while(cin>>a>>b&&a&&b){
        cout<<a+b<<endl;
    }
}

说明:while(cin>>a>>b&&a&&b)在读取完a b abab数值后检测a b abab是否为0,同时为0则跳出循环

4.计算行数据和,每行数据总数已知,总行数未知但以0结尾

链接:https://ac.nowcoder.com/acm/contest/5657/D

来源:牛客网

题目描述 :

计算一系列数的和

image.png

输出描述:

每组数据输出求和的结果

输入样例:

4 1 2 3 4
5 1 2 3 4 5
0

输出样例:

10
15

代码:

#include<iostream>
#include<string>
#include<cstring>
#include<sstream>
using namespace std;
int t;
int main(){
    while(cin>>t&&t){
        int sum=0;
        int num=0;
        for(int i=0;i<t;i++){
            cin>>num;
            sum+=num;
        }
        cout<<sum<<endl;
    }
    return 0;
}

说明:while(cin>>t&&t)判断当前读取数据是否为0,为0则跳出循环

5.计算行数据和,每行数据总数已知,总行数已知

链接:https://ac.nowcoder.com/acm/contest/5657/E

来源:牛客网

题目描述:

计算一系列数的和

image.png

输出描述:

每组数据输出求和的结果

输入样例:

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;
    while(t--){
        int n,num=0,sum=0;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>num;
            sum+=num;
        }
        cout<<sum<<endl;
    }
}

6.计算行数据和,每行数据总数已知,总行数未知且任意结尾

链接:https://ac.nowcoder.com/acm/contest/5657/F

来源:牛客网

题目描述:

计算一系列数的和


image.png

输出描述:

每组数据输出求和的结果

输入样例:

4 1 2 3 4
5 1 2 3 4 5

输出样例:

10
15

代码:

#include<iostream>
#include<string>
#include<cstring>
#include<sstream>
using namespace std;
int t;
int main(){
    while(cin>>t){
        int sum=0;
        int num=0;
        for(int i=0;i<t;i++){
            cin>>num;
            sum+=num;
        }
        cout<<sum<<endl;
    }
    return 0;
}

说明:同样的,用while(cin>>t)读取数据

7.计算行数据和,每行数据总数未知,总行数未知且任意结尾

链接:https://ac.nowcoder.com/acm/contest/5657/G

来源:牛客网

题目描述:

计算一系列数的和

image.png

输出描述:

每组数据输出求和的结果

输入样例:

1 2 3
4 5
0 0 0 0 0

输出样例:

6
9
0

代码:

#include<sstream>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string s;
int main(){
    while(getline(cin,s)){
        stringstream sstream(s);
        int sum=0,num=0;
        while(sstream>>num)
            sum+=num;
        cout<<sum<<endl;
    }
}

说明:stringstream类可以把字符串转化为输入流,然后从输入流中读取数据。getline(cin,s)可以一次性读取自带空格的一行数据。sstream>>numcin>>num类似,但是是从刚才转化出的字符串流而不是键盘/文件中读取数据。

8.字符串排序,已知字符串数量

链接:https://ac.nowcoder.com/acm/contest/5657/H

来源:牛客网

题目描述:

对输入的字符串进行排序后输出

输入描述:

输入有两行,第一行n

第二行是n个字符串,字符串之间用空格隔开

输出描述:

输出一行排序后的字符串,空格隔开,无结尾空格

输入样例:

5
c d a bb e

输出样例:

a bb c d e

代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> vs;
int main(){
    string s;
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s;
        vs.push_back(s);
    }
    sort(vs.begin(),vs.end());
    for(int i=0;i<n-1;i++)
        cout<<vs[i]<<" ";
    cout<<vs[n-1];
}

说明:用vector暂存输入的字符串

9.字符串排序,未知字符串数量,多组数据

链接:https://ac.nowcoder.com/acm/contest/5657/I

来源:牛客网

题目描述

对输入的字符串进行排序后输出

输入描述:

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

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

输出描述:

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

输入样例:

a c bb
f dddd
nowcoder

输出样例:

a bb c
dddd f
nowcoder

代码:

#include<iostream>
#include<vector>
#include<sstream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
string s;
vector<string> vs;
int main(){
    while(getline(cin,s)){
        stringstream sstream(s);
        vs.clear();
        string temps;
        while(sstream>>temps)
            vs.push_back(temps);
        sort(vs.begin(),vs.end());
        for(auto str:vs)
            cout<<str<<" ";
        cout<<endl;
    }
}

说明:同样的,用getline(cin,s)读取自带空格的数据,用stringstream创建字符串流。

10.字符串排序,未知字符串数量,每个字符串以逗号分隔

链接:https://ac.nowcoder.com/acm/contest/5657/J

来源:牛客网

题目描述:

对输入的字符串进行排序后输出

输入描述:

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

每行通过,隔开,有n个字符,n100

输出描述:

对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格

输入样例:

a,c,bb
f,dddd
nowcoder

输出样例:

a,bb,c
dddd,f
nowcoder

代码(个人版)不是最优解

#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> vs;
int main(){
    string lines;
    while(getline(cin,lines)){
        vs.clear();
        while(lines.find(',')!=string::npos){
            vs.push_back(lines.substr(0,lines.find(',')));
            lines=lines.substr(lines.find(',')+1);
        }
        vs.push_back(lines);
        sort(vs.begin(),vs.end());
        int n=vs.size();
        cout<<vs[0];
        for(int i=1;i<n;i++)
            cout<<","<<vs[i];
        cout<<endl;
    }
}

说明:反复调用find()和substr不断找逗号,不断把字符串截短。输出时先输出第0项,之后输出逗号和当前项,防止出现行末空格和多余逗号。

代码(牛客网上最优解

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=52627787

#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    while(getline(cin, s)){
        stringstream ss(s);
        vector<string> v;
        while(getline(ss, s, ',')) v.push_back(s);
        sort(v.begin(), v.end());
        for(int i=0;i<v.size()-1;++i) cout<<v[i]<<',';
        cout<<v.back()<<endl;
    }
    return 0;
}

说明:getline(ss,s,ch)可以从字符串流ss中将字符串读入s,这个字符串默认以\n结尾,但可以通过参数指定为以ch结尾。

11.计算a + b a+ba+b,但有坑

链接:https://ac.nowcoder.com/acm/contest/5657/K

来源:牛客网

数据范围:0<a,b<2×1010

输入描述:

输入有多组测试用例,每组空格隔开两个整数

输出描述:

对于每组数据输出一行两个整数的和

输入样例

1 1

输出样例

2

代码:

#include<iostream>
using namespace std;
int main(){
    long long a,b;
    while(cin>>a>>b)
        cout<<a+b<<endl;
}

说明:十年OI一场空,不开long long见祖宗。


目录
相关文章
|
6月前
|
C++
C++:OJ练习(每日练习系列)
C++:OJ练习(每日练习系列)
73 2
|
C++
关于指针,你不可以错过的练习(c/c++)
关于指针,你不可以错过的练习(c/c++)
61 0
|
C++
C++练习:设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。 顺便熟悉一下分文件编写
C++练习:设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。 顺便熟悉一下分文件编写
103 0
|
6月前
|
Shell C++
C++:OJ练习(每日练习系列)
C++:OJ练习(每日练习系列)
50 1
|
6月前
|
Serverless C++
C++:OJ练习(每日练习!)
C++:OJ练习(每日练习!)
58 0
|
6月前
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
46 0
|
5月前
|
C++ 容器
C++之评委打分案例(vector与deque容器练习)
C++之评委打分案例(vector与deque容器练习)
|
6月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
52 2
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
|
5月前
|
C++
C++小练习:猜数游戏
C++小练习:猜数游戏
|
6月前
|
存储 前端开发 算法
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(下)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
19 0