Ctrl+z 退出多组输入
1.scanf会返回成功读取的变量个数,例如只输入了一个变量就返回1。
while(scanf("%d",&a)==1)
2.读取失败时返回EOF(-1)。
while(scanf("%d%d",&a,&b)!=EOF)
3.读取失败时返回EOF,而~EOF对EOF按位取反即得到0,循环为假结束。
while(~scanf("%d%d",&a,&b))
{
printf("%d\n",a+b);
}
4.计数法
在有些题目中,先给一个正整数,告诉数据输入的组数,然后根据这个数组进行读取。
例题:给定两个整数a,b,求这两个数之和
【输入】
输入数据中的第一行是一个正整数T(0<=T<=100)。接下来有T行数据。每行数据中含有两个整数a、b(-103<=a,b<=103)
【输出】
对每行数据,输出对应的a+b的值。
输入样例
1 20
45 64
输出样例
21
109
代码示例:
#include <stdio.h>
int main()
{
int T;
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
return 0;
}
5.哨兵法
有些问题中不告诉循环次数,而是给定一个特殊值,表示输入的结束。这个特殊值被称为哨兵,因此这个输入方法称为哨兵法。
输入样例:
45 65
58 52
0 0
输出样例:
110
110
代码示例:
#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.2.3常用于不知道几组数据,用while循环,利用scanf()的返回值结束时为EOF。
4.计数法用于知道几组数据,用for循环。
5.哨兵法用于不知道几组数据,用while循环。利用当遇到特殊值哨兵(最后输入的数据)时结束。