| 這個作業屬於哪個課程 | C語言程序設計II |
|---|---|
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11555 |
| 我在這個課程的目標是 | 熟悉多分支結構switch語句的使用,學習他人優秀的解題方法 |
| 這個作業在那個具體方面幫助我實現目標 | 做PTA上的作業,互評作業 |
| 參考文獻 | C語言程序設計 |
1.PTA實驗作業(20分/題)

1.1 計算天數
本題要求編寫程序計算某年某月某日是該年中的第幾天。
輸入格式:
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
輸出格式:
在一行輸出日期是該年中的第幾天。
輸入樣例1:
2009/03/02
輸出樣例1:
61
輸入樣例2:
2000/03/02
輸出樣例2:
62
1.1.1數據處理
數據表達:所用變量:year,month,day,a,b,c,y;這些變量的值的來源:year,month,day是用戶輸入的值;a,b,c分別是year/4,year/100,year/400取余的值,y是根據a,b,c,month的
值以及表達式得出來的;類型:整型(int)。
數據處理:數據用到的表達式:a = year % 4,b = year % 100,c = year % 400,:y = day,y = 31 + day,y = 60 + day,y = 91 + day,y = 121 + day,y = 152 + day,y =
182 + day,y = 213 + day,y = 244 + day,y = 274 + day,case 11:y = 305 + day,y = 335 + day,y = day,y = 31 + day,y = 59 + day,y = 90 + day,y = 120 + day,y
= 151 + day,y = 181 + day,y = 212 + day,y = 243 + day,y = 273 + day,y = 304 + day,y = 334 + day;流程結構:選擇結構。
1.1.2實驗代碼截圖

1.1.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 2009/03/02 | 61 | 該年年份能被4整除,不能被100和400整除 |
| 2000/03/02 | 62 | 該年年份能被4,100和400整除 |
| 2006/05/05 | 125 | 該年年份不能被4,100和400整除 |
| 2020/11/25 | 330 | 該年年份能被4整除,不能被100和400整除 |
| 1900/06/09 | 160 | 該年年份能被4和100整除,不能被400整除 |
1.1.4 PTA提交列表及說明

1.編譯錯誤:switch語句中case后的符號錯誤;
解決辦法:剛開始還沒發現,仔細看書上的switch語句后發現case后的符號不是‘ ; ’而是‘ : ’,改完后又出現了部分錯誤;
2.部分錯誤:if語句的判斷符號錯誤;
解決辦法:仔細檢查一遍后,發現在判斷相等時,將‘==’寫成了‘=’,后將其改正過來了,提交后答案顯示正確。
1.2 多分支表達-倍數問題
1.2.1 數據處理
數據表達:所用變量:A,x,y,z,a;這些變量的值的來源:A是用戶輸入的值;x,y,z分別是A/3,A/5,A/15取余的值;類型:整型(int)。
數據處理:數據用到的表達式:x = A % 3,y = A % 5,z = A % 15;流程結構:選擇結構。
1.2.2 實驗代碼截圖

1.2.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 18 | 3 | 該數是3的倍數但不是5的倍數 |
| 20 | 2 | 該數是5的倍數但不是的倍數 |
| 13 | 13 | 該數小於15,且既不是3的倍數也不是5的倍數 |
| 26 | 11 | 該數大於15,且既不是3的倍數也不是5的倍數 |
| -30 | (沒有任何輸出) | 該數不是正整數,且既是3的倍數又是5的倍數 |
1.2.4 PTA提交列表及說明

1.部分錯誤:在if語句中多了符號;
解決辦法:這個錯誤找了很久,最后卻發現是一個很小的錯誤,if后的括號里多打了引號,當時因為那個括號里的和其他括號里的顏色標記不同就感覺奇怪,看了很久后才發現了問題,
改正后,顯示答案正確。
2.代碼互評(5分)
尹志成同學代碼截圖

鄭九龍同學代碼截圖

自己代碼截圖

1.尹志成同學解題時先是運用switch語句,再運用if-else語句來解題的,使后半部分簡便了許多,而我的大部分使用switch語句,表達式太多;
2.鄭九龍同學運用了if-else語句來解題,他所寫的使代碼簡便了許多,在考慮問題方面也更全面,我所寫的明顯長了一大串;
3.我運用了if-else語句和switch語句來解題的,我所寫的有一部分再改變一下或換一種方式解題應該可以更簡便些。
3.學習總結(15分)
3.1 學習進度條(5分)
| 周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 第三周 | 4天 | 156 | for語句 | 在綜合表達式中,不知道為什么不能用"[ ]" |
| 第四周 | 2天 | 169 | 函數的定義和調用 | 函數的定義和調用的格式不太懂 |
| 第五周 | 3天 | 192 | 分支結構if-else語句和字符型(char) | 有同學作業中運用到的沒學過的知識不太理解 |
| 第六周 | 3天 | 278 | 選擇結構中的switch語句 | 解題時不能很快判斷出用if-else語句好些還是用switch語句好些 |
3.2 累積代碼行和博客字數(5分)
| 時間 | 博客字數 | 代碼行數 |
|---|---|---|
| 第一周 | 638 | 12 |
| 第二周 | 562 | 97 |
| 第三周 | 2058 | 156 |
| 第四周 | 1737 | 169 |
| 第五周 | 2520 | 192 |
| 第六周 | 1780 | 278 |

3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結

3.3.2 學習體會
1、這周學了選擇結構中的switch語句,剛開始在做題的時候使用時,容易將case后的冒號打成分號;
2、在寫代碼的時候,有幾個地方容易出錯,比如在判斷時將==打成= ;
3、在之后的學習過程中,吸取之前出現的錯誤,多練多想,多學習他人優秀的解題方法。
