第二次作業--循環結構


1.本章學習總結

1.1思維導圖

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

1.2.1學習體會

·經過這兩周的學習,我學到了循環結構的一些知識,for語句,while語句,do-while語句,和上周相比,程序執行的步驟大幅度增加,一般的斷點調試有着明顯的局限性,利用printf輸出是一個可以處理大規模循環的調試方法。
·flag是個好東西,這個可愛的小朋友可以用來表示一個狀態,配合if可以簡化很多東西,膜拜發flag的大神。
·PTA方面體會,循環結構的題目和順序分支結構相比,題目難度略大,PTA在提交時很難一次看到一片紅,要不斷地去修改,這也許是一個計算機專業學生必由之路吧,任何程序不可能十全十美,只有不斷調試修改,才能臻於完美,當把PTA中一個個綠色的答案錯誤全部變成紅紅的答案正確,成就感十足。

1.2.2代碼累計

PTA總分

2.1排名截圖

2.2我的總分:

290

PTA作業

3.1簡單計算器

模擬簡單運算器的工作。假設計算器只能進行加減乘除運算,運算數和結果都是整數,四種運算符的優先級相同,按從左到右的順序計算。

3.1.1算法分析

定義num,result分別用來表示被用來運算的數和結果,定義flag表示輸入是否合法,定義ch來表示運算符。
輸入num
while ch!=0
do 輸入ch,輸入num
if ch/&&num0
then 輸出error
switch(ch)
case + result=result+num
case - result=result-num
case * result=result*num
case / result=result/num
default 輸出error
end while
輸出result

3.1.2代碼截圖

3.1.3數據測試

3.1.4提交列表

Q:這種做法與老師上課講的用oldCh保存原有運算符的做法相比有什么好處。
A1:老師的做法有一個缺點,就是第一個輸入的數的正負是受限制的,比如上課展示的代碼只可以來做第一個數是正數的情況。
A2:在循環外先輸入一個數,在用一個循環條件恆成立的do-while循環配合break使用,可以在循環中隨時退出,更加靈活。

3.2給食堂打分

在商業和科學研究中,人們經常需要對數據進行分析並將結果以直方圖的形式顯示出來,這會大大增加這些數據的直觀性,也便於數據的分析與對比。下面以顧客對餐飲服務打分為例,輸入一個正整數repeat (0<repeat<10),做repeat次下列運算:

輸入一個正整數n(1≤n≤20),表示有n個學生被邀請來給自助餐廳的食品和服務質量打分,分數划分為1~5這5個等級(1表示最低分,5表示最高分),試統計調查結果,並用*打印出如下形式的統計結果直方圖。

3.2.1算法分析

定義repeat表示要評分的次數,n表示每次評分要有多少人,num1,num2,num3,num4,num5表示每種評分的個數
輸入repeat
for i=1 To repeat
輸入n
num1=num2=num3=num4=num5=0//歸零,防止累加
for j=1 To n
輸入mark
switch(mark)
case 1 num1++
case 2 num2++
case 3 num3++
case 4 num4++
case 5 num5++
end for
輸出1:for j=1 To j=num1
輸出2:for j=1 To j=num2
輸出3:for j=1 To j=num3
輸出4:for j=1 To j=num4
輸出5:for j=1 To j=num5
end for

3.2.2代碼截圖

3.2.3測試數據

3.2.4提交列表

本題最最需要注意的地方是在輸入n后要對5個num進行歸零操作,不然最后一張打印的表會是所有數據的總和。
此外,本題要用多個for語句,一定要分清每個for之間的關系,是嵌套還是並列。

3.3單詞長度

你的程序要讀入一行文本,其中以空格分隔為若干個單詞,以.結束。你要輸出每個單詞的長度。這里的單詞與語言無關,可以包括各種符號,比如it's算一個單詞,長度為4。注意,行中可能出現連續的空格;最后的.不計算在內。

3.3.1算法分析

定義ch表示輸入的字符,定義count用來計數,flag用來處理空格帶來的格式錯誤問題
while(1) do輸入ch
if ch!=' '&&ch!='.' count++//合法字符,count計數
Then else if ch' '&&count!=0//如果中間有多個空格,只輸出一個count
輸出count
Then else if ch
'.' &&count!=0//出現'.'先完成最后的輸出,再跳出循環
輸出count break

3.3.2代碼截圖

3.3.3測試數據

3.3.4提交列表

count!=0和格式是這道題的重點,也是易錯點,如果在輸出數據的時候不注意要加上count!=0的判斷條件,很容易多輸出好幾個0,因為熊孩子們不一定在詞與詞之間只輸入一個空格。
另外,我自認為在按字符輸入的時候用while(1)和break配合的“迷之死循環”更加靈活,因為字符只能每次輸入一個,break在跳出循環方面更加靈活。

4.代碼互評

小伙子,你要知道,你自己渣渣得很!!!

康友煌同學的念數字代碼

我的念數字代碼

ROUND 1:代碼簡潔性

30行 VS 60+行,

康友煌WIN。

ROUND 2:程序運行情況

將數按字符輸入,並挨個念出 VS 按常量輸入,調用pow函數算出幾位,在從左到右依次提出每位數字念出,

康友煌WIN。

格式錯誤處理方面

都用了flag,但是我的flag處理明顯不如他,畢竟我是用了連個switch的男人,讓flag直接成了擺設。

康友煌WIN。

被完虐。

總結

在做題的時候不要沖動,不要因為老師上課講過或者見過就馬上去寫,先構思好,怎么可以讓代碼簡單。
(說實話,我的代碼在一開始寫了100+行,后來把可以刪掉的大括號刪了,把case printf break寫在了一行才變成了現在的60行,剛寫完的時候我甚至有成就感,希望以后不會有這樣的成就感.).
向前學習,后面學習的很多知識可以簡化以前的問題,比如數組。

生命不息,學習不止,這次是我們計算機的學生一生的追求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM