请各位指点一下,这段代码为什么不能推出循环?
我是一个初学C++的新手,因此请各位在以后的学习过程中多多指教!不胜感激!这是我从一个教程搬下来的原代码:
#include <iostream.h>
int main()
{
int grade,
A=0, //90-100
B=0, //80-90
C=0, //70-80
D=0, //60-70
E=0; //60以下
cout<<"Enter the letter grades."<<endl
<<"Enter the EOF character to end input."<<endl;
cout<<"\nEOF="<<EOF<<endl; //这段代码是我自己添的,因为不知道EOF的值!输出结果EOF=-1
while((grade=cin.get())!=EOF){
switch(grade)
{
case'A':
case'a':
++A;
break;
case'B':
case'b':
++B;
break;
case'C':
case'c':
++C;
break;
case'D':
case'd':
++D;
break;
case'E':
case'e':
++E;
break;
case'\n':
case'\t':
case' ':
break;
default:
cout<<"Incorrect letter grade entered."
<<"Enter a new grade."<<endl;
break;
}
}
cout<<"\n\nTotals for each letter grade are:"
"\nA:"<<A
<<"\nB:"<<B
<<"\nC:"<<C
<<"\nD:"<<D
<<"\nE:"<<E<<endl;
return 0;
}
这段代码的目的是要根据学生成绩输入相应的ABCDE,当输入ABCDE或-1之外的字符时显示错误(执行代码):
default:
cout<<"Incorrect letter grade entered."
<<"Enter a new grade."<<endl;
break;
但当我输入-1时,却还是不能推出循环,执行了显示错误的那段代码!
分析:给grade赋值时,grade为int型,而输入的却是ABCDE等,但我想应该会转换成ASCII码值,所以我觉得这里为int没有错,同样-1也是一个int型的,但是始终不能结束循环!
解决:将grade改为char型,EOF用一个字符常量代替(字符串常量也不行)!
char grade;
int A=0, //90-100
B=0, //80-90
C=0, //70-80
D=0, //60-70
E=0; //60以下
cout<<"Enter the letter grades."<<endl
<<"Enter the EOF character to end input."<<endl;
cout<<"\nEOF="<<EOF<<endl;
while((grade=cin.get())!='n'){
虽然问题解决了,但始终想不明白,请给位多多指教!