作業


函數

 題目1:

7-1 求組合數(15 分)

本題要求編寫程序,根據公式Cnm​​=m!(nm)!n!​​算出從n個不同元素中取出m個元素(mn)的組合數。

建議定義和調用函數fact(n)計算n!,其中n的類型是int,函數類型是double


1. 本題PTA提交列表

 

2. 設計思路

分別使用fact函數求累乘,再將最后結果進行處理

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:1.如何求累乘2.如何調用函數

第一次提交,函數最后return值有誤。return 0后無結果,反復查看后發現錯誤改正。

題目2.

7-3 求冪之和(15 分)

本題要求編寫程序,計算sum=21​​+22​​+23​​++2n​​。可以調用pow函數求冪。

1. 本題PTA提交列表

 

 

本題代碼

 

2. 設計思路

思路:設計函數能使參數進行求冪之和,主要結構為循環結構。

3.本題調試過程碰到問題及PTA提交列表情況說明

 碰到問題:1.形參與實參的相互傳遞2.子函數傳值問題

 第一次提交未在主函數中定義sum,固編譯錯誤,根據提示改正。

第二次提交時沒有在主函數中寫sum=f(n),所以子函數傳值無效,根據提示改正。

 題目3.

7-5 近似求PI(15 分)

本題要求編寫程序,根據下式求π的近似值,直到最后一項小於給定精度eps。

2π​​=1+31!​​+3×52!​​+3×5×73!​​++3×5××(2×i+1)i!​​+

本題提交列表

 

本題代碼

 

 

2.設計思路

應用循環結構求最后一項大小,同時求出各元素累加的值

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:循環邏輯不同,函數定義錯誤。

第一次提交輸出格式錯誤,最后一位多出一個0,將"%lf"改為“%.5”則正確。

#二、代碼互評

互評同學名稱:張瑜

題目

7-8 求n以內最大的k個素數以及它們的和(20 分)

本題要求計算並輸出不超過n的最大的k個素數以及它們的和。

2.代碼對比

我的

張瑜

 

 

3.我和同學代碼不同在哪里?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪里出問題。

我用了數組結構,看起來稍顯復雜。張瑜的程序簡潔短小,一目了然,但數組結構可以清晰地表明程序是將數組中的數字往前推進,並且容易看懂,思路清晰,發現錯誤后也能順着思路盡快找到。我更喜歡我的代碼。

#三、PTA排名

 

#四、本周學習總結

1.你學會了什么?

1).函數的聲明,定義和調用

2)函數的功能

3).實參和形參的關系

4).在函數中,數據的傳遞

5).局部變量和全局變量

2.本周的內容,你還不會什么?

感覺關於子函數釋放結果的問題還有點迷糊,關於函數類型的選擇也不太清晰,還需多加強基礎知識。

3.其他總結

遞歸問題感覺一知半解,需要多找一些這方面的題型加深印象。

 

 

數組

 

題目1:

7-1 數組元素循環右移問題

一個數組A中存有N(>)個整數,在不允許使用另外數組的前提下,將每個整數循環向右移M(≥)個位置,即將A中的數據由(A0​​A1​​AN1​​)變換為(ANM​​AN1​​A0​​A1​​ANM1​​)(最后M個數循環移至最前面的M個位置)。如果需要考慮程序移動數據的次數盡量少,要如何設計移動的方法?


1. 本題PTA提交列表


2. 設計思路

將輸入的數儲存在數組中,右移后a[0]=a[3],a[1]=a[4],a[2]=a[5]。

故需要設計循環使a數組中數字下標進行循環。
3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:1.如何輸入數組2.如何輸入數組3.如何將下標進行加減。

第一次提交,答案錯誤,輸入后數字之間無間隔,但同時無法用“ %d  ”輸出,因為行末不能有間隔。故根據程序分析在第一循環中如果當i>n-1,則不需要輸出空格。在第二個循環中,i=n-m-1時不需要輸出空格,固將程序改動正確。

題目2.

7-2 求最大值及其下標(20 分)

本題要求編寫程序,找出給定的n個數中的最大值及其對應的最小下標(下標從0開始)。

1. 本題PTA提交列表

本題代碼

2. 設計思路

將相鄰量兩個數進行比較,如果順序錯誤則進行交換。如是循環。

3.本題調試過程碰到問題及PTA提交列表情況說明

 碰到問題:如何比較大小,互相交換后找到最大值下標。

第一次提交時定義數組錯誤,不能直接定義a[n],查找書本翻看程序后糾正。

第二次提交時沒有令max=0,所以無法運行,反復試驗多次無果后進行詢問同學改正。

 題目3.

7-6 冒泡法排序

N個整數按從小到大排序的冒泡排序法是這樣工作的:從頭到尾比較相鄰兩個元素,如果前面的元素大於其緊隨的后面元素,則交換它們。通過一遍掃描,則最后一個元素必定是最大的元素。然后用同樣的方法對前N1個元素進行第二遍掃描。依此類推,最后只需處理兩個元素,就完成了對N個數的排序。

本題要求對任意給定的K(<N),輸出掃描完第K遍后的中間結果數列。

本題提交列表

本題代碼

 

2.設計思路

一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。

3.

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:循環邏輯不通,不知道如何使格式正確

第一次提交輸出格式錯誤,行末存在多余空格,分析后可以根據數組中元素下標判斷該元素是否為最后一個元素,若不是,則輸出空格,若是,則不輸出。

#二

排名

互評同學名稱:李彥嬋

2.代碼對比

 

3.我和同學代碼不同在哪里?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪里出問題。

結構不同,彥嬋直接將下標從最大值往前輸,而我定義了一個子函數,使用下標的對換來實現。比較之下,彥嬋的程序更加簡潔明了,運用了技巧,而我的程序過於復雜,容易出錯並且不容易發現錯誤。我更喜歡彥嬋的風格,簡單易懂。

四、本周學習總結

1.你學會了什么?

1).學會了如何定義一維數組,二維數組

2).學會了如何將數組中的元素運用下標進行處理。

3).學會了不同輸入輸出數組的幾種不同方式

4).關於str系列函數的用法與原型

2.本周的內容,你還不會什么?

不知道如何分別進行行與列的查找並比較大小。

 

3.循環結構考試總結

1.哪題做錯了,怎么改?

所定義數組范圍過小,導致答案部分錯誤,定義足夠大的數組char a[1000000]

2.考試結果滿意么,怎么改進?

不滿意,應該多回歸書本,並且在聽完課之后立馬進行溫習並自己嘗試寫一遍,若有不懂應該立馬標注並及時解決。

3.其他總結。

多多練習,端正態度。

 

循環

 

 #一

題目1.求平方根序列前N項和,本題要求編寫程序,計算平方根序列1​​+2​​+3​​+⋯的前N項之和。可包含頭文件math.h,並調用sqrt函數求平方根

1. 本題PTA提交列表

 

代碼:

 

2.設計思路:先輸入一個數n,從1開始一直加一進行開根號處理,就要在加到n時在循環里,同時需要設置變量sum統計前n項總和

 

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:如何輸出兩位小數

調試過程

錯誤:把num寫成n,n未定義。檢查后改正。

 

題目2.打印九九口訣表

1. 本題PTA提交列表

本題代碼:

2.設計思路:

設計兩個循環,使第一個數為1,第一個循環使第二個數從一加至九,分別相乘后輸出,第二個循環使第一個數從一加至九,而第一個循環包含在第二個循環里。

 

 3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:1.怎樣使每條輸出語句對齊2.怎樣形成一個三角。

調試過程

 

語句無法對齊,請教后改正。

 兩個數對調(i,j對調固答案錯誤。)在運行后發現改正。

 

題目3.求1到100的和(10 分)

本題要求編寫程序,計算表達式 1 + 2 + 3 + ... + 100 的值。

1. 本題PTA提交列表

 

代碼:

2.設計思路:設計一個循環在循環里,1從1加到100,同時每個數進行累加

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題:不知道如何進行累加

調試過程

輸出格式錯誤,根據調整后改正。

 

#二.截圖本周目集的PTA最后排名

2.我的代碼、互評同學代碼截圖

同學名稱:林芷逸

3.我和同學代碼不同在哪里?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪里出問題。

 基本結構是相同的,但芷逸的代碼稍顯復雜,語句比較長。我的代碼定義的變量名稱也更直接明了容易辨認。同時在i<n-1這種細節上較為注意。

我比較喜歡自己的代碼。

四.本周學習總結

1.你學會了什么?

1.學會了多種循環結構,for,while,do...while的結構上的不同以及應用方式。

2.循環嵌套

2.本周的內容,你還不會什么?

不知道如何進行循環輸入和算權重分配,有大概的思路但無法進行編程。

3.循環結構考試總結

1.哪題做錯了

以下正確定義與賦值的語句是________ A、int  x = y = -1               B、char c = 65;     C、float y == 1.0;               D、double x = 12.3E2.5

選了A,但賦值需要int x=-1,y=-1,本題答案選b

2.考試結果滿意么,怎么改進?

不滿意,多進行代碼練習,多翻書,多看學習視頻,熟能生巧。
3.其他總結
剛開始學習c語言,感覺不是很適應,不能舉一反三,很多基礎的東西容易忘記,還需加強。


免責聲明!

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



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