内容简述
该篇文章将对牛客网刷题中关于输入输出的一些问题作一个总结。每年互联网公司的招聘都必不可少会有算法题,因此平时很多人都会去一些刷题网站进行刷题来学习。这里面用的比较多的刷题网站是leetcode和牛客网。leetcode是一个专门用来刷算法题的网站,里面的算法题覆盖面很广,几乎各方面的编程都有,包括算法,多线程,数据库等,它的特点是题型多并且都有提供官方解答和网友的解答,可以学习得更加方便。在刷算法题时不必担心输入输出数据的问题,因为都是提供一个函数接口,因此练习者只需要实现功能就好了。
牛客网是近些年流行起来的一个招聘网站,当下几乎成为了互联网的求职者必不可缺的资源。一方面,牛客网提供了很多公司的官方招聘信息以及内推信息(员工发帖),可以让大家很方便地查看各大公司招聘信息。另一方面,牛客网提供了更加丰富的刷题系统,里面不但有leetcode的题目库,还有各大公司往年的笔试题,这也为刷题者提供了更宽泛的通道,最后,牛客网还可以在上面发帖,例如面经,求职之类的信息。目前,很多公司的线上面试都用了牛客网的系统,可以在线手撕代码。以上都非常方便大家的学习。但是牛客网的刷题系统大部分都是要自己控制输入输出的,有输入输出的编程就会出现各种格式问题,(说到底在输入输出上出现问题可能还是对语言基础掌握不牢),下面就是一些常见的输入输出问题(如果leetcode刷习惯了,估计会经常采坑)

输入
几乎所有的输入都是数字或者字符串,根据数字和字符串可以将输入分为几种情况:
先说数字(通常给定一组数,或者给定给一个数组)
(1)直接输入一个数,对该数字进行一些操作,例如判断是否是素数,立方根等,这种类型只需要输入一个数即可,可用以下几种输入:

int N;//定义一个输入变量用于接收系统输入的数字
cin>>N;//方式一,直接输入,再执行相应操作
while(cin>>N){//方式二,将输入放在while后面,这种方式推荐大家用,因为C++的输入是流的方式,因此用while来判断接收是比较常用的方法,不容易出错(一些情况下只能用这种输入,所以推荐用这种,包括后面的字符串)
}

(2)给定一个数,表示有多少组数(可能是字符和数字的组合)

//举个例子,输入一个数N表示有多少个学生,然后输入每个学生的姓名和学号,要求按学号降序打印每个学生的信息,例子如下:
//输入:3
// liming,1410
// zhangsan,1562
// lisi,1355
//输出:
// zhangsan,1562
// liming,1410
// lisi,1355
//对于上例,输入一般采用以下的方法
int N;//学生总数
while(cin>>N){ //while里面输入总数,然后在该循环里面处理for(int i=0;i<N;i++){ //用for循环输入N组数据cin>>stu[i].name>>stu[i].num;//输入姓名和学号}
}
//也可以不用while循环(不推荐,除非用while不好处理或者处理不了)
int N;
cin>>N;
for(int i=0;i<N;i++){ //用for循环输入N组数据cin>>stu[i].name>>stu[i].num;//输入姓名和学号
}
//这种方式看似很直观易懂,但这种方式对于系统里的测试用例来说可能不太友好,一般C++的输入都强调流的概念,这种方式只能某些情况下可以使用,大家可以自己多刷一刷,就会发现这种方式经常会遇到莫名其妙的错误

(3)可能直接就是要求输入一组数,并不告知具体的数量,以(2)的例子为例,如果不告诉你多少个学生,你就无法根据学生数量用for循环输入了,这时候用while循环就可以很好地处理(流的处理模式)

string name;//定义姓名变量
int num;//定义学号变量
while(cin>>name>>num){//输入一组,处理一组student s = {name,num};Input.push_back(s);//用一个结构体数组来接收输入的学生信息即可//....
}

再说字符(串)(很常见)
(1)给定字符(串),进行相关地处理

//给定字符
char ch;
cin>>ch;//方式一
while(cin.get(ch))//方式二
//给定字符串
string input;
getline(cin,input);//方式一
cin>>input;//方式二
while(方式一/方式二) //方式三
//还是推荐用方式三的输入方式,不容易出错,字符串的一些题目用方式一和方式二可能会出错(由于输入格式的问题)

(2)给定不止一组字符串,告知大小

//举个例子,先输入一个数表示有多少个字符串,再输入每个字符串,根据字符串长度排序
int N;//定义数量
string temp;//字符串变量
while(cin>>N){ //输入数量vector<string> input; //存储所有的字符串for(int i=0;i<N;i++){cin>>temp; //输入字符串input.push_back(temp);//保存}
}
//下面是另一种不安全的写法
int N;//定义数量
cin>>N;//输入数量
string temp;//字符串变量
vector<string> input; //存储所有的字符串
for(int i=0;i<N;i++){cin>>temp; //输入字符串input.push_back(temp);//保存
}
//以该例题为例,可能在本地IDE能得到正确答案,但如果是牛客网系统,由于输入格式的问题,这样写编译会通过,就是得不到正确答案

(3)输入一组字符串,不告知大小,仍然以上个例子举例,不告诉你有多少字符串,这样就不能根据数量来用for循环做了,但可以用while循环处理

string temp;//字符串变量
vector<string> input; //存储所有的字符串
while(cin>>temp){ //输入数量input.push_back(temp);//保存//...
}

输出
C++的输出cout与输入cin一样都是用流来控制的,cin和cout都在iostream这个头文件中,命名空间为std,因此使用的时候都要加上头文件和命名空间。输出相对来说简单一些,不会出现输入的一些问题,相反,cout输出有时候还可以帮助你解决题目,一下列举一些常见输出语句:

//输入一个数字再输出
int num;//定义
cin>>num;//输入
cout<<num<<endl;//输出并且换行//输入一个字符串再输出
string input;//定义
cin>>input;//输入
cout<<input<<endl;//输出并且换行//输入输出多个数据
int num1,num2;
string s1,s2;
cin>>num1>>s1;
cin>>num2>>s2;
cout<<num1<<s1<<' '<<num2<<s2<<endl;

小结
牛客网刷题应该对于互联网求职者来说必不可少,因为很多公司都用的这个线上系统,因而用到了其刷题的系统。实际手撕代码就是一片空白的场景下自己写头文件,写命名空间,写输入输出等,很多人在实际笔试或者面试时都吃了输入输出的亏,所以这个还是要平时多练习,多总结,把一些常见的输入输出格式都弄清楚很重要

牛客网刷算法题的输入输出(C++)相关推荐

  1. 牛客网刷编程题 2020年05月27日

    1.时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M 算法知识视频讲解 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于500 ...

  2. 判断作弊 牛客 编程_牛客网刷编程题

    1.时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M 算法知识视频讲解 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于500 ...

  3. LeetCode 牛客网 C++ 算法 刷题必备基础知识

    LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} 文章目录 LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} main综合模板 数组排序库 字符串库 ...

  4. 牛客网刷题 --- 输入输出数据处理

    正确处理输入输出格式 常见的输入格式: 预先不输入数据的组数 - 直接读到文件结尾 预先输入数据的组数 - 读数据组数然后循环 只有一组数据 - 直接读数据 处理输出格式要注意细节,看题目的具体要求 ...

  5. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  6. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  7. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  8. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  9. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

最新文章

  1. 微众银行AI团队开源联邦学习框架,并发布《联邦学习白皮书1.0》
  2. 基于移动机器人的拣货系统研究进展
  3. 未来网络经济的99个趋势报告
  4. 分享Kali Linux 2017年第30周镜像文件
  5. 盘点Git的那些冷门玩法
  6. 激活用户并让他留下,仅是“活下去”的第一步
  7. mongodb如何实现更新一个字段的值为另外一个字段的值?
  8. javaweb调用python算法_请教怎么用java远程调用python? 多谢
  9. Vagrant 构建 Linux 开发环境
  10. Jenkins+GitHub+Xcode+fir搭了一个持续集成环境
  11. npm下载安装教程_npm下载,安装和使用教程
  12. IDEA 2017 破解方法(附图)
  13. 计算机c 逻辑符号,c语言基本符号
  14. sagemath_同余运算总结
  15. 【GNSS】坐标系统
  16. 洛谷T46780 ZJL 的妹子序列(生成函数)
  17. c语言代码存放的区域 堆栈,C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)...
  18. usaco3.2.7香甜的奶油
  19. 一文搞懂JVM架构:微信抢红包实战案例
  20. ARMv7 汇编在线调试工具

热门文章

  1. 卡西欧4800坐标正反算通用程序(终极篇)
  2. Netstat常用参数及常用CMD命令总结
  3. 谈谈自己对目前新型冠状病毒疫情的想法
  4. 安全计算:使用ClamWin为高级用户提供免费病毒防护
  5. 漫画算法python篇_漫画算法:小灰的算法之旅(Python篇)(全彩)
  6. Monkey测试基础+ADB命令
  7. List------数据结构
  8. 使用微信+树莓派+Arduino+服务器构建你的看门狗
  9. windows 启动后台进程
  10. matlab 打包封装,matlab中如何封装打包成exe文件