1.本章學習總結
1.1 思維導圖
1.2 本章學習體會及代碼量學習體會
1.2.1 學習體會
- 通過前三章的學習和代碼量積累漸漸對C語言有了一個入門的概念,由於暑假時候沒有在pta上面刷題感覺自己學習進度總是落在別人后面,但是經過老師的課堂派和pta上作業的題量的練習也可以慢慢地跟上去了。
- 經過這段時間的學習我覺得C語言的學習不能只停留在課本和視頻講解上,自以為可以記住看過的代碼,其實最主要的還是打代碼,從打代碼中去發現問題和解決問題,也可以從中也容易記住一些代碼常用語,而不至於死記硬背,
所以每天都要有一定的代碼量作為保證,熟能生巧,這樣進步比較快。 - 當然興趣也是學習的好老師,每次從編譯錯誤到答案錯誤再一次一次的進行修改到最后的題目滿分就會給予我動力,增加了編寫的興趣。
- 這段時間的學習讓我注意到變量命名規范,代碼規范的重要性,不僅自己可以編寫過程中不會亂,其他程序員看自己代碼時也會更加清楚明了。
1.2.2 代碼累計
2.PTA總分
2.1圖片展示
2.2 我的總分:
第一章順序結構練習:100分
分支結構:125分
總 分:225分
3.PTA實驗作業
3.1 PTA題目1
- IT協會舉辦程序設計競賽,准備購買U盤作獎品。請編寫程序,根據活動經費和U盤單價預估可購買U盤的最大數量。
3.1.1 算法分析
1.定義單精度浮點變量finance表示活動經費、univalent表示U盤單價。
2.定義整型變量number表示可購買的最大數量。
3.輸入變量finance、univalent。
4.number=finance/univalent+0.000001,輸出number。
3.1.2 代碼截圖
3.1.3 測試數據
3.1.4 PTA提交列表及說明
Q1:浮點的精確度不夠;
A1:可以從編譯器調試上發現有精度誤差,調試圖1-1說明下面展示;
對finance增加0.000001精度;
Q2:出現編譯上的錯誤;
A2:上課上用手機進行修改沒有考慮到等號用了中文形式的;
Q3:double型的精度不夠;
A3:將finance和univalent改為float型的並給最后number加上0.000001的精度。
圖1-1
3.2 PTA題目2
- 本題要求編寫程序計算某年某月某日是該年中的第幾天。
3.2.1 算法分析
1.定義整型變量year表示年份、month表示月份、day表示日、x表示額外的天數、number表示該年中的第幾天。
2.輸入變量year、month、day。
3.若year%4==0且year%100!=0,或者year%400==0,則x等於1。
4.否者x等於0。
5.運用switch語句,判斷month值,與case的值對應,計算case對應的numbe;
6.number=輸入的month之前的每個月的天數(二月都寫成28天)+x+day,輸出number;
7.如果輸入的月份有誤,輸出“error”。
3.2.2 代碼
3.2.3 測試數據
3.2.4 PTA提交列表及說明
Q1:一開始輸入變量后無法輸出答案;
A1:再scanf下直接加了一段printf查看是不是輸入的數發生改變,發現變量前忘加&符號,再將代碼搬到pta中忘記刪掉printf導致答案全部錯誤;(圖片1-2展示在這段說明下面)
Q2:要考慮怎么把閏年或平年的二月天數加入計算天數;
A2:引入if-else語句進行判斷x(二月額外天數),平年二月是28+0天,閏年則是28+1天。
Q3:這段代碼是否會判斷day大於每個月最大日期的情況;
A3:顯然不行,可以引入if-else語句進行判斷,但代碼量會大大增加;如果題目允許可以在輸入之前加一段話進行提示。
圖1-2
3.3 PTA題目3
- 本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√
s(s−a)(s−b)(s−c) ,其中s=(a+b+c)/2。
3.3.1 算法分析
1.定義整型變量a,b,c分別表示三角形的三條邊。
2.定義雙精度浮點型變量area用於表示面積,perimeter用於表示周長,s用於表示計算area的輔助變量。
3.輸入變量a,b,c。
4.若a<b+c或b<a+c或c<a+b,則三條邊可以構成三角形進入area和perimeter運算。
5.s=(a+b+c)/2;
area=pow(s*(s-a)*(s-b)*(s-c),0.5);
perimeter=a+b+c;輸出area和perimeter。
6.若不滿足上面條件,則三條邊不能構成三角形,直接輸出"These sides do not correspond to a valid triangle"。
3.3.2 代碼
3.3.3 測試數據
3.3.4 PTA提交列表及說明
Q1:判斷條件有誤,將判斷是否是三角形的條件弄錯為兩邊之和小於第三邊;
A1:將判斷更改為a<b+c和b<a+c和c<a+b;
Q2:邏輯運算符使用錯誤;
A2:判斷是否為三角形的三種情況之間的||改為&&;
Q3:此代碼不能解決三條邊為實數的構成三角形的面積和周長;
A3:將a,b,c定義為雙精度浮點型。