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

C語言博客作業03--函數

代碼量 判斷素數 產生 其中 提交 分別是 截圖 說明 思維

1.本章學習總結

1.1 思維導圖

技術分享圖片

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

1.2.1 學習體會

函數這章的學習,主要是學習函數聲明-調用-定義。在主函數之外再定義函數來實現主函數內想要實現的功能,我認為函數的使用最主要的就是在編寫程序時,將程序模板分塊,分出各個部門各司其職,在主函數中再將其統一合並,不僅編寫程序更加方便清晰,而且增加了程序的擴展性,在想要加入新功能的時候,再寫個函數,就能快速的實現與主函數的相結合。

1.2.2 代碼累計

技術分享圖片

2.PTA總分

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

技術分享圖片

2.2 我的總分:

函數題:130
編程題:15
總分: 145

3.PTA實驗作業

3.1 PTA題目1

本題要求實現一個判斷素數的簡單函數,並利用該函數驗證哥德巴赫猜想:任何一個不小於6的偶數均可表示為兩個奇素數之和。素數就是只能被1和自身整除的正整數。註意:1不是素數,2是素數。其中函數prime當用戶傳入參數p為素數時返回1,否則返回0;函數Goldbach按照格式“n=p+q”輸出n的素數分解,其中p≤q均為素數。又因為這樣的分解不唯一(例如24可以分解為5+19,還可以分解為7+17),要求必須輸出所有解中p最小的解。

3.1.1 算法分析

1.第一個函數:只用來判斷素數。2到n的範圍內判斷,如果能被整出,則計數加1,如果計數為0,且被除數不為1,則返回
2.第二個函數:分解輸入數的素數解析式。從2開始到輸入的數循環,循環再嵌套循環,先判斷第一個數是否為素數,如果是,則計算算除另一個數再判斷是否是素數,都滿足後就輸出
好吧!這麽說大家應該也看不懂,直接看圖吧!

3.1.2 代碼截圖

技術分享圖片

3.1.3 測試數據

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

3.1.4 PTA提交列表及說明

技術分享圖片

  • Q1: 在調試第二個函數時,一直無法輸出
  • A1:定義的計數變量在循環結束時沒有清0,結構倒置循環崩潰,在大循環內添加清0語句

    4.大作業

    4.1.函數關系圖

    技術分享圖片

4.2.函數功能介紹

1.函數1

  • 函數功能:用於產生隨機0~3的隨機數,隨機數在運算函數內通過switch case語句產生不同的符號運算,以此達到產生隨機運算符的目的。
  • 代碼截圖:
    技術分享圖片

2.函數2

  • 函數功能:將算對的題目計算,除去所算過的題目,再返回正確率。
  • 代碼截圖:
    技術分享圖片

3.函數3

  • 函數功能:主要用於程序的界面,優化程序提示
  • 代碼截圖:
    技術分享圖片

4.函數4

  • 函數功能:用於一級難度的運算,並在函數內產生隨機數,再對用戶輸入的結果進行判斷、輸出相應得語句。
  • 代碼截圖:
    技術分享圖片

5、6.函數5、6

  • 函數功能:用於二級、三級得運算,兩個函數相似,所以結合在一起說明。
  • 代碼截圖:
    技術分享圖片
    技術分享圖片

4.3 運行結果截圖

  • 一級難度
    技術分享圖片
  • 二級難度
    技術分享圖片
  • 三級難度
    技術分享圖片

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

  • Q1:不知該如何產生隨機運算符
  • A1:定義一個產生隨機數的函數,通過產生隨機數來對應所要的運算符,在三個難度級內皆可使用
  • Q2:定義了計算正確率的函數,但發現,如果用戶中途退出,所計算的正確率將是不正確的
  • A2:定義了一個count變量來計數,用戶做幾題就算幾題,比較科學
  • Q3:在寫中途退出的代碼時,運行發現最後一題結束後,也會輸出中途退出的提示
  • A3:增加一個判斷結構以及flag,使結束時不會再跳出

4.5 大作業總結

編寫大作業的時候,首先是先定義4個函數,分別是:一二三級的難度的函數以及輸出文字提示的函數,定下函數的大結構。接下來就是局部的思考,由主函數開始,用戶的輸入、輸入的結構以及輸入的導入的函數,一步步的分析、編寫。當寫完一級難度後,就可以通過復制黏貼來減輕編寫二三級難度的工作量,在編寫一級難度時,為了實現一個通用的功能,再定義一個函數,使其結構更清晰,擴展性也更好。
其中所遇到用戶的輸入問題,經過調試一般都能搞定。在今後編寫大作業的過程中,可以先從大局入手,再局部細化,一步步寫完部分函數,其間不斷的進行調試,等到寫完整個程序,其調試工作也在其間完成,形成一個有機整體。

C語言博客作業03--函數