多组输入(C语言)

多组输入

在平时写题的过程中,常常会有多组输入的要求,所以这里将对我常使用的多组输入方法总结一下。

当已知要多组输入的数据组数时:

方法一:

#include <stdio.h>

int main()
{
    int t,a;
    scanf("%d\n",&t);//这里t为要输入数据的组数
    while(t--)
    {
        scanf("%d",&a);
        printf("%d ",a);
    }
    return 0;
}

未知要输入数据的组数:

方法二:

#include <stdio.h>

int main()
{
	int a;
	while(scanf("%d",&a)!=EOF)
	{
		printf("输出:%d\n",a);
	}
	return 0;
}

//输入ctrl+z,结束输入 

方法三

#include <stdio.h>

int main()
{
	int a;
	while(~scanf("%d",&a))
	{
		printf("输出:%d\n",a);
	}
	return 0;
}

//输入ctrl+z,结束输入

原理:

方法一:

开始所输入的 t 的值为要输入的组数,在进入 while 循环时会先对 t 的值进行判断,判断是否为真(非 0 ),显然开始输入的 t 的不会为 0 ,然后 t 再进行自减,直至 t = 0 时结束。如此即可实现对已知组数的多组输入。

方法二:

总所周知,C语言是不自带输入语言的,要想实现输入数据就会常用文件 stdio.h 里的 scanf 函数。而 scanf 函数在正常读入的时候返回成功读入的数据项数,但当读入时遇到了“文件结束”时则会返回 EOF

例如:

int a,b;
scanf("%d%d",&a,&b);

如果 ab 都被成功读入,scanf 函数的返回值就为 2
如果只有 ab 中的一个被成功读入, scanf 函数的返回值为 1
如果 ab 都未被成功读入,返回值就为 0
但是如果遇到 错误文件结束,那么返回值为 EOF (end of file)。

所以,在测试时 scanf 函数读取的数据并且返回的值不是 EOF 即可进入循环,直到读取数据完毕,文件结束(EOF)。

但是在自己输入数据测试时,如果想要结束输入就要:

(1)windows平台,即dos命令窗口:

输入CTRL+Z即为文件结束。

(2)其它平台,如Unix, Linux,Mac等:

输入CTRL+D即为文件结束。

方法三:

~’ 为一元运算符,用于求整数的二进制反码,也就是对输入的数的二进制进行按位取反。

通过上面我们可以知道scanf 的返回值都为为大于等于 -1 的数,只有当 scanf 返回值为 -1(二进制表示为全为 1)时,~scanf() 的值为就为 0,其他情况均不为 0

所以对于方法三,正常的输入都会进入循环,而当遇到文件结束时就会结束循环。

在自己输入数据测试时,结束输入的方法也与方法二一样。

  • 46
    点赞
  • 244
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值