| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:请各位指点一下,这段代码为什么不能推出循环?
只看楼主 加入收藏
lyw19841018
Rank: 1
来 自:四川自贡
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-6-19
收藏
 问题点数:0 回复次数:0 
请各位指点一下,这段代码为什么不能推出循环?
我是一个初学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'){
虽然问题解决了,但始终想不明白,请给位多多指教!
搜索更多相关主题的帖子: 求助! 
2008-08-24 10:44
快速回复:请各位指点一下,这段代码为什么不能推出循环?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015908 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved