這個作業屬於哪個課程 | C語言程序設計II |
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11556 |
我在這個課程的目標是 | 熟練switch的使用,找到自己與同學的差距 |
這個作業在那個具體方面幫助我實現目標 | |
參考文獻 | C語言程序設計(3)、C primer plus |
學號 | <20208956> |
1.PTA實驗作業(20分/題)
請再此處列出自己的排名圖片。
從PTA題目集中選出2個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題20分(每項5分),內容要求如下:
1.1 題目名1 符號函數
題目內容描述
其中x是用戶傳入的整型參數。符號函數的定義為:若x大於0,sign(x) = 1;若x等於0,sign(x) = 0;否則,sign(x) = −1。
1.1.1數據處理
數據表達:自定義函數sign(n)
數據處理:使用if語句,判斷三種情況,分別返回對應的值。
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入樣例 | 輸出樣例 | 說明 |
---|---|---|
10 | sign(10) = 1 | >0 |
0 | sign(0) = 0 | =0 |
-1 | sign(-1) = -1 | x<0 |
-2 | sign(-2) =-1 | x<0 |
1.1.4 PTA提交列表及說明
根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法。
提交列表說明:
1.部分正確:一開始的代碼是在if語句里的內容是sign(x)= 0、sign(x)= 1、sign(x)= -1.然后return sign(x)。它顯示的就是答案錯誤。
2.因為return 返回的值就是這個函數所得到的結果,所以可以在每個if后返回值。
1.2 題目2 計算天數
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
1.2.1 數據處理
數據表達:定義year,month,day,i都為整型
數據處理:使用了if-else語句、邏輯運算符、switch語句
用if((year%4==0&&year%100!=0)||(year%400==0))判斷是否為閏年
接着使用switch語句,case語句計算天數。
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入樣例 | 輸出樣例 | 說明 |
---|---|---|
2009/03/02 | 61 | 非閏年 |
2000/03/02 | 62 | 閏年 |
2000/05/04 | 125 | 閏年 |
2001/05/04 | 124 | 非潤年 |
1.2.4 PTA提交列表及說明
1.沒有弄清各月份的天數,在第八月之后將天數弄錯了,導致七月之后的天數不對。
2.case后表達式中出現了+day,出現了變量,編譯錯誤。
3.將case中的表達式改為i=x(天數),在switch結束后進行i+=x;算出天數。
2.代碼互評(5分)
同學代碼截圖
1
2
自己代碼截圖
1.第一份代碼使用字符型變量,用到了getchar()函數,if-else結構
2.第二份代碼與第一份基本一樣,但是他在定義變量的時候用了xyz...使輸出的時候變簡單了很多。
3.用了數組解題,把問題復雜了。不過這個思路值得學習。
3.學習總結(15分)
3.1 學習進度條(5分)
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第八周 | 18 | 220 | printf,scanf的使用,以及int類型 | |
第九周 | 22 | 231 | if語句分支結構、調用數學函數 | |
第十周: | 25 | 255 | for、while、do...while語句、字符型數據的使用 | switch語句多分支結構、break語句和continue語句 |
第十一周 | 28 | 600左右 | switch語句,邏輯運算符,數組,自定義函數 | 多個循環結構的嵌套使用容易出錯 |
第十二周 | 27 | 680左右 | 無新的知識點 | 排序問題 |
第十三周 | 25 | 400左右 | 鞏固switch語句、const限定符、short int、long int、long long int、unsigned整數類型 | 無 |
3.2 累積代碼行和博客字數(5分)
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
if+else+和+switch+case+這兩種條件語句都是用來判斷執行功能的,若條件分支是多個而且條件的值是整數或是一個字符值時就選switch而不選if。因為如果條件分支太多時要用if語句,這樣一定會出現if的嵌套,如果if的嵌套越多時程序就會增大,這樣運行效率就在降底。而switch就不同,它只要比較一次就可以找出條件的結果比起嵌套if它的效率就大大的提高了很多。switch也有約束條件,就是條件值一定要是一個整型數或是一個字符值,所以碰到它不能解決的問題時通常使用if語句。