C語言|博客作業04


這個作業屬於哪個課程 C語言程序設計II
這個作業的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11496
我在這個課程的目標是 學會自定義調用函數;回顧聯系已學的內容;學習優秀代碼,找出自己的不足
這個作業在那個具體方面幫助我實現目標 PTA實驗作業;學習內容總結:代碼互評
參考文獻 C語言程序設計
學號 20209051

1.PTA實驗作業

1.1害死人不償命的(3n+1)猜想

卡拉茲(Callatz)猜想:

對任何一個正整數 n,如果它是偶數,那么把它砍掉一半;如果它是奇數,那么把 (3n+1) 砍掉一半。這樣一直反復砍下去,最后一定在某一步得到 n=1。卡拉茲在 1950 年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果鬧得學生們無心學業,一心只證 (3n+1),以至於有人說這是一個陰謀,卡拉茲是在蓄意延緩美國數學界教學與科研的進展……

我們今天的題目不是證明卡拉茲猜想,而是對給定的任一不超過 1000 的正整數 n,簡單地數一下,需要多少步(砍幾下)才能得到 n=1?

1.1.1 數據處理
數據表達:i,n都為整型,n直接輸入數值,i初次賦值后循環累加
數據處理:
        表達式:n=(3.0*n+1)/2
        流程結構:while結構,if-else結構
函數參數:int main為主函數;i,n為實參            
1.1.2 實驗代碼截圖

1.1.3 造測試數據
輸入數據 輸出數據 說明
3 5 自定義樣例
1000 72 最大
1 0 最小
1.1.4 PTA提交列表及說明


提交列表說明:

部分正確:使用do—while語句時,scanf函數返回值被忽略
運行超時:將n賦值,無意義

1.2 求組合數

本題要求編寫程序,根據公式算出從n個不同元素中取出m個元素(m≤n)的組合數。
建議定義和調用函數fact(n)計算n!,其中n的類型是int,函數類型是double。

1.2.1 數據處理
數據表達:i,n,m都為整型,result,a,b,c為浮點型
數據處理:
        表達式:a=fact(n);b=fact(m);c=fact(n-m);product=product*i;
        流程結構:for語句循環結構
函數參數:int main (void)為主函數;fact (int n)為調用函數,函數類型為整型;i,a,b,c為實參,product為形參       
1.2.2 實驗代碼截圖

1.2.3 造測試數據
輸入數據 輸出數據 說明
2 7 result=21 自定義樣例
1 9 result=9 結果在double類型范圍內
9 9 result=1 n=m時result最小
1.2.4 PTA提交列表及說明


提交列表說明:

編譯錯誤:m,n輸入的位置錯誤m>n,計算無意義;
         函數首部后加了“;”

2. 代碼互評

  • 同學代碼(1)

    (2)

  • 我的代碼
  1. 和兩位同學的代碼比起來,他們的明顯比我的更加簡潔,我設置的變量比較多。
  2. 解決問題的邏輯沒有太大的區別,但是我認為我多設定的變量,會使我的邏輯思路更加清晰,便於他人去閱讀理解。
  3. 其次第一份代碼中多使用了一次for語句,我覺得可以讓代碼更加簡潔

3.學習總結

3.1 學習進度條
周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第十一周/11.14 37h 475 while語句循環;自定義調用函數 調用函數;pta中scanf函數返回值忽略的問題
3.2 累積代碼行和博客字數

3.3 學習內容總結和感悟
3.3.1 學習內容總結

3.3.2 學習體會
  • 這一周學了自定義和調用函數,但是我還是沒有把形參和實參給捋清楚
  • 數學邏輯真的特別重要,在設計循環結構中,沒有數學邏輯真的不行
  • 閱讀理解能力真的也很重要,在PTA上做題的話真的需要很認真的把題目的意思給捋出來
  • scanf函數的返回值忽略問題是真的沒有搞懂


免責聲明!

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



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