c++ primer 5.3.1节练习答案

练习5.5

 1 int main()
 2 {
 3     int scores;
 4     string c_grade;
 5     vector<string> grade{ "F", "D","C","B","A","S" };
 6     while (cin >> scores)
 7     {
 8         if (scores <= 100 && scores >= 0)
 9         {
10             if (scores < 60)
11             {
12                 c_grade = grade[0];
13                 cout << c_grade << endl;
14             }
15             else
16             {
17                 c_grade = grade[(scores - 60) / 10 + 1];
18                 cout << c_grade << endl;
19             }
20         }
21     }
22     system("pause");
23     return 0;
24 }

练习5.6

 1 int main()
 2 {
 3     int scores;
 4     string c_grade;
 5     vector<string> grade{ "F", "D","C","B","A","S" };
 6     while (cin >> scores)
 7     {
 8             c_grade = (scores <=100 && scores >= 0) ? ((scores < 60) ? (grade[0]) : (grade[(scores - 60) / 10 + 1])) : "error";
 9             cout << c_grade << endl;
10     }
11     system("pause");
12     return 0;
13 }

练习5.7

a)第二句漏写分号

b)if后面的两句应该在语句块内,用花括号括起来

c)下面的if应该嵌套在上面的if内

d)条件语句内的条件是相等性测试而不应该是赋值

练习5.8

else与if的匹配问题被称为悬垂else,C++规定else与离他最近的尚未匹配的if匹配,从而消除程序的二义性

posted @ 2017-08-01 15:16  五月份小姐  阅读(389)  评论(0)    收藏  举报