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

C博客第03次作業---函數

a+b 分享 哪裏 需要 lag 也不能 答題 代碼 形參

1.本章學習總結

1.1 思維導圖

技術分享圖片

1.2 本章學習體會及代碼量學習體會

1.2.1 學習體會

  • 首先,對於學習了函數的我來說是很開心的,因為學了函數之後可以解決很多以前不懂的問題,可以說函數是C語言中不可缺少的一部分。
  • 其次,函數對於之前的循環,嵌套之類的C語法來得更深層次,要掌握需要對C語言了解得深一點,也就是說我已經不再是新手了,已經要向著更深層次的關於C的知識前進了。
  • 再來,函數的使用需要對語法了解明白,比如說什麽時候調用函數,如何對函數進行聲明,如何準確使用實參與形參,這些都需要認真且仔細,一旦有哪裏出錯就會影響到整個函數。
  • 最後,自從學習函數之後明顯覺得難度比以前大,題目比之前難,對於今後更加難的學習,我已經做好準備了。

    1.2.2 代碼累計

    技術分享圖片

2.PTA總分

2.1截圖PTA中函數題目集的排名得分

技術分享圖片

2.2 我的總分

  • 145分

3.PTA實驗作業

3.1 PTA題目1

  • 本題要求實現一個計算Fibonacci數的簡單函數,並利用其實現另一個函數,輸出兩正整數m和n(0<m≤n≤10000)之間的所有Fibonacci數。所謂Fibonacci數列就是滿足任一項數字是前兩項的和(最開始兩項均定義為1)的數列。其中函數fib須返回第n項Fibonacci數;函數PrintFN要在一行中輸出給定範圍[m, n]內的所有Fibonacci數,相鄰數字間有一個空格,行末不得有多余空格。如果給定區間內沒有Fibonacci數,則輸出一行“No Fibonacci number”。

3.1.1 算法分析

  • int fib( int n )來求第n項Fibonacci數
  • if n==1或n==2 返回1
  • 否則 for i=3;i<=n;i++
  • sum=A+B;A=B;B=sum;
  • end for 開始循環直到得到第n項的Fibonacci數 返回sum
  • void PrintFN( int m, int n )來求m到n之間的Fibonacci數
  • while(fib(i)<=10000)調用上面的函數來求Fibonacci數
  • if(fib(i)>=m&&fib(i)<=n)在所輸入的區間時
  • flag=1控制輸出結果 y++ 如果y=1則輸出fib(i)否則輸出空格加fib(i)
  • end while
  • 如果flag==0,輸出No Fibonacci number。

3.1.2 代碼截圖

技術分享圖片

3.1.3 測試數據

技術分享圖片

技術分享圖片

技術分享圖片

3.1.4 PTA提交列表及說明

技術分享圖片

Q1;一開始沒有運用flag來控制輸出結果,所以老是格式出錯。
A1;後面禦用flag來控制輸出,格式正確。
Q2;剛開始時第一個函數寫得很復雜,沒有真正明白Fibonacci數的規律,所以多次出錯。
A2;在搞清楚規律後,用三條語句就寫出了循環體,也就正確了。

4.大作業

4.1.函數關系圖

技術分享圖片

4.2.函數功能介紹

1.函數1:void degreeOne()

  • 功能介紹:該函數主要控制1位數的一步加減乘除計算。

  • 思路:輸入需要訓練的題目數量,用i來控制循環。再得出一位的隨機數,再隨機得出加減乘除中的一個符號,進行計算,結果正確則給句肯定的語句,出錯了輸出正確答案,並給一句鼓勵的話。答題結束時給出一個選擇給用戶選擇繼續答題或者退出。退出循環時計算正確率。

技術分享圖片
技術分享圖片

2.函數2:void degreeTow()

  • 功能介紹:該函數主要控制2位數的兩步加減計算。

  • 思路:輸入需要訓練的題目數量,用i來控制循環。再得出三個兩位的隨機數,再隨機得出++或者+-或者-+或者--中的任意一個情況,進行計算,結果正確則給句肯定的語句,出錯了輸出正確答案,並給一句鼓勵的話。答題結束時給出一個選擇給用戶選擇繼續答題或者退出。退出循環時計算正確率。

技術分享圖片
技術分享圖片

3.函數3:void degreeThree()

  • 功能介紹:該函數主要控制3位數的兩步加減計算。

  • 思路:輸入需要訓練的題目數量,用i來控制循環。再得出三個三位的隨機數,再隨機得出++或者+-或者-+或者--中的任意一個請況,進行計算,結果正確則給句肯定的語句,出錯了輸出正確答案,並給一句鼓勵的話。答題結束時給出一個選擇給用戶選擇繼續答題或者退出。退出循環時計算正確率。

技術分享圖片
技術分享圖片

4.函數4:void tital()

  • 功能介紹:該函數主要控制開頭界面。
    技術分享圖片

4.3 運行結果截圖

  • 選擇第一個級別,選擇難度時輸入不合法數據
    技術分享圖片

  • 選擇第二個級別,並在選擇題目數量時輸入非法字符
    技術分享圖片

  • 選擇第三個級別,並在選擇是否繼續時輸入非法字符
    技術分享圖片

4.4 調試碰到問題及解決辦法

  • 問題:
  • 1.一開始對於隨機數以及時間函數並不是很了解也不懂得使用。
  • 2.對於輸入時輸入非法字符這個想了很久,代碼中有多次輸入數字的地方,只要是輸入字符都會導致代碼混亂。
  • 3.對於第一個函數的除法運算問題也糾結了很久。
  • 4.其他都是一些比較小的問題。
  • 解決方法:
  • 1.隨機數與時間函數去百度了一下,並模仿了百度上的代碼,但是也掌握的隨機數與時間代碼的用法。
  • 2.在選擇難度時輸入非法字符,我采用了goto語句,輸入非法字符時從新輸入。在輸入題目數量時輸入非法字符,最後沒辦法只能使輸入非法字符退出訓練。在輸入是否繼續答題時輸入非法字符,想了很久也不能使它從新選擇是否退出,只能使輸入非法字符退出訓練。
  • 3.想了很久最後采用double來定義result,並在result前成一個1.0引出後面的結果,最後用%.2f取小數點後兩位。

4.5 大作業總結

  • 通過了本次的大作業,學到了不少的新知識,比如隨機數的應用以及時間函數的應用,還有goto語句的使用方法。
  • 但同時也暴露出了不少的問題,就是函數還不能很好的使用,以後要加強對函數的使用的方法。
  • 總結寫大作業的順序,我認為寫大作業應該要列思路,將函數調用好,然後再使界面友好,再打出思路中的代碼有一個整體的框架,最後進行調試,也就是尋找bug,然後通過改正bug最後得到結果。以後要是有大作業我會嚴格按照這樣來寫,不然可能會像本次一樣,缺什麽補什麽,搞得思路很亂,所以代碼打了很久。

C博客第03次作業---函數