1.作業頭
這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11553 |
這個作業的目標 | <通過寫較長的代碼提升我們的邏輯思維和培養我們對編程的興趣,同時也會讓我們變得更加有耐心。> |
學號 | <20209136> |
一、本周教學內容&目標
第3章 分支結構 3.3 使學生熟悉多分支結構switch語句的使用。
二、本周作業頭
這個作業屬於哪個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11553 |
我在這個課程的目標是 | <熟悉掌握多分支結構switch語句的使用,清楚的理解switch語句的使用邏輯。> |
這個作業在哪個具體方面幫助我實現目標 | <寫代碼的思路,邏輯思維,數學知識的運用> |
參考文獻 | <C語言程序設計> |
三、本周作業
1.PTA實驗作業
2.代碼互評
3.學習總結
四、作業格式
1.PTA實驗作業
請在此處列出自己的排名圖片:
從PTA題目集中選出2個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題20分(每項5分),內容要求如下:
1.1題目名1: 前天是哪天
題目內容描述:
本題目要求讀入年、月、日,然后判斷前天日期。
1.1.1數據處理
介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。
數據表達:用到了year,month,day,time四個變量。year,month,day的值通過調用輸入函數獲取用戶輸入的數值再進行賦值,其屬於整型變量。time的值通過判斷每一種不同的情況后根據題目要求進行變換,例如閏年的3月1日的前天是2月28日,此時就直接將28賦值給time,而不是將time-2賦值給time,也屬於整型變量。
數據處理:用到了賦值表達式time=time-2,time=30等等,用到了多分支if-else結構。
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2020 5 20 | 2020-5-18 | 2020年5月20日的前天是2020年5月18日 |
2021 3 1 | 2021-2-27 | 2021年3月1日的前天是2021年的2月27日 |
2018 2 20 | 2018-2-18 | 2018年2月20日的前天是2018年2月18日 |
1966 1 24 | 1966-1-22 | 1966年1月24日的前天是1966年1月22日 |
2012 1 2 | 2011-12-31 | 2012年1月2日的前天是2011年12月31日 |
2017 3 2 | 2017-2-28 | 2017年3月2日的前天是2017年的2月28日 |
1.1.4 PTA提交列表及說明
根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法。
提交列表說明:
1.答案錯誤:首先判斷是否是閏年時,代碼if( (year%4==0 || year%100!=0)|| (year%400==0))誤用了邏輯或,導致答案錯誤。后將邏輯或改成邏輯與完成修改。
2.答案錯誤:發現每個答案都是錯誤的,於是仔細審題將輸出語句中%d %d %d改成%d-%d-%d。
3.部分正確:將閏年中有特殊情況的月份當成2月了,因為這是求前天,所以3月1或者3月2的前天才會涉及到2月的天數。正確修改后進行提交。
4.部分正確:腦子一熱只在上個問題中修改了閏年中的錯誤,忘記了修改非閏年中的錯誤,正確提交后顯示答案正確。
1.2題目名2:計算天數
題目內容描述:
本題要求編寫程序計算某年某月某日是該年中的第幾天。
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
1.2.1數據處理
介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。
數據表達:用到了year,month,day,number,i,s這六個變量。number的值根據判斷后的情況再被賦相應的值,四種情況,number=30,number=31,number=29,number=28其屬於整型變量。year,month,day的值通過調用輸入函數獲取用戶輸入的數值再進行賦值,其屬於整型變量。i與s開始就分別被1與0賦值,不過i在后面的循環中依次遞增1,其都屬於整型變量。
數據處理:用到了賦值表達式s=s+number,number=30等。用到了if-else分支結構,多分支結構switch語句,while循環語句。
1.2.2實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2001/04/19 | 109 | 年份為非閏年2月有28天,結果是該年的第109天。 |
2520/05/20 | 141 | 此年份為閏年2月有29天,結果是該年的第141天。 |
1999/11/26 | 330 | 年份為非閏年2月有28天,結果是該年的第330天。 |
1583/07/14 | 195 | 年份為非閏年2月有28天,結果是該年的第195天。 |
2007/10/08 | 281 | 年份為非閏年2月有28天,結果是該年的第281天。 |
2020/04/19 | 110 | 此年份為閏年2月有28天,結果是該年的第110天。 |
2019/12/09 | 343 | 年份為非閏年2月有28天,結果是該年的第343天。 |
1.2.4 PTA提交列表及說明
根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法。
提交列表說明:
1.部分正確:第二個while循環體中丟了i++導致非閏年中的計算出錯,重新修改后再次提交。
2.編譯錯誤:修改過程中不小心刪去了引號和括號導致編譯錯誤,正確添加后再提交顯示答案正確。
2.代碼互評
同學代碼截圖
自己代碼截圖
1.同學的代碼只定義了較少的變量,而我定義了大量的變量,相比較我的代碼運算速度慢。
2.同學的代碼使用了定義函數並調用函數的方法還使用了結構數組的方法解題,而我使用的是while循環里面再加switch語句的方法。
3.同學的代碼用了自學的知識,代碼量僅有25行,比我的更簡單明了。
同學代碼截圖
自己代碼截圖
1.同學的代碼定義了六個變量,其中簡化了變量名,在進行邏輯判斷時比較清楚可讀性較強。
2.同學的代碼很簡單的就把題目做出來了,邏輯判斷非常合理,而我的代碼冗長復雜還浪費了大量的時間。相比較可讀性差,運行速度慢。
二.學習進度條
周/日期 | 代碼行 | 這周所花的時間 | 學到的知識點簡介 | 目前比較疑惑的問題 |
---|---|---|---|---|
第八周10.19-10.25 | 480 | 23小時 | 調用輸入輸出函數,輸出任意的字符串。 | 輸入輸出格式常沒有與題目一致 |
第九周10.26-11.01 | 599 | 33小時 | 數的類型,定義變量時要先考慮清楚。 | 數據溢出和負數的浮點型 |
第十周11.02-11.08 | 519 | 27小時 | for循環語句,if的判斷語句。 | 多次循環與循環體中再添加變量賦值並再循環 |
第十一周11.09-11.15 | 520 | 20小時 | 定義函數,調用函數 | 調用函數和定義函數易將變量弄混淆 |
第十二周11.16-11.22 | 550 | 28小時 | 多分支結構、字符型數據類型和邏輯運算符。 | 多分支結構容易弄錯,邏輯運算符使用不熟練 |
第十三周11.23-11.29 | 540 | 30小時 | 多分支結構switch語句 | switch語句使用不熟練,容易出現漏掉符號的情況 |