我在学到<<C++大学教程>>第二章 控制结构时,在2.16 switch 多项选择结构(P69)小节,其中有一道例题(用switch计算学生考试的每一级人数),编译通过也可以运行,但无法退出while循环,源程序是: 我在学到<<C++大学教程>>第二章 控制结构时,在2.16 switch 多项选择结构(P69)小节,其中有一道例题(用switch计算学生考试的每一级人数),编译通过也可以运行,但无法退出while循环,源程序是: // Fig. 2.22: fig02_22.cpp int main ( ) cout << “Enter the letter grades.” << endl while ( ( grade = cin.get () ) != EOF ) { switch ( grade ) { // switch nested in while ( while中嵌套switch ) case “”A””: // grade was uppercase A ( 等级是大写字母A ) case “”B””: // grade was uppercase B case “”C””: // grade was uppercase C case “”D””: // grade was uppercase D case “”F””: // grade was uppercase F case “”\n””: // ignore newlines, default: // catch all other characters cout << “\n\nTotals for each letter grade are:” // 每个字母等级的总数是 while ( ( grade = cin.get () ) != EOF )语句表示输入EOF退出while结构,但在执行时没有用,书上说EOF是<iostream.h>头文件中定义的符号化整型常量,与系统有关,不知道是不是这个问题,我用的是WinME. |
|
^Z or F6
|
|
EOF好象多用于文件流的结束标记,你可以用其它字符嘛:)
至于在命令提示符下结束,你试试Ctrl+Z |
|
用ctrl+z(dos)
|
|
10分 |
#include<iostream.h >
#include<fstream.h> //using namespace std; ifstream in(“grade.txt”); int main ( ) { int grade, // one grade aCount = 0, // number of A””s bCount = 0, // number of B””s cCount = 0, // number of C””s dCount = 0, // number of D””s fCount = 0; // number of F””s cout << “Enter the letter grades.” << endl << “Enter the EOF character to end input.” << endl; // 输入EOF评分结束 while ( ( grade = in.get () ) != EOF ) { switch ( grade ) { // switch nested in while ( while中嵌套switch ) case “”A””: // grade was uppercase A ( 等级是大写字母A ) case “”a””: // or lowercase a ( 或小写字母a ) ++aCount; break; // necessary to exit switch case “”B””: // grade was uppercase B case “”b””: // or lowercase b ++bCount; break; case “”C””: // grade was uppercase C case “”c””: // or lowercase c ++cCount; break; case “”D””: // grade was uppercase D case “”d””: // or lowercase d ++dCount; break; case “”F””: // grade was uppercase F case “”f””: // or lowercase f ++fCount; break; case “”\n””: // ignore newlines, case “”\t””: // tabs, case “” “”: // and spaces in input break; default: // catch all other characters cout << “Incorrect letter grade entered.” // 不正确的字母输入 << ” Enter a new grade.” << endl; // 重新输入 break; // optional } } cout << “\n\nTotals for each letter grade are:” // 每个字母等级的总数是 << “\nA: ” << aCount << “\nB: ” << bCount << “\nC: ” << cCount << “\nD: ” << dCount << “\nF: ” << fCount << endl; return 0; } 这样不是可以了吗?? |
应该是Ctrl+z或F6。如果你在dos下用过copy con就会知道了。
|
|
倒是可以退出了,不过评分无法输入了。
另外#include< fstream.h> 和 ifstream in(“grade.txt”); 是啥意思? |
|
10分 |
#include<fstream.h>时针对于文件的IO流
ifstream in(“grade.txt”); 是将grade.txt作为输入文件,in指向该文件头。 |