这篇文章大多是总结前辈的经验,让自己可以更好的认识这个问题,在文章背后都有原文链接

1.多行输入数据

一般题中要求输入多组数据的意思就是读取数量不定的输入数据(不能确定输入数据的数量),在这种情况下,需要不断读取数据直至没有新的输入为止。

#include <stdio.h>
int main()
{int a;while(scanf("%d",&a)!=EOF){printf("%d\n",a);}return 0;
}

上面是使用C语言的的方法,把输入语句作为while循环的判断条件,当输入数据不是文件结束符(EOF)的时候,就可以实现连续输入
没有明确指出输入什么时候结束
如果是这种情况,我们默认是以“文件结束”(EOF)为结束标志。
可以将上述的EOF改为’\n’,里面改为printf(’’%d,a’’),表示为输入不为换行时持续输入,保证一行输入多个不定量数据。

#include <iostream>
using namespace std;
int main()
{for(int i;cin>>i;){cout << i << endl;}return 0;
}

方法二是用C++for循环实现,将输入语句作为for循环的condition部分,而expression部分省略不写,因为条件部分能改变i的值,所以这个循环无需表达式部分,其中,条件部分不断检查输入流的内容,只要读取完所有的输入或者遇到一个输入错误就终止循环

在另一个博主的文章里也总结了如何实现输入不定量数据,链接在文章最后,在这里直接复制粘贴他的总结一下,以便将问题得到更多方法的解决。

C语言
1.知道输入数据组数n
scanf("%d",&n);
whlie(n–){
这里处理每一组输入.然后直接按格式输出,没必要开数组存储答案.
}
2.没有数据总数,以EOF结束
可能用的几个函数:
scanf():
while(scanf("%s|%d")!=EOF){
处理每一组数据,并输出.
}
getchar():读入一个字符
whlie((ch=getchar())!=EOF){

}
gets():读入一行
while(gets(buf)!=NULL) {

}
用getchar,gets注意读入换行符.
3.以0或-1结束的输入.
while(scanf("%d",&n),n!=0) {

}

关于C++的输入输出处理
cin读字符串时遇到空白符(空格,换行等)结束
char str[BUFFER];
while (cin >> str) {
}
getline读字符串时遇到换行符结束,用于读一整行
char str[BUFFER];
while (cin.getline(str, BUFFER)) {
}
string str;
while (getline(cin, str)) {
}

cin/cout要比scanf/printf慢一些,尽可能使用scanf/printf以避免测试大量数据时因为输入输出慢而导致TLE. putchar/getchar要比scanf/printf更快

2.多行输入字符串

包含其他输入后读入多行字符串
例如一些编程题要求先输入字符串行数,然后再一行一行读入字符串。如果正常顺写编程的话,会发现第一行字符串读入的是空,后续才能正常录入每行字符串。
  这是因为第一行输入一个int数据后,换行符并没有被忽略,直接被准备读入第一行字符串的getline俘获。
  所以需要在第一行输入一个int数据后,调用cin.ignore()忽略下面的一个流录入,将其抛弃。

    int N;cin>>N;cin.ignore();  //取消换行键的读入string strCinLine[100];for(int i =0;i<N;i++)getline(cin,strCinLine[i]);

或者给strCinLine动态申请空间,节省空间开销。

    int N;cin>>N;cin.ignore();  //取消换行键的读入string* strCinLine = new string[N];for(int i =0;i<N;i++)getline(cin,strCinLine[i]);delete []strCinLine; //记得释放动态空间strCinLine = NULL;

3.EOF妙用

在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

main()
{int c;c=getchar();while(c!=EOF){putchar(c);c=getchar();}
}

当没有输入的时候,getchar会返回一个特殊值,这个值就是EOF。

4.采用总结所用到的文章

ACM 新手入门 之 如何实现多组输入输出
C/C++中输入多组数据方法
C/C++读入多行字符串string
后面的文章也有很好的解决方法,可以一起看看
C++:如何输入多行数字/字符串

多行输入以及结束输入相关推荐

  1. C语言程序设计——结构体的运用 完成对输入的字符串中C关键词的查找统计。程序运行示例如下:本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入:

    完成对输入的字符串中C关键词的查找统计. 程序运行示例如下: 本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入: if do while while do break goto hel ...

  2. JAVA——System.in作为控制台输入时结束输入(输入EOF)解决方案

    基本概念 EOF:EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取.资料源通常称为档案或串流.通常在文本的最后存在此字符表示资料结束. 解决方案 1.标 ...

  3. c语言输入回车结束输入

    #include<stdio.h> int main(){int x;do{x = getchar();printf("%c",x);}while(x!='\n');r ...

  4. c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...

    c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,0 HIDE152019.04.28浏览4次分享举报 c语言输入一段文字,每行用回车结束,文字输入完毕可以 ...

  5. 67.输入若干行文本,每行以回车结束,以 ctrl+z 作为结束符,统计其行数

    67.从键盘输入若干行文本,每行以回车结束,以 ctrl+z 作为输入结束符,统计其行数. 此文转载,如有错误,看着办,博主会点 //67.输入若干行文本,每行以回车结束,以ctrl+z为结束符,统计 ...

  6. 4、题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出。 * * 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一个

    题目: /* 4.题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式:测试输入包含若干测试用例,每个测试用例的格式为   第1行:N   第2行:N名学生的成绩,相邻两数字用一 ...

  7. python怎么多行输入_python如何输入多行

    Python中的Input()函数在输入时,遇到回车符,那么一次输入就结束了.这不能满足输入多行文本并且行数也不确定的情形,当然输入空行也是允许的. 方法1:利用异常处理机制实现lines=[] wh ...

  8. C语言输入end时结束程序,c语言输入eof结束怎么写

    1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...

  9. c语言eof不起作用,c语言程序设计 怎么以输入EOF结束

    EOF(EndOfFile)是C语言中的文件结束标志符.当C语言输入函数获取到文件结尾标志时,会通过返回值的方式体现该值.所以要以输入EOF为结束,就需要判断输入函数的返回值.EOF定义在stdio. ...

最新文章

  1. javascript获取系统时间时区_5个JavaScript技巧让你成为更好的开发者
  2. niginx高性能原因
  3. 4k hidpi 黑苹果_【ITX小钢炮】黑苹果安装经验分享
  4. Struts2 + MySQL 实现分页
  5. 奔涌吧,前浪,追击吧,后浪
  6. 通过Intent传递类对象
  7. hive字段乱码问题(解决)
  8. JAVA-Servlet操纵方法
  9. linux常用命令(21)tar命令
  10. nb物联网 bc95模块联网 bc95使用
  11. c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据
  12. 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
  13. ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
  14. jenkins打包报Archiving artifacts
  15. 学校学业水平测试软件,中小学生学业水平测试
  16. CSMA/CD 协议
  17. java-php-python-医院挂号管理系统计算机毕业设计
  18. 软件设计之UML—UML的构成[上]
  19. BIM技术都是如何应用于水利工程中
  20. 三国志战略版:Daniel_S3三势阵容_吕太郭VS贾赵左

热门文章

  1. 教你如何鉴别原装和组装线孔耳机
  2. rstudio中johansen协整检验代码
  3. 求问R语言 分层抽样 合并两个数据框为什么出现了空集
  4. flink-cdc 环境搭建 version 1.14.3
  5. 关于wangEditor 5的使用以及使用的一些错误
  6. 设计一套简单的计算机系统及其指令系统,【精品】计算机组成综合设计指导书...
  7. 11-27 概率论两种收敛方式
  8. win10家庭版如何安装Windows Sandbox
  9. Redis数据类型实践
  10. GROUP BY小插曲