0. 展示PTA總分
1.本章學習總結
1.1 學習內容總結
- 學習隨機函數使用:
fabs()//絕對值
round()//四舍五入
pow( x,n)//求x的n次方
sqrt()//求平方根
-
選擇結構的使用:
-
if-else結構:適合於區間判斷,適應性強,可處理更多情況。如:
-
switch結構:適合於離散值的判斷。可讀性好,整體流程清晰明確。如:
-
-
循環結構的使用:
-
for循環結構:第一個是初始化,第二個是條件語句,第三個是自處理語句。 循環時第一個語句只使用一次,然后判斷是否滿足第二個語句,滿足則進入循環體。直到不滿足循環體再跳出。
-
while循環結構:先對while()括號內的條件進行判斷,若為真則進入循環,否則跳出循環。
-
do-while循環結構:與while循環類似,但是do-while循環是先進行循環體的循環,之后再對while()的條件進行判斷,若條件為真則繼續循環,否則會跳出循環。
-
總結:個人認為for循環結構更常用;而while和do-while的區別在於判斷條件的先后,即while是先判斷,程序有可能不進行循環;do-while是后判斷,就是說無論是否滿足條件都只是會進行一次循環。
-
-
VS的調試。
1.2 本章學習體會
-
學習體會:
- 整體感受:在這兩周的學習中,整體感受還算不錯。林麗老師上課很仔細,很認真;感覺班級學習c語言的氛圍也很濃厚。我特別喜歡課堂互動那個形式,可以讓我在學習新知識的過程中更加快速地接受。但是我個人感覺除了課后的PTA練習,在上課期間動手寫代碼的時間不太夠,因此在上過一節新課后可能對新教的代碼只能停在認識,並不能立即運用。
- 經過兩周的學習,可以深刻的感受到課前預習和課后復習的重要性。課前認真完成課堂派的預習作業和課后及時的PTA訓練可以大幅度地提升學習效率。
- 學會獨立思考。在寫代碼是遇到錯誤點時不要第一時間求助,而是應該先嘗試自己運用VS等工具進行調試,實在是不懂再去詢問老師,助教,同學或者上網搜索。
- 學會總結很重要。在一些小錯誤上一定要提醒自己不能再犯,同時寫代碼也要規范清晰,才方便修改閱讀。
-
代碼量:
2.PTA實驗作業
2.1 PTA題目1
c01-順序結構練習
7-7 計算銀行存款的本息
本題目要求計算銀行存款的本息,計算公式為sum=money×(1+rate)^year,其中sum為存款到期時的本息合計(稅前),money是存款金額,year是存期,rate是年利率。
2.1.1 數據處理
1. 數據表達
- 定義存款金額money、存期year、本息sum和年利率rate。(注:4個變量均為實型。)
2.數據處理
- 依次輸入存款金額money、存期year、年利率rate。
- 通過題目給的公式sum=money×(1+rate)^year進行sum的運算。(注:因為最后sum是保留2位小數,故需要注意浮點數的定義)
- 輸出實數sum。
2.1.2 代碼截圖
2.1.3 本題可擴展功能
- 本題經過修改,可以分別計算本金與利息
2.1.4 PTA提交列表及說明
說明:在優化代碼中的變量名時句末漏輸了分號,導致的編譯錯誤,通過VS中的錯誤列表的提示找到錯誤。
2.2 PTA題目2
c02-選擇結構
7-4 回文數
判斷一個5位數是不是回文數。例如12321是一個回文數,即它的個位與萬位相同,十位與千位相同。。
2.2.1 數據處理
1. 數據表達
- 定義輸入的正整數number,個位數digit,十位數ten,百位數hundred,千位數thousand,萬位數tenThousand。(注:所有變量均是整型。)
2.數據處理
- 輸入五位正整數number。
- 依次通過整除(/)與取余數(%)來將number的五個數字分開。
- 通過if-else結構判斷萬位與個位,千位與十位是否相等來判斷是否為回文數。
- 輸出yes或者no。
2.2.2 代碼截圖
2.2.3 本題可擴展功能
-本題利用了整除與取余來分離整數的各位數,但是局限於輸入的數被限制為5位數,因此我們可以利用循環來拓展它的功能,比如計算水仙花數等。如圖:
但是該代碼存在可能運行超時的毛病(本人能力有限,只能寫成這樣了...),但是可以拓展為輸出N位數中所有的水仙花數。
2.2.4 PTA提交列表及說明
說明:雖然做對了,但是對於多位數的分離以及各個符號的運用任然需要多練習。
2.3 PTA題目3
c02-選擇結構
7-3 輸出三角形面積和周長
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√
s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
2.3.1 數據處理
1. 數據表達
- 定義輸入的三邊邊長a b c,計算的值s,面積area,周長perimeter。(注:三邊的邊長是整型,s,面積,周長是實型。)
2.數據處理
- 輸入三邊邊長a b c。
- 通過算術運算計算s,周長與利用題目的公式計算面積。
- 通過if-else結構來判斷是否符合三角形法則,即兩邊之和大於第三邊。
- 根據判斷結果判斷是輸出area&perimeter還是These sides do not correspond to a valid triangle。
2.3.2 代碼截圖
2.3.3 本題可擴展功能
- 本題的判斷語句中首先有對是否為三角形做判斷,因此,在此基礎上可拓展多個關於三角形的計算。
2.3.4 PTA提交列表及說明
說明,計算最終答案時既有整型的運算,也有實型的運算,因為最終答案是保留兩位小數,所以在進行整型運算時需要乘1.00,否則最后的答案可能出現錯誤。
3.閱讀代碼
ACM題解poj 3751 時間日期格式轉換
代碼截圖:
代碼功能:對輸入的時間日期實現格式的轉換。
亮點:
- 代碼簡潔清晰,格式標准,令人閱讀時毫無障礙。
- 在運用while 循環時后方巧妙地定義了一個字符串,並且接上一個判斷語句來對am和pm實現判斷。
- 對於變量的定義十分正確,避免了因閱讀錯誤而導致的代碼錯誤。
- 在循環體內,每輸入一次便接上一個getchar(),是為了完成對每一個數字之后的字符進行吸收,若沒有getchar(),則程序最后輸出的答案會出現錯誤,因為有一部分的%d吸收的不是數字而是字符(注:測試時的字符必須使用英文字符,否則程序輸出內容一樣會有錯)。
- 在此段代碼中:
scanf("%d", &year);
getchar();/*這兩句代碼的作用等同於scanf("%d %c",&year,&op);*/