多行输入以及结束输入
这篇文章大多是总结前辈的经验,让自己可以更好的认识这个问题,在文章背后都有原文链接
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++:如何输入多行数字/字符串
多行输入以及结束输入相关推荐
- C语言程序设计——结构体的运用 完成对输入的字符串中C关键词的查找统计。程序运行示例如下:本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入:
完成对输入的字符串中C关键词的查找统计. 程序运行示例如下: 本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入: if do while while do break goto hel ...
- JAVA——System.in作为控制台输入时结束输入(输入EOF)解决方案
基本概念 EOF:EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取.资料源通常称为档案或串流.通常在文本的最后存在此字符表示资料结束. 解决方案 1.标 ...
- c语言输入回车结束输入
#include<stdio.h> int main(){int x;do{x = getchar();printf("%c",x);}while(x!='\n');r ...
- c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...
c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,0 HIDE152019.04.28浏览4次分享举报 c语言输入一段文字,每行用回车结束,文字输入完毕可以 ...
- 67.输入若干行文本,每行以回车结束,以 ctrl+z 作为结束符,统计其行数
67.从键盘输入若干行文本,每行以回车结束,以 ctrl+z 作为输入结束符,统计其行数. 此文转载,如有错误,看着办,博主会点 //67.输入若干行文本,每行以回车结束,以ctrl+z为结束符,统计 ...
- 4、题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出。 * * 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一个
题目: /* 4.题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一 ...
- python怎么多行输入_python如何输入多行
Python中的Input()函数在输入时,遇到回车符,那么一次输入就结束了.这不能满足输入多行文本并且行数也不确定的情形,当然输入空行也是允许的. 方法1:利用异常处理机制实现lines=[] wh ...
- C语言输入end时结束程序,c语言输入eof结束怎么写
1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...
- c语言eof不起作用,c语言程序设计 怎么以输入EOF结束
EOF(EndOfFile)是C语言中的文件结束标志符.当C语言输入函数获取到文件结尾标志时,会通过返回值的方式体现该值.所以要以输入EOF为结束,就需要判断输入函数的返回值.EOF定义在stdio. ...
最新文章
- javascript获取系统时间时区_5个JavaScript技巧让你成为更好的开发者
- niginx高性能原因
- 4k hidpi 黑苹果_【ITX小钢炮】黑苹果安装经验分享
- Struts2 + MySQL 实现分页
- 奔涌吧,前浪,追击吧,后浪
- 通过Intent传递类对象
- hive字段乱码问题(解决)
- JAVA-Servlet操纵方法
- linux常用命令(21)tar命令
- nb物联网 bc95模块联网 bc95使用
- c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据
- 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
- ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
- jenkins打包报Archiving artifacts
- 学校学业水平测试软件,中小学生学业水平测试
- CSMA/CD 协议
- java-php-python-医院挂号管理系统计算机毕业设计
- 软件设计之UML—UML的构成[上]
- BIM技术都是如何应用于水利工程中
- 三国志战略版:Daniel_S3三势阵容_吕太郭VS贾赵左