1. 程式人生 > >小總結之switch語句——範圍劃分

小總結之switch語句——範圍劃分

碰到的題目如下: 程式設計實現:為某個學生寫評語,要求從鍵盤輸入該學生的學號和百分制成績,並將百分制成績轉換成4級制輸出。百分之成績與四級制等級的對應關係如下,輸入和輸出要求如下。 等級 分數段 A 100~90 B 89~80 C 79~60 D 60分以下 請輸入該學生的學號和成績:20170004 98 學生20170004成績等級為:A 只知道對於switch語句而言,case後面需要新增的是一個常量表達式,一開始並不清楚如何按分數段對應case的不同情況,因此依然選擇了使用if else語句來解決問題。 #include using namespace std; void main(void) { int num,score; cout << “請輸入該學生的學號和成績:” << endl; cin >> num >> score; char level; if (score >= 90 && score <= 100)level = ‘A’; else if (score >= 80)level = ‘B’; else if (score >= 60)level = ‘C’; else level = ‘D’; cout << “學生” << num << “成績等級為:” << level << endl; } 不過最後答案給出來還是深刻的感受了一把switch語句較if else語句的簡單便捷。 #include using namespace std; void main(void) { int num; double grade; char x; cout << “請輸入該學生的學號和成績:”; cin >> num >> grade; switch ((int)grade / 10) { case 10: case 9:x = ‘A’; break; case 8:x = ‘B’; break; case 7: case 6:x = ‘C’; break; default:x = ‘D’; } cout << “學生” << num << “成績等級為:” << x << endl; } 精妙之處在於語句“switch ((int)grade / 10);”,通過強制型別轉換符和除法的結合完美解決了此處分類的問題。以後要善於運用此方法解決問題。 相較而言,switch語句的邏輯結構更為清晰。並且在確定資料結構的過程中,一定要注意是要定義為int型別還是double型別。對於此處的成績,現實生活中,是有諸如80.5形式的分數存在,所以此處定義為double型別更為合適。