1.本章學習內容
1.1思維導圖
1.2本章學習體會即代碼量學習體會
1.2.1學習體會
在本章中對循環的內容進行了加深訓練,學習了一種解決問題的方法循環嵌套,也學到了偽代碼的運用,在描述算法是運用偽代碼往往能然閱讀者更能明白代碼的功能。目前對偽代碼的運用還不是很熟練,用偽代碼描述算法也有點不習慣
1.2.2代碼累計
2.PTA總分
2.1截圖PTA中循環結構2次題目集的排名得分
2.2我的總分
總分:290
3PTA實驗作業
3.1PTA題目1
從讀入的整數數據中,統計大於零的整數個數和小於零的整數個數。用輸入零來結束輸入,程序中用變量 i 統計大於零的整數個數,用變量 j 統計小於零的整數個數。
3.1.1算法分析
輸入多個不為零的數
while(n!=0) do
if(n>0) then
i++ //計算正數的個數
else
j++ //計算負數的個數
end if
end while
輸出i和j的值
3.1.2代碼截圖
3.1.3測試數據
3.1.4PTA提交列表及說明
- Q1:剛開始出現答案錯誤
- A1:感覺在編譯器上並沒有什么問題,后來發現輸入的數值應該是先輸入再判斷而不是先判斷再輸入
- Q2:運行超時
- A2:在判斷n等於0時輸入結束時所用語句有錯誤。
3.2PTA題目2
烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鍾可以前進3米,兔子每分鍾前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鍾回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鍾,否則繼續跑10分鍾;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在同一起點同一時刻開始起跑,請問T分鍾后烏龜和兔子誰跑得快?
3.2.1算法分析
輸入比賽結束的時間
int rd=0 td=0 flag=0 //初始化烏龜、兔子所走的路程
for time=1 to T do
time1=0 //初始化兔子休息的時間
rd+=9 //烏龜沒分鍾走3米
if(flag==0) then //flag=0代表兔子沒在休息
rd+=9
end if
if(time%10==0) then
if(rd>td) then //兔子跑得比烏龜遠開始休息
while(time1<30&&time1+time<T) do //判斷兔子休息的時間不超過30分鍾,並且判斷比賽的總時間不超過限制
td+=3
time1++
end while
time=time1+time
end for
if(rd>td) then
兔子贏了輸出兔子跑的路程
end if
if(rd<td) then
烏龜贏了輸出烏龜走的路程
end if
平局輸入任意一個所走的路程
3.2.2代碼截圖
3.2.3測試數據
3.2.4PTA提交列表即說明
- Q1:之前幾次錯誤基本都是由於沒有考慮到在兔子睡覺時比賽結束這一例子
- A1:前幾次都是如果兔子比烏龜跑得遠的話烏龜走的路程直接加上90而兔子的不變,后來才再加上一層循環逐分鍾判斷總時間是否會超過比賽的時間
3.3PTA題目3
本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2n次方−1的梅森數。
3.3.1算法分析
輸入n表示范圍
初始化flag=0 flag1=0
for(i=2 to n ) do
number=pow(2,i)-1
flag=0 //用於判斷是否是素數
for(x=2 to number) do
num1=number%x
if(num1==0) then //判斷是否為素數
flag=1
end if
end for
if(flag=0) then
是素數則輸出
flag1=1
if(flag1=0)
輸出None //范圍內沒有滿足要求的數
3.3.2代碼截圖
3.3.3測試數據
3.3.4PTA提交列表即說明
- Q1:出現答案錯誤n=1時出現問題
- A1:當n=1時程序無輸出,經調試過后發現最后一個判斷范圍內是否有滿足條件的數放在了第一個for里面出現了n=1時不會進入第一個循環從而導致無輸出,將第一個for‘的范圍縮小就解決了’