函數3
阿新 • • 發佈:2018-11-12
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
- if prime(i)+prime(j)==2 then//調用素數函數
- end for
- for 3 to n-1 do
- 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