刷题时经常需要输入多组数据,但是数据个数未知,这时候就不能以数据个数作为输入是否结束的判断标准了,可以通过以下方法来实现未知情况下的输入。

1.C语言:scanf语句会返回其成功读入的参数个数,例如scanf("%d",&a)返回值为1,因此我们可以用scanf返回值为-1判断是否输入结束。C语言使用EOF(End Of File)来代表-1;
注意在黑框中输入数据时并不会触发EOF状态,因此需要我们按Ctrl+v手动触发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;

}