一、實驗作業
1.1 PTA題目:遞歸實現順序輸出整數
1.1.1設計思路
定義函數printdigits,形參為n接收數字
判斷n/10是否不等於0
如果是則遞歸調用函數printdigits(n/10)
輸出當前n的最后一位並換行
1.1.2代碼截圖
1.1.3調試問題
本題比較簡單,思路清晰,一遍就過,並無調試問題。
1.2 學生成績管理系統
1.2.1 畫函數模塊圖,簡要介紹函數功能
new_student( )新增學生信息函數
output_student( )輸出學生信息函數
sum( ),average( )計算總分和平均分函數
sort( )按平均分排序函數;sort1( )學號排序的函數;sort2( )總分排序的函數;
modify( )修改學生成績的函數;search( )查詢學生信息的函數;
delet( )刪除學生成績信息函數;check( )檢查學號的函數
1.2.2 截圖展示工程文件
1.2.3 函數代碼部分截圖
本系統代碼總行數:320
頭文件
插入學生信息及學生成績信息代碼
刪除學生成績信息代碼
總分排序代碼
1.2.4 調試結果展示
菜單
能夠新增學生信息,並計算總分和平均分。
根據輸入學號和課程號修改學生成績信息
根據輸入學號和課程刪除學生成績信息
輸出顯示所有學生成績信息。(按照學號排好序的)
能夠分別按照總分和平均分進行排序
能夠根據學號查詢學生信息
退出系統
用戶學號輸入非法
輸入重復學號
查詢不到相應學生信息
1.2.5 調試碰到問題及解決辦法
- 1.在調試過程中我突然發現信息的輸出與輸入不符,都是一堆亂碼,這個問題困擾了我很久,因為我之前還是沒問題的,后來突然發現在輸入的那個函數里的count沒有賦初值,所以導致了錯誤。
- 2.在計算總和和平均分時,由於直接對結構體內容進行了修改,導致其它的一些功能錯誤,比如刪除學生成績這一功能,后來就把它們賦給另一些變量,這樣就解決了問題。
二、截圖本周題目集的PTA最后排名
三、閱讀代碼
猴子吃桃
猴子第一天摘下若干個桃子,當即吃了一半,還不過癮就多吃了一個。第二天早上又將剩下的桃子吃了一半,還是不過癮又多
吃了一個。以后每天都吃前一天剩下的一半再加一個。到第10天剛好剩一個。問猴子第一天摘了多少個桃子?
我們可以先將這10天分開來看,第十天時剩下一個,而這一個正是“前一天剩下的一半再加一個”,那么第九天就是有2*(1+1)=4
個,此時再將第九天與第八天一起看,則第8天有2*(3+1)
個,由此遞推。
四、本周學習總結
1.1.介紹本周學習內容
- 1.函數嵌套調用:可以用main函數解決整個問題,它調用解決小問題的函數,而這些函數有進一步調用解決更小問題的函數,從而形成函數的嵌套調用;采用結構化思想,使代碼看起來更加清晰,結構明確。
- 2.遞歸:利用函數的嵌套調用,可以使函數自己調用自己;遞歸函數有兩個關鍵點,遞歸出口和遞歸式子;這兩個條件缺一不可;遞歸函數實質是把問題簡化成形式相同比較簡單的一些情況,可以解決一些用其他方法很難解決的問題。
- 3.宏定義格式為:
#define 宏名 宏定義字符串
- 4.宏的用途:(1)符號常量,如PI,數組大小定義,以增加程序的靈活性;(2)簡單的函數功能實現;(3)為程序書寫帶來一些方便,當程序中需要多次書寫一些相同內容時,可以把內容簡寫為宏。注意點:宏只是進行替換。
- 5.#include<需包含的文件名>這個將從系統文件夾里查找;#include"需包含的文件名"這個將從當前文件夾里查找,找不到再從系統文件夾里找。
- 6.編譯預處理命令不會被編譯。
- 7.指針數組定義格式:
類型名 *數組名[數組長度];
- 8.二級指針:指向指針的指針,定義格式為:
類型名**變量名;
- 9.命令行參數:形式為:
命令名 參數1 參數2 ··· 參數n
。可以在DOS環境的命令窗口中,輸入可執行文件名作為命令,運行該程序。
2.學習體會
在經過了快一個學期的學習,我從這門課程中學到了很多;記得在開學之前我就開始接觸C語言了,在打出自己的第一個代碼Hello World之后,我的內心是無比激動的;后來在經過課堂上的學習與每天打代碼練習,我對於C語言的認識也越來越深,代碼量也越變越大,從當初的寥寥幾行代碼,到現在的幾百行代碼,回顧這個成長的過程,我的有一點成就感。但是隨着學習的不斷深入,我感覺也越來越難了,比如這一次的學生成績管理系統,對於提高它的健壯性,我感到有些無從下手;所以我還需要繼續不斷努力,爭取取得一些好成績。