這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-4 |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11455 |
這個作業的目標 | 學會使用for語句實現指定次數的循環問題,提高自己寫代碼和分析代碼的能力 |
學號 | 20209058 |
1.PTA實驗作業
從PTA題目集中選出3個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題2分,內容要求如下:
1.1 求簡單交錯序列前N項和
本題要求編寫程序,計算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N項之和。
1.1.1 實驗代碼截圖
1.1.2 數據處理
數據表達:用flag表示第i項符號,初始為正,denominator表示第i項分母,初始為1,item存放每一項的值,sum存放累加值,其中flag,i,denominator,N為整型,item和sum為雙精度浮點型。
數據處理:利用賦值語句和簡單的四則運算計算sum,再用for循環累加sum的值。
1.1.3 PTA提交列表及說明
- Q1:剛開始運行時出現了格式錯誤問題
- A1:仔細看題目要求原來是等號兩邊沒有空格,不得不說,pta挺嚴格的
1.2 求分數序列前N項和
本題要求編寫程序,計算序列 2/1+3/2+5/3+8/5+... 的前N項之和。注意該序列從第2項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。
1.2.1 實驗代碼截圖
1.2.2 數據處理
數據表達:z表示分子,m表示分母,i代表每一項,item存放每一項的值,sum是整個式子的結果,其中整型數據有z,m,i,N,浮點數據有sum,item.
數據處理:用for語句進行累加,利用m=m-z實現將前一項分子的值賦予m
1.2.3 PTA提交列表及說明
- Q1:一開始沒看清題目,運行結果錯誤
- A1:將題目和代碼再看了一遍,原來分母賦值錯誤,直接將z的值賦給分母,而那個時候z的值已經變了
1.3 數字金字塔
本題要求實現函數輸出n行數字金字塔。
1.3.1 實驗代碼截圖
1.3.2 數據處理
數據表達:將j表示為每行左邊需要輸出的空格個數,i為每一行數,其中i,j都為整數
數據處理:在第一個for循環里面需要再嵌套兩個for語句,另外再使用一個簡單的print語句
1.3.3 PTA提交列表及說明
- Q1:在編譯結果中,一直出現返回值被忽略的問題
- A1:在定義pyramid()函數時,應明白此函數的功能是輸出金字塔,不做任何運算,故沒有返回值
- Q2:在運行結果中,沒有正確輸出金字塔結構
- A2:最后一個printf語句中,%d后面忘記加空格
2.閱讀代碼
找一份優秀代碼,理解代碼功能,並講出你所選代碼有點及可以學習的地方。
如下:查詢自動售貨機中商品的價格
- 利用了for循環顯示菜單,簡單易懂
- break語句可使程序在條件滿足某一情況時跳出循環
- switch語句實現多分支結構,根據用戶輸入的編號,可將相應的價格賦給price,讓程序看起來簡潔又嚴謹
- 以后可用這種簡單的語句實現一些復雜的功能,把代碼盡量寫得簡單明了
3.學習總結
3.1 學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較疑惑的問題 |
---|---|---|---|---|
第八周 10.19-10.25 | 10h | 30 | 簡單的輸入輸出函數 | 無 |
第九周 10.26-11.1 | 20h | 100 | 定義基本數據類型,正確使用格式控制字符串 | 無 |
第十周 11.2-11.8 | 25h | 200 | for循環和調用簡單的數學函數 | 不是很明白哪些函數可以直接調用不需要定義 |
3.2 累積代碼行和博客字數
3.3 學習感悟
- 本周雖然只學習了一個for循環語句,但是很多問題都可以用到它
- 雖然有些問題看起來復雜,但是只要找到關鍵的函數去實現它的功能,正確定義數據,一切就都迎刃而解了
- 有關c語言的很多概念和語句都沒有學過,一些題目明明很簡單,卻被我復雜化,這就需要我多花點時間去學習了