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匹配,从而消除程序的二义性
浙公网安备 33010602011771号