1. 程式人生 > >函數3

函數3

4.5 其他 表示 方法 增強 加減乘除 隨機函數 等級 調試

1.本章學習總結

1.1 思維導圖

技術分享圖片

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

1.2.1 學習體會

1.這周學會了定義函數,對函數進行集成和封裝,以實現相應的程序功能,它可以把復雜的問題變簡單,增強了程序的可讀性。
2.區分了局部變量和全局變量,了解了變量的在程序中的一些作用原理,如:變量的作用域、存儲方式、靜態變量只賦初值一次,並且會保持上一次調用的值。
3.測試成績不理想,題量不夠,解題思路不清晰,在接下來的學習中多做題,多閱讀代碼,學會將別人的思路轉化為自己的。

1.2.2 代碼累計

技術分享圖片

2.PTA總分

2.1截圖 PTA中的排名得分

技術分享圖片

2.2 我的總分:

pta總分:145

3.PTA實驗作業

3.1 PTA題目1

本題要求實現一個判斷素數的簡單函數,並利用該函數驗證哥德巴赫猜想:任何一個不小於6的偶數均可表示為兩個奇素數之和。素數就是只能被1和自身整除的正整數。
其中函數prime當用戶傳入參數p為素數時返回1,否則返回0;函數Goldbach按照格式“n=p+q”輸出n的素數分解

3.1.1 算法分析

  • //定義判斷素數的函數
  • 定義循環參數i
  • 傳值給P
    • if(p==1) return 0 //1不是素數
    • end if
  • for 2 to P/2
    • if p%i==0 then
    • 返回值 0
    • end if
  • end for
  • return 1//素數返回1

  • //定義void Goldbach函數
  • 傳值給n
  • 定義循環參數i,j
  • int prime( int p )//聲明素數函數
  • for 1 to n-1 do
    • for 3 to n-1 do
      • if prime(i)+prime(j)==2 then//調用素數函數
        • if i+j==n do
        • printf("%d=%d+%d",n,i,j)
        • end if
      • end if
    • end for
  • end for

3.1.2 代碼截圖

技術分享圖片

技術分享圖片

3.1.3 測試數據

技術分享圖片

3.1.4 PTA提交列表及說明

技術分享圖片

Q1:判斷素數忽略了1不是素數,沒有全部正確,加上了一個if判斷1
A1: 調用素數函數減少了代碼量

4.大作業

4.1.函數關系圖

技術分享圖片

4.2.函數功能介紹

1.題庫使用說明和難度選擇提示 (1)

提供良好的界面,增強用戶體驗。

技術分享圖片

2.主幹和多個函數調用 (2)

聯系多個函數的紐帶,同時還有計時和選題數、步數功能(以下代碼為關鍵功能代碼,其中調用(3)、(4)、(5)函數不在此累贅)

技術分享圖片

3.生成隨機式子 (3)

隨機生成用戶類型題目(本程序擴展為三個等級都為加減乘除,以下代碼為一部分,其他原理相同)

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

4.對錯提示 (4)

判斷用戶計算對錯,並給出相應提示

技術分享圖片

5.限時函數 (5)

把用戶計算時間限定在一定時長(此為部分函數)

技術分享圖片

4.3 運行結果截圖

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

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

Q1:當小淞很皮,按錯輸入一串字母,然後程序崩了技術分享圖片
A1:通過以下框架實現穩定輸入(就算小淞睡鍵盤也不會崩了)
技術分享圖片

Q2:用隨機函數取余得到多位數時,會出現缺位如:
技術分享圖片
A2:用while語句限定一個範圍即可

Q3:怎麽計算出兩步的正確答案
A3:用switch對第二個運算符判斷然後計算,(在上方生成隨機式子 (3) 中有代碼)

Q4:除法怎麽判斷用戶是否正確(因為計算機的結果小數非常多)
A2:保留兩位小數(第三位四舍五入),用戶輸入到兩位小數即可

4.5 大作業總結

1.百度是我們的好朋友,不懂就百度。
2.多測試可以發現更多bug,多調試可以很好找出問題所在。
3.函數可以靈活運用,同一個函數每個人有不同的使用方法,同一個問題,解決方法千變萬化,所以不要被前人思想禁錮思維,打代碼也要打出自己的個性。

函數3