1.输入不说明有多少个Input,以EOF为结束标志
(1)这里要说明的是如果输入 1 2 3 4 (回车),这时会输出 3 7,但不会输出count,因为这里回车并不是EOF,作用是刷新输出buffer,但并不是文件输入结束的标志。通常EOF是crtl+Z!
#include<stdio.h>
int main()
{
int a, b,count = 0;
while(scanf("%d%d",&a, &b) != EOF)
{
count ++;
printf("%d\n",a + b);
}
printf("The couple of data is: %d\n",count);
return 0;
}
(2)但是使用scanf会有很多bug:Scanf返回2(2个输入),返回1(1个输入),格式不正确异常返回0,输入EOF返回-1。经过测试发现只有输入回车+ctrlZ的时候scanf才会正常的返回-1,其他任何输入方式都会返回0,从而是while无法停止,具体没看了,所以还是最好用cin,cout进行输入输出控制..
(3)经过测试发现:无论输入的是单数个数据还是双数个数据,输入ctrlZ时有没有空格,都可以得到正确结果
#include <iostream>
using namespace std;
int main()
{
while(cin>>a>>b)
{
count++;
cout<<a+b<<endl;
}
cout<<"The couple of data is: "<<count<<endl;
}
2. 输入指定输入个数
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a>>b;
cout<<a+b<<endl;
}
3.未知输入数目,以某个特定字符为结束符
(1)输入两个0 0 就结束了
while(scanf("%d %d",&a,&b) &&(a!=0 && b!=0)) 由于&&运算符是短路运算,所以,如果你输入的是0 5,输入正确,a!= 0为假,整个逻辑表达式的值就为假,跳出结束程序,与题目输入规则相矛盾!
while(scanf("%d%d",&a,&b))
{
if(0 == a && 0 == b)
break;
printf("%d\n",a + b);
}
(2)输入换行就结束了,注意这在cin中是不行的,因为cin是不认换行符的..
char c='0';
while(c!='\n')
{
scanf("%d",&a);
//printf("%d ",a);
scanf("%c",&c);
}
cout<<"Hello!!"<<endl;