1. 程式人生 > >C語言博客作業03-函數

C語言博客作業03-函數

錯誤 代碼 number 也會 選擇題 學習 實現一個函數 要求 分享

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-函數