20/07/13
输入的控制
在程序当中,我们时常会用到循环去控制一些输入,输出,计算,而控制循环次数的方法又有很多种,下面是get到的几点,来说一下。
1、程序自动控制
在程序当中,我们可以设置一个常量或者已初始化的变量,去对循环条件进行检测,如下:
int number;
for(int i = 0; i <= 5; i++) {
cin >> number;
if(number >= 10)
cout << number << endl;
}
int number;
int frequency =8;
for(int i = 0; i <= frequency; i++) {
cin >> number;
if(number >= 10)
cout << number << endl;
}
上面两个程序片段中,第一个程序就是设置的一个常量,来监测判断条件的,第二个程序则是多了一步,设置了一个变量来代替常量进行监测,在很多时候第一种方法都不是太方便,一般的第二种比第一种更加的适用。
2、人工控制(下面两个方法的名字是自己取的)
(1)变量法
int number;
int frequency;
cin >> frequency;
for(int i = 0; i <= frequency; i++) {
cin >> number;
if(number >= 10)
cout << number << endl;
}
上面这种方法比较的简单,就是变量的基础上,加上了一个人工输入的控制而已。好了,下面是今天的重点。
(2)输入检测法
int number;
for(;cin.fail() == false;) { //或者可以用for(;cin >> number;)不过需要删去循环体中的cin
cin >> number;
if(number >= 10)
cout << number << endl;
}
int number;
while(cin.fail() == false) {
cin >> number;
if(number >= 10)
cout << number << endl;
}
上面两种方法都可以实现,这取决于程序员,上面两个代码都可以让程序员随时停止循环(这取决于程序员),它的判断不是在编译或初始化的时候而是在实时运行的时候。我在查阅部分质料后,了解程序员可以通过输入+或同时用键盘输入ctrl和Z的流,以实现循环的终止,这种方法在比赛循环的控制中会比较实用(后面的控制循环终止再上交题目检测的时候,检测程序会帮你做的),当然可能你也发现了在这一种方法里面用while是刚好的,但是for就有些“大材小用”了。
最后说一下,上面的cin.fail()也可以换成cin.eof(),但是前者比后者的适用性更高,后者在现实中的兼容性不如前者。