C ++程序如下
#include <iostream>
using namespace std;
int main(void) {
/* temporary storage for the incoming numbers */
int number;
/* we will store the currently greatest number here */
int max = -100000;
/* get the first value */
cin >> number;
/* if the number is not equal to -1 we will continue */
while(number != -1) {
/* is the number greater than max? */
if(number > max)
/* yes – update max */
max = number;
/* get next numbet */
cin >> number;
}
/* print the largest number */
cout << "The largest number is " << max << endl;
/* finish the program successfully */
return 0;
}
如果我输入一些号码,例如69 10 -1
。它会工作。
但是当我输入一些字符时,即使我输入-1
,它也没有停止。
例如a a -1 -1 -1
为什么呢?
答案 0 :(得分:2)
每次读取后都需要检查流状态。
字母a
不是正确的十进制数字,因此输入失败。当输入失败时,它会设置一个失败位,导致所有后续输入失败或不发生。
读取变量后,请务必检查输入状态。
如果要继续,恢复状态为clear
。
答案 1 :(得分:1)
因为您希望将输入语句作为while
条件,例如:
while (cin >> number) {
if(number == -1)
break;
if (number > max)
/* yes – update max */
max = number;
}