作業頭
這個作業屬於哪個課程 | C語言程序設計II |
這個作業的要求在哪里 | C語言I作業07 |
我在這門課程的目標是 | 學好C語言為學習以后學習其他的語言做准備 |
這個作業在那個具體方面幫助我實現目標 | 對while循環語句的運用,思考能力等 |
參考文獻 | 《C語言程序設計I》,Dev-c++. |
1.PTA實驗作業
1.1統計學生成績
1.題目內容描述:
要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:
- 大於等於90分為A;
- 小於90且大於等於80為B;
- 小於80且大於等於70為C;
- 小於70且大於等於60為D;
- 小於60為E。
1.1.1數據處理.
1.數據表達:
- (1).定義了n(學生人數),x(學生成績),i(為增量,記錄應輸入多少個成績),A,B,C,D,E,F,G,H,I,J,K分別為記錄達到某個等次的次數,都為整型。
- (2).運用了for()循環語句,還有switch語句。
2.數據處理: - (1).循環結構.for(i=1;i<=n;i++) ,switch(x/10)。
- (2).運算處理. E+=F+G+H+J+K;A++,B++,C++,D++,E++,F++,G++,H++,J++,K++.
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
6 | 輸出數據 | 每一個等次都有 |
5 | 輸出數據 | 分數都小於60 |
5 | 輸出數據 | 分數都在60到70之間 |
5 | 輸出數據 | 分數都在70到80之間 |
10 | 輸出數據 | 分數在每個等次都有涉及 |
1.1.4 PTA提交列表及說明
- 根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法.
- 1編譯錯誤:開始的時候沒有對F,G,H,I,J定義;
- 2部分正確:沒有對F,G,H,I,J,K達到某個等次的次數進行合並。
1.2 計算天數
1.題目內容描述:
- 要求編寫程序計算某年某月某日是該年中的第幾天。
1.2.1數據處理.
1.數據表達:
- (1).定義了 Year,Month,Day,n(天數求和),都為整型。
- (2).運用了if()條件語句,還有switch語句。
2.數據處理: - (1).結構類型:分支結構;if-else條件語句[if((Year%40&&Year%100!=0)||(Year%4000))];switch(Month)語句.
- (2).運算處理:n+=Day;
1.2.2實驗代碼截圖
1圖片 | 2圖片 |
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
2000/04/05 | 96 | 閏年 |
2099/10/30 | 303 | 非閏年 |
1.2.4 PTA提交列表及說明
- 根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法.
- 1部分正確:開始不知道用if-else將閏年與非閏年分開運行,只進行了閏年的代碼。
- 2部分正確:閏月二月份是29天我寫成了28天。
2.代碼互評
1同學代碼截圖
2同學代碼截圖
3自己代碼截圖
與第一位同學的區別
- 1與第一位同學的區別在於她只是用了A,B,C,D,E這幾個增量;而我還用了F,G,H,I,J,K這些增量,還要對屬於E等次的求和,挺麻煩的;
- 2還有她用到了default,對於沒有對應的5,4,3,2,1,0;就直接輸出E,對此類題用到default的需要蠻大,值得學習。
與第二位同學的區別 - 1與第二位同學的區別在於我是略復雜變量的表達式,她是一個簡單變量的表達式,因為她在表達式外已經運算好了;
- 2她case后的表達式比較簡單,而我的太復雜了,她的代碼與第一位同學的代碼在10與9這里一個是否合並成一個A++,這個也是一個技巧,值得學習。
3.學習總結
3.1學習進度條
時間 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
第一周 | 16個小時 | 28行 | 學到了編寫代碼的基本知識,如:順序結構 | 符號(英)與(漢)混淆 |
第二周 | 20個小時 | 20行 | 學到了運算符,賦值 | 主要是賦值,在printf中“="左右要空格其他就不用了 |
第三周 | 23個小時 | 98行 | 學到了分支結構(if-else),&&,%,冪運算pow,平方根sqrt | 對一些新知識不能馬上運用 |
第四周 | 16個小時 | 70行 | 學到了for語句,求小數點(要求用1.0來除以···),還有該變正負號知識 | 現在沒問題了,在scanf()內&n&m之間要用“," |
第五周 | 26個小時 | 62行 | 學到了while循環語句,定義函數和調用函數的運用. | 在定義函數后不知道如何運用 |
第六周 | 22個小時 | 154行 | 學到了if-else if-else的深入使用、用代碼解決數學(函數)問題、如求一個數的個,十,百,千位等,還有求成績的平均值,龜兔賽跑誰快誰慢 | 對想表達的意思不能夠很好的用代碼表達 |
第七周 | 20個小時 | 136行 | 學到了switch語句的使用,雖然if-else分支結構可以完全取代switch的語句,但是switch也有它的優勢,少量選擇比較快捷。 | 對switch語句中不清楚如何嵌入if-else結構 |
3.2累計代碼行數和博客字數.
3.3 學習內容總結和感悟
3.3.1 學習內容總結
請用思維導圖的形式將到目前為止所學的內容進行整理。
3.3.2學習體會
1此次作業讓我明白了在編寫程序的過程中,可以用不同的語句,分支結構來解決同一個問題,解決一個關於分支的問題,用switch可以解決的問題,同時if-else同樣也可以解決,雖然if-else運用廣泛,switch也有自己的優勢,如:少量選擇比較快捷,case的數量沒有任何的限制。
2此次作業讓我學會了分支結構switch的運用技巧(1):每一個case后的表達式的返回值必須是獨一無二的。不能和其他的case后的值相等。(2):每一個case后的break都是可以沒有的。根據具體的要求來判斷。(3):在switch語句中,一旦執行了某一個case中的代碼塊,那么就不再進行任何case的比較,后續的代碼都將順序被執行,直到遇到了break,或者是default語句,整個switch才能被結束。(5):default語句可以沒有,看題目的需求(在統計學生成績這個題上就充分體現了)。
3琛哥本次pta上第二個編譯題有點小問題,讓我運行了蠻久,相信下次作業實例模板因該會更好,如果不清楚學校代號是哪個學校,則輸出"OtherUniversity"。我運行了很久總是出現格式錯誤,后來同過與另外幾個學校的英文單詞對比發現因該要在Other后加上空格,才解決了格式錯誤