牛客网 C++ 输入、输出常用格式 您所在的位置:网站首页 C输出牛 牛客网 C++ 输入、输出常用格式

牛客网 C++ 输入、输出常用格式

2023-09-16 15:21| 来源: 网络整理| 查看: 265

牛客网的刷题系统大部分都是要自己控制输入输出的,有输入输出的编程就会出现各种格式问题,(说到底在输入输出上出现问题可能还是对语言基础掌握不牢),

下面就是一些常见的输入输出问题(如果leetcode刷习惯了,估计会经常采坑)

 

while(cin)说明

下面谈到的输入问题其实都建议用while(cin)的形式,最主要的原因是由于牛客网在线编程和实际考试的系统中测试代码用的都是多组测试用例,如果不用while(cin)的形式或许某些情况下会正确,但是用的话基本上都能保证测试的正确性。

其实这样也是很正常的,因为代码已经编译运行过了一次,直接在该次运行中进行多组测试即可,无需多次重复编译运行。

 

输入

几乎所有的输入都是数字或者字符串,根据数字和字符串可以将输入分为几种情况:

 一、先说数字(通常给定一组数,或者给定给一个数组)(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>stu[i].name>>stu[i].num;//输入姓名和学号 } } //也可以不用while循环(不推荐,除非用while不好处理或者处理不了) int N; cin>>N; for(int i=0;i>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 input; //存储所有的字符串 for(int i=0;i>temp; //输入字符串 input.push_back(temp);//保存 } } //下面是另一种不安全的写法 int N;//定义数量 cin>>N;//输入数量 string temp;//字符串变量 vector input; //存储所有的字符串 for(int i=0;i>temp; //输入字符串 input.push_back(temp);//保存 } //以该例题为例,可能在本地IDE能得到正确答案,但如果是牛客网系统,由于输入格式的问题,这样写编译会通过,就是得不到正确答案

  

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

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

  

 

输出

C++的输出cout与输入cin一样都是用流来控制的,cin和cout都在iostream这个头文件中,命名空间为std,因此使用的时候都要加上头文件和命名空间。

输出相对来说简单一些,不会出现输入的一些问题,相反,cout输出有时候还可以帮助你解决题目,一下列举一些常见输出语句:

//输入一个数字再输出 int num;//定义 cin>>num;//输入 coutnum2>>s2; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有