刷题时经常需要输入多组数据,但是数据个数未知,这时候就不能以数据个数作为输入是否结束的判断标准了,可以通过以下方法来实现未知情况下的输入。
1.C语言:scanf语句会返回其成功读入的参数个数,例如scanf("%d",&a)返回值为1,因此我们可以用scanf返回值为-1判断是否输入结束。C语言使用EOF(End
Of File)来代表-1;
注意在黑框中输入数据时并不会触发EOF状态,因此需要我们按Ctrl+z手动触发EOF,此时框内会显示^Z,再按回车键即可退出循环。
(1)输入数字:
while(scanf("%d",&a)!=EOF){ cout<<a<<endl; }
(2)输入字符串:
方法一
while(gets(str)!=NULL){ cout<<str<<endl; }
方法二
while(scanf("%s",str)!=EOF){ cout<<str<<endl; }
2.C++:
(1)输入数字:
while(cin>>i){ cout<<i<<endl; }
(2)输入字符串:
while(getline(cin,s)){ cout<<s<<endl; }