C語言博客作業03-函數
1.本章思考總結
1.1思維導圖
1.2本章學習體會及代碼量學習體會
1.2.1學習體會
這個星期學習的是函數的相關知識,剛開始預習時翻書會發現函數與平時編寫的程序差不多又有點不同,跟高中時所學的數學函數很像,讓我比較容易理解。但是書中的概念文字又很多,相近的概念如實參形參,局部變量,全局變量,靜態變量等等我很容易搞混,但是課堂中遇到的問題上課時也會聽老師講解一遍。最後,我又抽時間看了一遍翁愷老師有關函數的視頻,發現自己清晰了很多,所以學習還是要不斷加深印象,不斷動腦思考,動手編程,才會把知識真正的裝到自己腦子裏。
1.2.2代碼累計
2.PTA總分
2.1函數得分與排名:
2.2我的總分:145
3.PTA實驗作業
3.1PTA題目1
空心的數字金字塔
本題要求實現一個函數,輸出n行空心的數字金字塔。
3.1.1算法分析
1.for(j=1;j<=n-i;j++) { printf(" "); } 輸入每行前面的空格 2.printf("%d",i); 輸入第一個數字 3.for(m=1;m<=(2*i-3);m++) { printf(" "); } 輸入數字與數字間的空格 4.for(k=1;k<(2*n-1);k++) { printf("%d",i); } 輸入第二個數字 5.printf("\n"); 回車符,開始下一行的循環
3.1.2代碼截圖
3.1.3測試數據
3.1.4PTA提交列表及說明
Q1:第一次是編譯錯誤。
A1:我在這個程序中用了很多的if判斷還有for循環,但在運行時只顯示1這個數字,後來我發現是我沒有分清賦值與等於搞出的錯誤。
Q2:有兩個答案正確。
A2:我請教了下同學,用了另一種方法,我的思路是一行一行的循環,在每一行中分別用幾個循環,輸出空格和數字。
4.1函數關系圖
4.2函數功能介紹
4.2.1第一級函數
首先定義數字number,產生隨機數字,然後運用一個switch case 產生隨機字符加減乘除進行運算,比較輸入答案與正確答案的關系。
4.2.2第二級函數
方法與第一級大致相同。
4.2.3第三級函數
方法與上述相同
4.2.4點擊程序級別的系統
switch case還有我新學到的清屏功能。讓整個界面看起來更舒服。
4.2.5菜單函數
一個菜單函數,分別放在各個級別中,避免了代碼重復也更加方便簡單。
4.3運行結果截圖
4.4遇到的問題及解決方法:
在寫大作業的過程中我遇到了以下截圖中的問題
這個是錯誤代碼
這個是改正後的
原因是在我做完一個級別的程序後,一般會按回車進行下一次做題訓練,而因為設置的都是字符型,系統會把回車當成非法字符。加入一個getchar();吃掉回車符,就不會出現上述毛病了。
4.5大作業總結
1.我做大作業時的思路,首先是弄一個大的框架,再逐個填充函數進去,最後運行程序,對細節和bug進行調試。
2.該作業的第一步是顯示級別,讓做題人可以選擇,這就需要一個printf。並且需要 switch case進行選擇。然後需要定義一個函數用來讓做題者選擇題目數量。緊接著對第一級,第二級,第三級的函數進行填充,使之能夠運行成功。
3.在寫大作業時我碰到的問題是代碼會出現重復,復雜但我又不知道如何改進。對於拓展的內容,我對於時間函數的寫法不太理解。通過這次作業,也讓我知道了編寫一個程序,不管多小都需要細心,認真,不斷調試改正。
C語言博客作業03-函數