牛客OJ练习

参考代码网址

https://www.cnblogs.com/Sunshineboy1/p/13495357.html

题1

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

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

输入例子1:

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

输出例子1:
10
15

#include <iostream>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        if (n==0)break;
        int m = 0;//int sum,m=0;的意思是不给sum赋值
        int sum = 0;
        for(int i=0; i<n;i++){
            cin>>m;
            sum += m;
        } 
        cout<<sum<<endl;
    }
    return 0;
}

题2

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

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

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

输入例子1:
1 2 3
4 5
0 0 0 0 0

输出例子1:
6
9
0

#include <iostream>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        int sum=n;
        while(cin.get() != '\n'){//注意是反斜杠\n
            cin>>n;
            sum += n;
        }
        cout<<sum<<endl;
    }
    return 0;
}

\n 主要用于 cout<<“内容 \n”, 输出后自动换行。与cout<<“内容”<<endl;作用相同
\t相当于按了tab键,\r是回车(返回当前行的最前面),\n是换行

从字符串的长度:——>空字符的长度为0,空格符的长度为1

    char a[] = "\0";
    char b[] = " ";
    cout << strlen(a) << endl;   //0
    cout << strlen(b) << endl;   //1

虽然输出于屏幕是一样的,但是他们还是有区别的:

    char crr[] = "a b";   //输出是a b
    char brr[] = "a\0b";  //输出是a   --------->因为遇到'\0'代表结束
    cout << strlen(crr) << endl;
    cout << strlen(brr) << endl;

题3 字符串排序,单行还告诉个数

输入描述:
输入有两行,第一行n

第二行是n个空格隔开的字符串

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

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

输出例子1:
a bb c d e

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int n;
    cin>>n;
    string s;//定义一个s来存放字符
    vector<string> strs;//定义一个字符串数组,一定是数组
    while(cin>>s){//当有输入
        strs.push_back(s);//把这个s存入字符串数组
        if (cin.get() == '\n')//看下一个是不是空行,如果是就排序
        {
            sort(strs.begin(),strs.end());
            for (int i = 0; i < strs.size()-1;i++){//注意这里是-1的输出
                cout<<strs[i]<<' ';//输出带空格
            }
            cout<<strs[strs.size() - 1]<<endl;//最后输出最后一个值,因为最后一个最后不用带空格
            strs.clear();//清空字符串
        }
    }
    return 0;
}

链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网

字符串案例2 对于多行字符串

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

每行通过空格隔开,有n个字符,n<100
输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
示例1
输入
复制
a c bb
f dddd
nowcoder
输出
复制
a bb c
dddd f
nowcoder

#include <iostream>
#include <string>
#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 (int i = 0; i<(str.size()-1);i++){
                cout<<str[i]<<' ';
            }
            cout<<str[str.size()-1]<<endl;
            str.clear();
        }
    }
    return 0;
}

当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。

所以只能读取mark不能读取mark twin,这时候就要用到getline函数

此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。

getline 函数如下所示:

getline(cin, inputLine);

其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变量的名称。

getline(cin,s,'\n')//遇到换行符的时候停止

链接:https://ac.nowcoder.com/acm/contest/5657/J
来源:牛客网

字符串3(对于整行的字符串的拆解)

题目描述
对输入的字符串进行排序后输出
打开以下链接可以查看正确的代码
https://ac.nowcoder.com/acm/contest/5657#question

输入描述:
多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100
输出描述:
对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格
示例1
输入
复制
a,c,bb
f,dddd
nowcoder
输出
复制
a,bb,c
dddd,f
nowcoder

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    string s;
    while(getline(cin,s,'\n')){//首先获取整行的字符输入
        string temp;//一个字符串
        vector<string> res;//最后返回的数组
        for (int i = 0; i < s.size(); i++){//s有多少个字母
            if (s[i] != ','){//如果不是,
                temp.push_back(s[i]);//给temp压进去
            }else{
                res.push_back(temp);//遇到一个逗号,就把之前的temp压进去,完成第一个值得录入
                temp.clear();
            }
        }
        res.push_back(temp);//n-1个逗号,还差一个值,最后循环结束得temp压进去
        sort(res.begin(), res.end());
        for(int i = 0; i < res.size(); i++){//输出
            cout<<res[i];
            if (i == res.size() -1){
                cout<<endl;//只有最后一个值才换行结束
            }else{
                cout<<',';//否则都在字符后面加个逗号
            }
        }
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务