這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11611 |
這個作業的目標 | 學習break語句和continue語句並應用 |
學號 | 20208997 |
1.PTA實驗作業(20分/題)
1.1 題目名1
打印九九口訣表
題目描述:
下面是一個完整的下三角九九口訣表:
1 * 1=1
1 * 2=2 2 * 2=4
1 * 3=3 2 * 3=6 3 * 3=9
1 * 4=4 2 * 4=8 3 * 4=12 4 * 4=16
1 * 5=5 2 * 5=10 3 * 5=15 4 * 5=20 5 * 5=25
1 * 6=6 2 * 6=12 3 * 6=18 4 * 6=24 5 * 6=30 6 * 6=36
1 * 7=7 2 * 7=14 3 * 7=21 4 * 7=28 5 * 7=35 6 * 7=42 7 * 7=49
1 * 8=8 2 * 8=16 3 * 8=24 4 * 8=32 5 * 8=40 6 * 8=48 7 * 8=56 8 * 8=64
1 * 9=9 2 * 9=18 3 * 9=27 4 * 9=36 5 * 9=45 6 * 9=54 7 * 9=63 8 * 9=72 9 * 9=81
本題要求對任意給定的一位正整數N,輸出從1 * 1到N * N的部分口訣表。
輸入格式:
輸入在一行中給出一個正整數N(1≤N≤9)。
輸出格式:
輸出下三角N*N部分口訣表,其中等號右邊數字占4位、左對齊。
輸入樣例:
4
輸出樣例:
1 * 1=1
1 * 2=2 2 * 2=4
1 * 3=3 2 * 3=6 3 * 3=9
1 * 4=4 2 * 4=8 3 * 4=12 4 * 4=16
1.1.1數據處理
數據表達:本題變量為N,i,j,n,其中i,j,n通過定義得到,N通過輸入得到;都為整型變量。
數據處理:運用for語句循環;表達式如下:
for(j=1;j<=N;j++){
for(i=1;i<=j;i++){
n=i*j;
偽代碼為:定義所需變量N,i,j,n,
輸入一個數N;
使用兩個for循環語句(嵌套循環): 以簡化代碼
for(j=1;j<=N;j++){
for(i=1;i<=j;i++){
n=i*j;
最后輸出所需的乘法表:printf("%d*%d=%-4d",i,j,n)
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2 | 1 * 1=1 1 * 2=2 2 * 2=4 | 從一乘一到二乘二,呈階梯狀 |
5 | 1 * 1=1······5 * 5=25 | 從一乘一到五乘五,呈階梯狀 |
7 | 1 * 1=1······7 * 7=49 | 從一乘一到七乘七,呈階梯狀 |
9 | 1 * 1=1······9 * 9=81 | 從一乘一到九乘九,呈階梯狀 |
1.1.4 PTA提交列表及說明
提交列表說明:
格式錯誤:因為代碼打成出來沒有間隔,導致格式錯誤。
解決方式:在輸出語句中加上-4d:printf("%d*%d=%-4d",i,j,n);最后編譯正確。
1.2 題目2
一錢生多錢
題目描述:
在日常生活中,我們常常需要將一些大額的人民幣換算成零錢,已知我們有許多面值5元,2元和1元的人民幣。
編程實現:輸入我們需要兌換的金錢數,然后我們用這些面值5元,2元和1元的人民幣來兌換,要求每一種面值都至少有1張,然后輸出有多少種兌換方式。
輸入格式:
輸入在一行中給出待換的零錢數額(大於等於8小於等於100)
輸出格式:
每行輸出一種兌換方式,按照如下格式輸出(並且每一種面值的人民幣都是從小到大輸出):
five=五元數量,two=兩元數量,one=一元數量
輸入樣例:
在這里給出一組輸入。例如:
13
輸出樣例:
在這里給出相應的輸出。例如:
five=1,two=1,one=6
five=1,two=2,one=4
five=1,two=3,one=2
five=2,two=1,one=1
1.2.1 數據處理
數據表達:本題變量為n,x,y,z,count,n通過輸入得到,都定義為整型。
數據處理:運用for循環語句進行嵌套循環,再運用一個for語句,表達式如下:
for (x = 1; x<= n / 5; x++)
for (y = 1; y<= n / 2;y++)
for (z = 1; z<= n; z++)
if (5 * x + 2 * y + z == n)
最后輸出得到答案。
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
8 | five=1,two=1,one=1 | 8可分為一個五,一個二,一個一,為題目要求的最小值 |
5 | 無輸出 | 小於題目要求的大於8小於100 ,所以不符合,無輸出 |
9 | five=1,two=1,one=2 | 9可分為一個五,一個二,兩個二,為中間值 |
11 | five=1,two=1,one=4或five=1,two=2,one=2 | 11可分為一個五,一個二,四個一或者一個五,兩個二,兩個一,為中間值 |
1.2.4 PTA提交列表及說明
提交列表說明:
編譯錯誤:在編譯過程中if語句中只打了一個等號,賦值錯誤。
解決方式:提交后根據提示發現錯誤,及時改正。
2.代碼互評(5分)
同學代碼截圖1
自己代碼截圖1
不同之處:
1.該同學變量定義較少,如j*i,我則是另行定義n=j * i,他使得代碼更為簡潔。
2.且該同學在輸出語句后又使用了一個for語句,增加了i<N的條件,而我這里則沒有這一項。
同學代碼截圖2
自己代碼截圖2
不同之處:
1.該同學變量都為相應的英文字母,而我的則是取一個最簡字母作為變量,相對簡便。
2.且該同學沒有定義一個新的變量去累加,而是直接在for語句中累加,這樣看起來更為簡短。
3.學習總結(15分)
3.1 學習進度條(5分)
周/時間 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第一周 | 5h | 68 | 簡單編程 | 無 |
第二周 | 15h | 251 | 算數運算和賦值運算 | 無 |
第三周 | 25h | 368 | for循環語句的應用,浮點型的學習 | 無 |
第四周 | 26h | 379 | 自定義函數和調用函數 | 對調用函數的應用還不夠清楚 |
第五周 | 28h | 356 | 分支結構中的if-else語句 | 對於使用分支結構的邏輯還不夠清晰 |
第六周 | 30h | 398 | switch語句的學習和應用 | 對於題目中的邏輯先后問題還不太能理解 |
第七周 | 28h | 360 | while語句及do-while語句的學習及運用 | 這兩種的具體循環點及循環特點 |
第八周 | 26h | 343 | break語句的深層次學習及continue語句的學習 | break語句與continue語句的用法區別及兩種語句的使用位置 |
3.2 累積代碼行和博客字數(5分)
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
1.在本周我們學習了break語句和continue語句,在課堂上,聽老師講感覺是不難,但是到了做題目時就覺得不會了。還是得要多看看書。
2.這已經是第十五周,馬上就是十六周了,離考試也不遠了,看着這些題目,我都感覺我要掛科了,越到后面就越有這樣的感覺。
3.關於老師上課時留給我們的問題——如何使用break語句跳出整個大循環:
1. 可以在所有循環中都添加break語句。
2. 使用在循環中使用goto語句,goto語句后接上想要跳出循環的變量,則直接跳出循環到指定位置。