這個作業屬於那個課程 |
C語言程序設計II |
這個作業要求在哪里 |
C語言I作業05 |
我在這個課程的目標是 |
學會使用函數fact(i)掌握階乘的算法 |
這個作業在那個具體方面幫助我實現目標 |
在編寫PTA作業的過程中,逐漸熟練 |
參考文獻 |
集美大學林麗老師、C語言程序設計 |
1.PTA實驗作業
1.1 題目名1
判斷一個整數的各位數字平方之和能否被5整除
編寫函數fun,其功能是:判斷一個整數的各位數字平方之和能否被5整除,可以被5整除則返回1,否則返回0。
1.1.1數據處理
* 數據表達:圖中有a,sum兩個字母,使用的是整數型,其中a代表每次除以10的余數,sum代表各個數字的平方和。
* 數據處理:根據題意可得a=n%10,sum=sum+a*a。在使用if語句判斷sum是否能被5整除。
* 函數參數:主調函數為int main(),被調函數為int fun(int n),都為整型函數。n為實參,a,sum為形參,它們都為整型參數。
1.1.2實驗代碼截圖

1.1.3 造測試數據
輸入數據 |
輸出數據 |
說明 |
9 |
0 |
不能被5整除 |
56 |
0 |
不能被5整除 |
125 |
1 |
可以被5整除 |
1.1.4 PTA提交列表及說明

* 編譯錯誤:忘記在a之間打上*號
* 編譯錯誤:忘記在賦值語句后打上;號
* 編譯錯誤:未理解清楚題目意思,將1和0的位置打反了
* 編譯錯誤:if語句中未打兩個等號
1.2 題目2
水仙花數判斷
題要求實現一個函數,判斷任一整數是否為水仙花數(必須是三位數,且數的每一位上數字的立方和與數本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155則不是水仙花數。如果是水仙花數,則函數返回1,否則返回0.
1.2.1 數據處理
* 數據表達:圖中有i,s,a三個整型字母,其中i=N代表輸入的數,a代表i除以10的余數,s代表各個數字三次方的和。
* 數據處理:據題意可知N=i,a=i%10,s=s+a*a*a,利用while語句可算出各個數字三次方的值。
* 函數參數:主調函數為int main(),被調函數為int func(const int N),都為整型函數。其中N為實參,s,a都為形參,且都為整數參。
1.2.2 實驗代碼截圖

1.2.3 造測試數據
輸入數據 |
輸出數據 |
說明 |
8 |
0 |
8的立方不等於8 |
26 |
0 |
2的立方加6的立方不等於26 |
228 |
0 |
2倍2的立方加上8的立方不等於228 |
1.2.4 PTA提交列表及說明

* 編譯錯誤:第一行的被調函數后面加上了;號
* 部分正確:忘記打i=N
* 部分正確:將s=s+a*a*中的s忘記了
* 部分正確:s==N中的等號只打了一個
2.代碼互評
同學代碼截圖

自己代碼截圖

* 該同學一開始便用了數學函數來計算次方,而我因為次方不多直接用的乘法,較簡單一些。
* 在循壞上,我用了while循環,該同學用了for循環。for循環可以設置次數,而while循環條件滿足沒有次數限制。因此各有各的好。
同學代碼截圖

自己代碼截圖

* 相同:我與該同學一樣設置了三個整型變量
* 不同:該同學直接給三個變量設置了三個表達式,將x,y,z一個個算出,而我依然使用的是while循環。同學的方法比較好理解,不過編寫較麻煩,可以適當借鑒。
3.學習總結
1.3.1 學習進度條
周/日期|這周所花的時間|代碼行數|學到的知識點簡介|目前比較迷惑的問題
----------|---------------------|-------------------------------------|----------------------------
第四周|2天|28|學習語句的輸出|無
第六周|4天|20|用 MinGW-w64 來編譯C程序,學習編程計算溫度的轉化|無
第七周|3天|99|學習用if,else等語句編譯程序|無
第八周|2天|75|學習使用循環語句,用for來編譯程序|不太清楚整數型和浮點型該何時用
第九周|3天|94|學習各種使用函數eg:fact(i)|不太清楚函數中i代表什么
3.2 累積代碼行和博客字數

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


3.3.2 學習體會
在本周的學習過程中我接觸到了函數,不得不說的是函數不管是在數學里還是C語言中都是讓人燒腦袋的一部分。從PTA的題目可以看出函數需要較強的邏輯性和理解力,還需要對函數的表達有一定的了解。學習內容越來越深入,難度、代碼行數也在逐漸增多。因此為了跟的上題目的步伐,我們也該不斷努力的提升自己。