C語言|博客作業07


這個作業屬於哪個課程 https://edu.cnblogs.com/campus/zswxy/SE2020-1/
這個作業要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11584
這個作業的目標 熟悉使用while和do-while結構解決問題。深化編程過程
學號 20209085

1.PTA實驗作業

1.1題目1(7-3 循環-古角猜想)

日本數學家古角靜夫研究自然數時,發現一個有趣現象:“如果是個偶數就除2,如果是奇數就乘以3加1”,經過有限個這樣的處理步驟,最后一定能得到1. 任意輸入一個自然數,給出得到結果1的運算過程。

1.1.1數據處理

數據表達:定義了整型變量n。
數據處理:(偽代碼)
begin 輸入n
n=fact(n)
while(n!=1)
begin
n=fact(n)
end
begin
if n%2==0
begin
n=n/2
end
else
begin
n=n*3+1
end
end

1.1.2實驗代碼截圖

1.1.3造測試數據

輸入 輸出 說明
5 5*3+1=16,16/2=8,8/2=4,4/2=2,2/2=1 樣例
6 6/2=3,33+1=10,10/2=5,53+1=16,16/2=8,8/2=4,4/2=2,2/2=1 6、10、16、8、4、2都是偶數,3、5都是奇數
13 133+1=40,40/2=20,20/2=10,10/2=5,53+1=16,16/2=8,8/2=4,4/2=2,2/2=1 40、20、10、16、8、4、2都是偶數,13、5都是奇數

1.1.4PTA提交列表及說明


說明:
1.編譯錯誤:前期思維混亂,運用while語句判斷無法運行。
解決方法:全部推到使用自定義函數編程。
2.段錯誤:邏輯錯誤表達時出錯導致堆棧溢出。
解決方法:優化結構,改正表達式。
3.答案錯誤:自定義函數最后的返回值寫錯。
解決方法:將return 0改為return n。
4.部分錯誤:看錯題目意思,忽略了偶數除以二可能得到奇數的情況。
解決辦法:重新編寫判斷語句,優化邏輯結構。

1.2題目2(7-7 單重循環—數雞蛋)

媽媽給小明家新送來 y個雞蛋。 已知小明家原有雞蛋的個數x是滿足“三個三個的數剩1個,5個5個數剩z個,7個7個數剩3個”的最小數, 請問小明家共有多少個雞蛋? (設輸入為正數,不考慮非法輸入)

1.2.1數據處理

數據表達:定義了整型變量a,b,c,n。
數據處理:(偽代碼)
begin 輸入x,y,z
x=0
while (!(x%3==1&&x%5==z&&x%7==3))
begin
x++
end
end

1.2.2實驗代碼截圖

1.2.3造測試數據

輸入 輸出 說明
58 4 70 50 56 58 60 -2 Too big Too small Too small Good Guess! 樣例
58 4 70 50 56 57 65 Too big Too small Too small Too small Too big Game Over 有兩個數大於隨機數58,三個數小於隨機數58,並且在N(4)次之前沒有猜到
32 3 12 30 45 22 -3 Too small Too small Too big Too small Game Over 有一個數大於隨機數32,三個數小於隨機數32,並且在N(3)次之前沒有猜到

1.2.4PTA提交列表及說明

說明:
1.編譯錯誤:一開始想使用switch語句編寫,后查詢得知switch語句表達式中只能接受整型和字符型的確定值,不能接受邏輯值。所以表達式中無法寫入邏輯表達式,此題故不能用stitch表達式。
解決辦法:推倒重來,將switch語句改為if-else語句。
2.編譯錯誤:沒寫break語句跳出分支語句。
解決辦法:在每個分支語句后加上break。
3.部分正確:缺少超過n次猜對無效的情況。
解決辦法:加入一個分支語句判斷b>=n.

2.代碼互評

2.1同學代碼

2.2自己代碼

評價:
1.兩者定義的整型變量不同。前者為a,b,后者只有n。
2.兩者編程思路不同。前者為循環結構中套入多分支,后者運用的是自定義函數。前者結構更明了,但后者更方便。

2.1同學代碼

2.2自己代碼

評價:
1.兩者定義不同。前者定義了整型n,雙精度浮點型price,b,m,后者都定義為雙精度浮點型a,b,c。
2.兩者編程細節不同。
3.前者定義時將定義的變量和賦值表達式放在一行寫出的習慣不是太好。

3.學習總結

3.1學習進度條

<日期> <這周所花時間> <代碼行> <所學的知識點簡介> <目前存在的問題>
10/19-10/25 20 200 初步了解了C語言並學習了markdown語法 已解決
10/26-11/01 24 300 掌握賦值和算數運算 已解決
11/2-11/08 27 400 學習循環語句,掌握scanf和pow函數 已解決
11/9-11/15 22 470 熟練函數定義和調用函數,掌握生成階乘和乘法表 已解決
11/16-11/22 25 530 熟練多分支結構,字符型數據類型以及邏輯運算符 已解決
11/23-11/29 23 490 熟練多分支結構,switch語句 已解決
11/30-12/06 21 520 熟練while與do-while語句 對新學到的知識無法迅速掌握,做題目時無法靈活運用多種方法

3.2累計代碼行和博客字數

3.3學習內容總結和感悟

3.3.1學習內容總結

3.3.2學習體會

之前的學習總結中提到過多實踐與多復習的重要性,確實如此。本周的學習中,我遇到的最大的問題還是知識掌握進度慢,對以前的學習內容有所遺忘的情況,一個自定義函數的編寫還需要重新翻閱課本。同時我也意識到還有一個東西對我們的編程學習同樣重要,那就是對比總結。對比身邊同學、老師、亦或是網絡上解決問題的解答,也可以是分享出來的學習心得與經驗。不斷優化自己的學習方法和學習思路,取長補短,這樣才能獲得最高效的提升,從而得到編程和我們學習突破道路上的最優解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM