這個作業屬於哪個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11588 |
我在這個課程的目標是 | 更好的理解現在所學習的內容,補充細節和框架 |
這個作業在哪個具體方面幫助我實現目標 | 思維導圖和代碼互評 |
參考文獻 | 《C Primer Plus》《C語言程序設計》(第三版) |
1.PTA實驗作業
1.1 實驗6-9 統計一行文本的單詞個數 (15分)
本題目要求編寫程序統計一行字符中單詞的個數。所謂“單詞”是指連續不含空格的字符串,各單詞之間用空格分隔,空格數可以是多個。
1.1.1 數據處理
數據表達:
1.變量count:整型,由賦值得來;
2.變量ch,bh:字符型,由輸入得來;
數據處理:
表達式:賦值表達式,邏輯表達式,算數表達式;
流程結構:while語句,if-else語句。
偽代碼:
getchar()輸入一個字符放入bh
while定為死循環
將bh賦值給ch
再使用getchar輸入一個字符放入bh
if bh != ' ' 且ch == ' ',則count+1,累積一個單詞
if ch == '\n',則跳出while循環,即語句輸入結束
if bh == ' ',即空格結尾,嘖count累計數-1
輸出count
1.1.2 實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
Let's go to room 209. | 5 | 判斷得出有五個單詞 |
let | 1 | 前后都有空格,但只有一個單詞 |
1.1.4 PTA提交列表及說明
1.部分錯誤:空格結尾,以及1個最短單詞,前有空格,以及全空格的測試點沒有通過;
2.部分錯誤:經過調整后全空格和最短單詞時測試通過,但其他的點又錯誤了。
1.2 實驗4-1-9 猜數字游戲 (15分)
猜數字游戲是令游戲機隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序。
1.2.1 數據處理
數據表達:
1.變量x,n:為整型,由輸入得來;
2.變量a[100]:為整型數組,由輸入得來;
3.變量i,sum,flag,m:由賦值得來;
數據處理:
表達式:賦值表達式,計算表達式,關系表達式。
流程結構:while循環,for循環,if-else語句。
偽代碼:
初始化flag=0,sum=0
輸入x,n
for (int i = 0; i < n; i++)
輸入a
if a<0,則break,跳出for循環
else if a>x,則sum++,輸出"Too big\n"
else if a<x,則sum++,輸出"Too small\n"
else
sum++,令flag = 1
if sum == 1輸出"Bingo!\n"
else if sum <= 3輸出"Lucky You!\n"
else 輸出"Good Guess!\n",則break,跳出for循環
如果flag=0,則輸出"game over\n"
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
![]() |
![]() |
只比較四次,且第四次正好猜對 |
![]() |
![]() |
只比較三次,且第三次正好猜對 |
![]() |
![]() |
比較五次,但是第三次已經猜對,於是只輸出三行 |
1.2.4 PTA提交列表及說明
1.多種錯誤:包括格式錯誤:輸出沒有換行,答案錯誤:沒有及時退出等錯誤;
2.部分正確:超過N次猜對無效,3次猜中,sample 超過3次、正好N次猜出測試點錯誤;
3.編譯錯誤:在vs改正后復制粘貼時,少復制了一部分;
4.部分正確:3次猜中測試點沒有通過。
2.代碼互評
同學代碼:
自己代碼:
同學的代碼直接用數學公式講雞蛋總和計算了出來,而我則是用for循環一個一個試出來,同學的代碼比我的更簡便,用的時間也更少。
3.學習總結
3.1學習進度條
周/日期 | 這周所花時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
第八周 | 30小時 | 600 | 基礎知識,輸入輸出函數if-else語句 | 無 |
第九周 | 30小時 | 700 | for循環,while循環,switch語句,數組 | 怎樣用數組打出金字塔和蛇形數組 |
第十周 | 30小時 | 500 | 無 | 二維數組的使用 |
第十一周 | 25小時 | 550 | 自定義函數,命名法 | 怎樣解決自己的暴力解題思路,讓代碼更直觀簡潔 |
第十二周 | 27小時 | 550 | string.h | 怎樣解決自己的暴力解題思路,讓代碼更直觀簡潔 |
第十三周 | 25小時 | 600 | 無 | 不知道自己該往哪學 |
第十四周 | 26小時 | 650 | 無 | 無 |
3.2累積代碼行和博客字數
3.3學習內容總結和感悟
3.3.1學習內容總結
3.3.2學習體會
這周上課更系統的學習了do-while,比我之前所了解的更透徹了一些,寫題也能夠有更多的方法了,希望下周也可以在原本所學過的基礎上再加強一些。