多组数据的输入方法(c语言)

多组数据的输入方法(c语言实现)

在这里插入图片描述

1.EOF法

因为在线评测系统的输入数据存放在一个文件中,因此可以通过文件是否结束的方式判断输入的数据是否结束。scanf在读取到文件结束符时,会返回标识EOF(end of life),EOF是一个预定义的常量,等于-1。通过判断scanf的返回值否为EOF决定是否退出循环。

例题:给定两个整数a,b,求这两个数之和
【输入】
输入数据有多行。每行数据中含有两个整数a,b(0<=a,b<=109)
【输出】
对每行数据,输出对应的a+b的值。
【样例输入】
123 500
60 80
70 90
【样例输出】
623
140
160
【代码实现】

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

2.计数法

在有些题目中,先给一个正整数,告诉数据输入的组数,然后根据这个数组进行读取。

例题:给定两个整数a,b,求这两个数之和
【输入】
输入数据中的第一行是一个正整数T(0<=T<=100)。接下来有T行数据。每行数据中含有两个整数a、b(-103<=a,b<=103)
【输出】
对每行数据,输出对应的a+b的值。
【样例输入】
2
123 500
60 80
【样例输出】
623
140
【代码实现】

 #include <stdio.h>
 int main()
 {
 	int T;
 	scanf("%d",&T);
 	for(int i=0;i<=T;i++)
 	{
 		int a,b;
 		scanf("%d%d",&a,&b);
 		printf("%d\n",a+b);
	 }
 	return 0;
 }

3.哨兵法

有些问题中不告诉循环次数,而是给定一个特殊值,表示输入的结束。这个特殊值被称为哨兵,因此这个输入方法称为哨兵法。

例题:给定两个整数a,b,求这两个数之和
【输入】
输入数据有多行。每行数据中含有两个整数a,b(0<=a,b<=109)。最后一行数据是0 0,标志输入结束。0 0一行本身不需要计算输出。
【输出】
对每行数据,输出对应的a+b的值。
【样例输入】
123 500
60 80
0 0
【样例输出】
623
140
【代码实现】

 #include <stdio.h>
 int main()
 {
 	int a,b;
 	scanf("%d%d",&a,&b);
 	while(a!=0||b!=0)
 	{
 		printf("%d\n",a+b);
 		scanf("%d%d",&a,&b);
	 }
	 return 0;
 }
  • 比较(纯个人心得体会)

1.EOF法常用于不知道几组数据,用while循环,利用scanf()的返回值结束时为EOF。
2.计数法用于知道几组数据,用for循环。
3.哨兵法用于不知道几组数据,用while循环。利用当遇到特殊值哨兵(最后输入的数据)时结束。

发布了17 篇原创文章 · 获赞 15 · 访问量 549

猜你喜欢

转载自blog.csdn.net/qq_46009744/article/details/104254035