关于多组输入

最近我学了多组输入怎么操作。

多组输入就是有的题目给了一组数据测试后还没结束,还可以继续输入另一组数据测试。

这个核心应该是while循环。对于数字多组输入,条件是scanf返回值不等于EOF,

int a=0;

while(scanf("%d",&a)!=EOF){

}

scanf返回值是成功读取的变量个数,如scanf("%d %d",&a,&b)如果成功读取的话返回2;

如果scanf没有成功读取返回EOF,它是文件结束标志(end of file)。

如果成功读取,则不等于EOF循环就会进行,达到多组输入目的。

此外EOF本质是-1。补码是32个1。按位取反后就是0。~是按位取反符号。所以也可以写成

int a=0;

while(~scanf("%d",&a)){

}

当scanf返回EOF时候,~scanf("%d",&a)表示0,条件为0循环结束,这样也可以达到多组输入目的。

按位取反~ 和 !=EOF可任意选一个。

此外还有字符多组输入,需要注意的是消除 \n 。可以用getchar()等

​
#include<stdio.h>
int main()
{
	char ch=0;
	//当getchar()读取失败或读完 也会返回EOF 
	while((ch=getchar())!=EOF){
		//一次操作完成后用getchar()消除读入的\n,
		//这个\n是键盘上敲入一个字符后按了回车形成的 ,会影响后面的继续读入,故要消除 
		getchar(); 
	}
	return 0;
 }

​
	//一个字符也可以用scanf读入,这是可以在%c前面加一个空格,或后面加一个\n
	//达到消除\n的目的
	int a=0;
	while(scanf(" %c",&a)!=EOF)
	{
		
	 }
	 //或者
	 while(~scanf("%c\n",&a))
	 {
	 	
	  } 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值