zoukankan      html  css  js  c++  java
  • 在线作答编程——输入输出测试

    在线作答编程:输入输出测试,进行了总结。转载请注明链接,有问题请及时联系博主: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
    ", 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()=='
    '){ //注意:可替换为cin.get()=='
    '
                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() == '
    '){ //注意:可替换为cin.get()=='
    '
                printf("%d
    ", 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() == '
    ')
            {
                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()=='
    '){
                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() == '
    ')
                    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

    每年前几场在线笔试编程题的时候,总有同学询问为什么我本地测试通过,自测也通过,提交代码系统却返回通过率0。
    这不是系统的错,可能是因为
    1.你对题目理解错了,你的代码只过了样例或你自己的数据
    2.你的代码逻辑有问题,你的代码只过了样例或你自己的数据
    总之就是你的代码只是过了样例和自测数据,后台的测试数据你根本不可见,要多自己思考。
     
     
    举例子:
    输入描述:
    输入有多组测试用例,每组空格隔开两个整数
    输出描述:
    对于每组数据输出一行两个整数的和
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        int a,b;
        while(cin >> a >> b)
        {
            cout << a+b << endl;
        }
        return 0;
    }
    这个题目如果你提交后通过率为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

  • 相关阅读:
    Java Mail学习整理
    @RequestBody, @ResponseBody 注解详解(转)
    @RequestMapping 用法详解之地址映射(转)
    理解static关键字
    ClassLoader如何加载class
    请说出作用域public,private,protected,以及不写时的区别
    分页语句-取出sql表中第31到40的记录(以自动增长ID为主键)
    Java构造器和方法的区别
    8月收到的最新更新附近的人交友系统源码,自动打招呼,自动发视频通话+自动聊天多功能机器人交友源码
    8月新亲测完美短视频点赞系统支持抖音+快手+刷宝+微视等所有主流短视频点赞/关注/评论系统源码
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/InternetCompanyProgrammingQuestions_offer02.html
Copyright © 2011-2022 走看看