第2次作業(yè)-----循環(huán)與嵌套循環(huán)
1.本章學習總結(jié)
1.1 思維導圖##

1.2 本章學習體會及代碼量學習體會##
1.2.1 學習體會###
循環(huán)題比之前順序分支結(jié)構(gòu)更難些,需要花的時間也更多。有的時候,一個題目就可以花上幾個小時去調(diào)試,比如龜兔賽跑,打印空心菱形這些稍微更復雜的情況。老師講解過的題,當時懂了,過后還是會忘記,必須自己馬上動手實驗一下,才是屬于自己的知識。所以,學習編程就是個*多練習多領(lǐng)悟*的過程,練熟手了,就自然會了。
1.2.2 代碼累計###

2.PTA總分


2.1PTA中循環(huán)結(jié)構(gòu)2次題目集的排名得分##
2.2 我的總分:##
循環(huán)題共290分
3.PTA實驗作業(yè)
3.1 PTA題目1##
輸入一個整數(shù),輸出每個數(shù)字對應的拼音。當整數(shù)為負數(shù)時,先輸出fu字。
3.1.1 算法分析###
定義變量number放輸入的數(shù),mask做累乘看統(tǒng)計number位數(shù)減一
輸入數(shù)number
if number<0,輸出fu ,并將number轉(zhuǎn)變成正數(shù)end if
將number的值賦給t
當number>9,即為兩位數(shù)時,number/=10,mask*=10,統(tǒng)計number位數(shù)減一的結(jié)果
do
n=t/mask;//將number第一位的值賦給n
t%=mask;//將t對mask取余,得到剩下的數(shù)字
switch(n),對應相應的數(shù)字0-9,并輸出其拼音
如果mask>0,說明還有數(shù)字未輸出,此時輸入空格
while mask>0時繼續(xù)循環(huán)
end do while
3.1.2 代碼截圖###


3.1.3 測試數(shù)據(jù)###

3.1.4 PTA提交列表及說明###

Q: 數(shù)字為個位時格式錯誤,其余答案錯誤
A: 沒有考慮到輸入的數(shù)字為 個位時,前后都不帶空格。所以在一開始判斷number是負數(shù)時,輸出fu后面應該帶一個空格,然后在每一次循環(huán)輸出相應拼音后進行判斷一下,如果mask>0,說明還有數(shù)字沒輸出,此時輸出空格,否則,不輸出空格。
3.2 PTA題目2##
本題目要求讀入菱形起始字母和菱形的高度,然后輸出空心字符菱形。所謂“空心菱形”是指:每行由兩端為字母、中間為空格的字符串構(gòu)成,每行的字符串中心對齊;上半部分相鄰兩行字符串長度差2,且字母從給定的起始字母逐一遞增;下半部分與上半部分對稱。
3.2.1 算法分析###
定義j,k分別表示第j行,第k個位置
定義n,ch表示有n行,初始字母
定義mid表示中間那行
for j從1 to n,j自增
定義num
如果j>num,num=n+1-j,轉(zhuǎn)換成相信對稱的行數(shù)
否則,num=j
如果num是第一或第n行
for x從1到mid,x自增
如果x==mid,輸出字母,其余輸出空格
end for
end if
否則
for k從1到mid+num-1,k自增
如果k==mid-num+1或k==mid+num-1
輸出字母,表示為ch+num-1
否則,輸出空格
end if
輸出換行符
end for
3.2.2 代碼###


3.2.3 測試數(shù)據(jù)###

3.2.4 PTA提交列表及說明###


Q:輸出的菱形第一行和最后一行多了一個空格和一個字符
A:將輸出字母的判斷循環(huán)條件改為k從1到mid,條件改為等于mid時輸出字母,其余輸出空格
3.3 PTA題目3##
烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,于是,每跑10分鐘回頭看一下烏龜,若發(fā)現(xiàn)自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續(xù)跑10分鐘;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在同一起點同一時刻開始起跑,請問T分鐘后烏龜和兔子誰跑得快?
3.3.1 算法分析###
定義s1,s2分別表示兔子和烏龜走的距離
定義T表示輸入的時間
定義flag表示兔子是睡覺還是奔跑,,開始初始為0j,k表示睡覺,循環(huán)經(jīng)歷的時間
for t從1到T
如果flag==1,則兔子睡覺,烏龜奔跑,到k累加到30的時候讓flag==0
否則兔子和烏龜都在跑
如果跑了10分鐘,兔子超過烏龜,那么讓flag=1,k=0,回到if循環(huán),兔子睡覺30分鐘
end for
如果s1>s2,輸出^_^ s1
如果s1=s2,輸出-_- s1
如果s1<s2,輸出@_@ s2
3.3.2 代碼###


3.3.3 測試數(shù)據(jù)###

3.3.4 PTA提交列表及說明###

Q1:輸入242,輸出的是-_- 726
A1:在判斷兩者跑的距離時,忘記兩個數(shù)相等要用兩個=表示
Q2:在一開始做的時候思路不太清晰
A2:通過老師講解和學習同學代碼,知道可以找規(guī)律,縮減代碼做題
4.代碼互評
4.1 代碼截圖##
同學代碼截圖

自己的代碼截圖

4.2 二者的不同##
- 1兩種代碼都能算出結(jié)果,且代碼量差不多
- 2同學的代碼用的數(shù)組做,先記錄輸入的字符,然后遍歷從最后一個字符算,依次i遞減到第一個字符,做的是pow(2,i)的累加
- 3我的代碼用的是讀入一個字符就做一次運算,如果讀入的為2就sum2+1,讀入的為0就sum2,最后累乘得到的sum就是要求的十進制數(shù)
浙公網(wǎng)安備 33010602011771號