• C++刷题测试样例输入输出


    基础用法

    1、cin & cout
    cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。

    头文件

    #include 
    using namespace std; 
    
    • 1
    • 2

    cin和cout的基本操作
    cout语句的一般格式为:
    cout<<表达式1<<表达式2<<表达式3…<<表达式n;
    cin语句的一般格式为:
    cin>>变量1>>变量2>>变量3>>…>>变量n;

    cin 可接收数字,字符,字符串, 接收字符串时,遇到空格,tab键和换行符都会结束接收。

    2、getline
    cin.getline()
    可以接收空格,cin.getline(char*,int,char),内有三个参数,第一个表示要接收的字符串,第二个表示接收字符个数,第三个表示结束字符。当第三个省略时默认结束字符为’\0’。(结束符也算在字符个数里面,但是输出并不显示)
    getline()
    接收一个字符串,可以接收空格并输出,需包含“#include”

    str="\n"; 
    getline(cin,str);
    
    • 1
    • 2

    stringstream
    sstream库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。

    两数之和+字符串排序(简洁版)

    #include
    using namespace std;
    /*
    //两数之和
    //输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
    //接下来t行, 每行一组数据。
    //每行的第一个整数为整数的个数n(1 <= n <= 100)。
    //接下来n个正整数, 即需要求和的每个正整数。
    // input:
    // 2
    // 4 1 2 3 4
    // 5 1 2 3 4 5
    // output:
    // 10
    // 15
    int main(){
        int t,n;
        cin >> t;
        for(int i = 0; i < t; i++){
            while(cin >> n){
                int sum = 0;
                while(n--){
                    int temp;
                    cin >> temp;
                    sum += temp;
                }
                cout << sum << endl;
            }
        }
    }
     */
    
    //字符串排序
    //多个测试用例,每个测试用例一行。
    //每行通过(空格),隔开,有n个字符,n<100
    //input:
    //a,c,bb
    //f,dddd
    //nowcoder
    //output:
    //a,bb,c
    //dddd,f
    //nowcoder
    int main()
    {//字符之间空格隔开
        string s;
        while(getline(cin,s))
        {
            vector<string> vecstr;
            stringstream line(s);
            while(line>>s)
            {
                vecstr.push_back(s);
            }
            sort(vecstr.begin(), vecstr.end());
            for(int i=0; i< vecstr.size();i++)
            {
                cout<<vecstr[i]<<" ";
            }
            cout<<endl;
        }
    }
    /*
    int main(){//字符之间,隔开
        string s;
    
        while(cin >> s){
            vector strs;
            int len = 0;
            for(int i = 0; i <= s.length(); ++i){
                ++len;
                if(s[i] == ',' || s[i] == '\0'){
                    strs.push_back(s.substr(i - len + 1, len - 1));
                    len = 0;
                }
    
            }
            sort(strs.begin(), strs.end());
            for(int i = 0; i < strs.size() - 1; ++i)
                cout << strs[i] << ',';
            cout << strs[strs.size() - 1] << endl;
        }
    }
     */
    /*
    int main(){//字符之间,隔开
        string s;
        vector temp;
        while(getline(cin,s)){
            stringstream ss;
            ss<
    ///*************可不看***************************//
    /*
    int main()
    {//字符之间,隔开
        string str;
        while(getline(cin,str))
        {
            string strtemp;
            stringstream ss(str);
            multiset strset;//multisets允许元素重复,而set不允许重复。
            //set strset; 没有AC的原因是有重复的串,但是牛客只说失败了,没有提示哪个用例失败了
            while(getline(ss,strtemp,','))
                strset.insert(strtemp);
            string sul;
            for(string str:strset)
            {
                sul+=str;
                sul += ",";
            }
                //cout<1)
                cout<
     */
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131

    两数之和

    *1. 多行输入
    输入描述:
    输入包括两个正整数a,b(1 <= a, b <= 109),输入数据包括多组。

    输出描述:
    输出a+b的结果

    输入例子1:
    1 5
    10 20
    输出例子1:
    6
    30

    #include
    using namespace std;
    /*
    int main()
    {
        vector buf;
        
        string input1;
        getline(cin, input1);
        while(input1.size()>0)
        {
            int space = input1.find(' ');
            string comp1 = input1.substr(0,space);
            string comp2 = input1.substr(space+1,input1.length()-space);
            buf.push_back(atoi(comp1.c_str())+
                              atoi(comp2.c_str()));
            getline(cin,input1);
        }
        
        for(auto it = buf.begin(); it!=buf.end();it++)
            cout << *it<
    #include
    int main() {
        int a, b;
        while(cin >> a >> b) {
            cout << a+b <<endl;
        }
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2. 给定数据行数,多行输入

    输入描述:
    输入第一行包括一个数据组数t(1 <= t <= 100)
    接下来每行包括两个正整数a,b(1 <= a, b <= 109)

    输出描述:
    输出a+b的结果

    输入例子1:
    2
    1 5
    10 20
    输出例子1:
    6
    30

    #include
    #include 
    using namespace std;
     
    int main() {
        int t, a, b;
        cin >> t;
            for (int i = 0; i < t; i++) {
                cin >> a >> b;
                cout << a + b<<endl;
            }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3. 多行输入,给定终止条件

    输入描述:
    输入包括两个正整数a,b(1 <= a, b <= 109),输入数据有多组, 如果输入为0 0则结束输入

    输出描述:
    输出a+b的结果

    输入例子1:
    1 5
    10 20
    0 0
    输出例子1:
    6
    30

    #include
    #include
    using namespace std;
    int main(){
        int a, b;
        while(cin >> a >> b){
            if(a == 0 && b == 0)
                break;
            cout << a + b << endl;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4. 指定每一行数字个数, 多行输入

    输入描述:
    输入数据包括多组。
    每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
    接下来n个正整数,即需要求和的每个正整数。

    输出描述:
    每组数据输出求和的结果

    输入例子1:
    4 1 2 3 4
    5 1 2 3 4 5
    0
    输出例子1:
    10
    15

    #include
    #include
    using namespace std;
    int main(){
        int n;
        while(cin >> n){
            if(n == 0)
                break;
            int sum = 0;
            while(n--){
                int temp;
                cin >> temp;
                sum += temp;
            }
            cout << sum << endl;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5. 指定行数和每行数字数量, 多行输入

    输入描述:
    输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
    接下来t行, 每行一组数据。
    每行的第一个整数为整数的个数n(1 <= n <= 100)。
    接下来n个正整数, 即需要求和的每个正整数。

    输出描述:
    每组数据输出求和的结果

    输入例子1:
    2
    4 1 2 3 4
    5 1 2 3 4 5
    输出例子1:
    10
    15

    #include
    #include
    using namespace std;
    int main(){
        int t,n;
        cin >> t;
        for(int i = 0; i < t; i++){
            while(cin >> n){
            int sum = 0;
            while(n--){
                int temp;
                cin >> temp;
                sum += temp;
            }
            cout << sum << endl;
        }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    6. 指定每行数字个数, 多行输入

    输入描述:
    输入数据有多组, 每行表示一组输入数据。
    每行的第一个整数为整数的个数n(1 <= n <= 100)。
    接下来n个正整数, 即需要求和的每个正整数。

    输出描述:
    每组数据输出求和的结果

    输入例子1:
    4 1 2 3 4
    5 1 2 3 4 5
    输出例子1:
    10
    15

    #include
    #include
    using namespace std;
    int main(){
        int n;
        while(cin >> n){
            int sum = 0;
            while(n--){
                int temp;
                cin >> temp;
                sum += temp;
            }
            cout << sum << endl;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    7. 多行输入,每行数字个数不定

    输入描述:
    输入数据有多组, 每行表示一组输入数据。

    每行不定有n个整数,空格隔开。(1 <= n <= 100)。

    输出描述:
    每组数据输出求和的结果
    输入例子1:
    1 2 3
    4 5
    0 0 0 0 0
    输出例子1:
    6
    9
    0

    #include
    #include
    #include
    #include
    using namespace std;
    int main()
    {
        string str;
        while(getline(cin,str))
        {
            stringstream s(str);//istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。
            //stringstream stream("string");;stream<>result;//向result中写入值
            int sum = 0,num=0;
            while(s>>num)
            {
                sum+=num;
            }
            cout<<sum<<endl;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    字符串排序

    1. 一行字符, 字符间空格隔开

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

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

    输入例子1:
    5
    c d a bb e

    #include
    #include
    #include
    #include
    using namespace std;
    /*
    int main()
    {
        int n = 0;
        while(cin>>n){
            //cin.get();
            set strset;
            while(n--){
                string strtemp;
                cin>>strtemp;
                //getline(cin, strtemp,' ');
                strset.insert(strtemp);//set里面会自动排序(从小到大),以后可以利用好这个特性,set里面用的是平衡二叉搜索树(也就是红黑树)维护
            }
            for(auto str:strset)
                cout<
    int main()
    {
        int n;
        string str;
        vector<string> mystr;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>str;
            mystr.push_back(str);
            sort(mystr.begin(),mystr.end());
        }
        for (int i=0;i<mystr.size();i++){
            cout<<mystr[i];
            if(i!=mystr.size()-1) cout<<' ';
        }
         
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    2. 多行字符串, 字符之间空格隔开

    输入描述:
    多个测试用例,每个测试用例一行。

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

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

    输入例子1:
    a c bb
    f dddd
    nowcoder
    输出例子1:
    a bb c
    dddd f
    nowcoder

    #include
    using namespace std;
    int main() 
    { 
        string s; 
        while(getline(cin,s)) 
        { 
            vector<string> vecstr; 
            stringstream line(s); 
            while(line>>s) 
            { 
                vecstr.push_back(s); 
            } 
            sort(vecstr.begin(), vecstr.end()); 
            for(int i=0; i< vecstr.size();i++) 
            { 
                cout<<vecstr[i]<<" "; 
            } 
            cout<<endl; 
        } 
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3. 多行字符串, 字符之间逗号隔开

    输入描述:
    多个测试用例,每个测试用例一行。
    每行通过,隔开,有n个字符,n<100

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

    输入例子1:
    a,c,bb
    f,dddd
    nowcoder
    输出例子1:
    a,bb,c
    dddd,f
    nowcoder

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    
    int main(){
        string s;
        
        while(cin >> s){
            vector<string> strs;
            int len = 0;
            for(int i = 0; i <= s.length(); ++i){
                ++len;
                if(s[i] == ',' || s[i] == '\0'){
                    strs.push_back(s.substr(i - len + 1, len - 1));
                    len = 0;
                }
                
            }
            sort(strs.begin(), strs.end());
            for(int i = 0; i < strs.size() - 1; ++i)
                cout << strs[i] << ',';
            cout << strs[strs.size() - 1] << endl;
        }
    }
    /*
    int main(){
        string s;
        vector temp;
        while(getline(cin,s)){
            stringstream ss;
            ss<
    /*
    int main()
    {
        string str;
        while(getline(cin,str))
        {
            string strtemp;
            stringstream ss(str);
            multiset strset;//multisets允许元素重复,而set不允许重复。
            //set strset; 没有AC的原因是有重复的串,但是牛客只说失败了,没有提示哪个用例失败了
            while(getline(ss,strtemp,','))
                strset.insert(strtemp);
            string sul;
            for(string str:strset)
            {
                sul+=str;
                sul += ",";
            }
                //cout<1)
                cout<
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
  • 相关阅读:
    Trino 387 JVM 配置详解
    ProcessDB实时/时序数据库——C/C++之数据订阅
    2023年思维100秋季赛报名中,比赛安排、阶段、形式和5年真题资源
    java毕业设计茶叶销售网站Mybatis+系统+数据库+调试部署
    谈谈那些被面与面的经历(面试杂谈)
    Docker概述
    汉诺塔 --- 递归回溯算法练习一
    【MQTT从入门到提高系列 | 09】WireShark抓包分析MQTT报文
    2022起重机司机(限桥式起重机)题库及答案
    namenode节点格式化报错
  • 原文地址:https://blog.csdn.net/weixin_48268336/article/details/126264200