0.展示PTA總分
順序結構
分支結構
1.本章學習總結
1.1學習內容總結
1.學會了在程序有錯誤時進行調試(設置斷點並觀察變量,單步跟蹤)
2.明白了注釋文本應該用//
或/*
和*/
3.知道了多種數據類型及各自的格式控制字符
int型使用%d
float型使用%f
double型使用%lf
char型使用%c
%.2f表示保留兩位小數 %f保留六位小數
4.了解了6種關系運算符
<
小於 <=
小於等於 >
大於 >=
大於等於 ==
等於 !=
不等於 (注:=
表示賦值)
5.學會了使用if-else語句
6.明白了scanf語句中輸入變量時應該在變量名前加&
7.知道了調用數學函數時加入#include<math.h>
,並且知道了一些常用的數學函數表示方法
8.了解了switch語句及其中break語句的三種使用方法,及與if-else語句的相同點和不同點
共同點:①都能實現多分支結構
不同點:
①if-else需要判斷過個分支。而switch只進入滿足條件分支,無需比較其他分支。switch語句效率更高。
②switch語句只能處理等值條件判斷的情況,case后只能是常量。而if選擇結構的限制,特別適合某個變量處於某個連續區間時的情況。
③switch語句判斷的值必須是整型,if判斷整型數和浮點數都可以。
9.知道了程序中用for語句實現循環,for語句中的fahr++
相當於fahr=fahr+1
,並且for語句中用兩個分號來分隔三個表達式,但for的后面沒有分號
10.了解了a
和'a'
的區別
a
是變量;
'a'
是字符常量
變量放數據,常量不能變
11.認識了字符類型數據有字符型常量'A'
,'a'
,'9'
,'*'
等和字符型變量op
之分
字符型變量在定義時用類型名char
,例如:char op
12.知道了字符型數據的輸入輸出可以調用函數scanf()
,printf()
,getchar()
,putchar()
ch=getchar()
只能讀入一個字符,如果要輸入多個字符,需要多次調用該函數,一般采用循環調用的方式
for(i = 0; i <= 10; i++)
ch = getcher(); ```
* ```putchar(輸出參數)```可以輸出一個字符,輸出參數為字符型常量或者字符型變量
###13.記住了三種邏輯運算符,知道了邏輯運算符的運算對象可以是關系表達式或邏輯表達式,邏輯運算的結果是“真”或“假”,邏輯運算符&&和||的優先級低於關系運算符
```!```非 ```&&```與 ``` ||```或

###14.知道了在switch語句中,表達式和常量表達式的值一般是整型或字符型,所有的常量表達式的值都不能相等,在switch語句所有語句段的末尾使用break,可以簡單清晰地實現多分支選擇

###15.明白了在嵌套的if-else語句中,如果內嵌的if省略了else部分,可能在語義上產生二義性,也明白了else和if的匹配標准是**else與最靠近它的,沒有與別的else匹配過的if相匹配**

* 注:輸出結果:2
##1.2 本章學習體會
* 通過這兩三周時間的學習,我真正了解到了C語言的內容。剛開始的時候,因為學習內容比較簡單直白,再加上暑假有看慕課視頻,所以暑假看不懂的都有了解釋,那時的我欣喜若狂,十分激動,對於這門課程也**激發了極大的興趣**,覺得十分有趣,然而,隨着課程的繼續,我不明白的地方越來越多,所以開始常常問學長學姐,問明白的同學,在他們的幫助下,我也算是取得了些許的進步。
* PTA上的題目集讓我發現了許多不易引起我注意的問題,例如**空格問題**等等,這些問題我一定會**牢記於心,爭取不再重復**這些細節問題。
* 在**switch語句**上我還是運用不太熟練,但我一定會弄明白它。在這一段時間里,我了解到了許多的新知識,比如**駝峰命名法**,再比如**變量類型的區別**等等,對於vs我也更熟悉了,還學會了自己**調試**,找錯誤,我也在這些錯誤中取得了進步。
* 我的代碼量:(不包括重復寫)
|周|代碼量(行)|
|:---:|:--:|
|4|241|
|5|506|
|累計|747|
#2.PTA實驗作業
##2.1 題目名1
輸出三角形面積和周長 (15 分)
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
###2.1.1 數據處理
- 定義三角形三邊長分別為a、b、c,面積為area,周長為perimeter ,公式中的s。邊長定義為整型,其余因為有小數,定義為浮點型。
- 輸入邊長a,b,c。
- 運用if-else語句判斷是否邊長能夠構成三角形,即判斷是否符合三角形法則(三角形任意兩邊和大於第三邊),並且要用邏輯運算符&&與。
- 如果符合if的條件,則進入if的表達式中,利用算術公式和數學函數算出s,area和perimeter,然后保留兩位小數輸出area和perimeter。
- 如果不符合if的條件,則進入else語句,即輸出“These sides do not correspond to a valid triangle”。
###2.1.2 代碼截圖

###2.1.3 本題可擴展功能
* 判斷是否是直角三角形

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

* 寫了s和area的公式后,**忘記寫perimeter的公式**,我通過**不斷對比題目**而找出問題
* ```scanf```在vs上用```scanf_s```寫,在復制到PTA上時忘記去掉```_s```,我**把程序完整看了一遍**后知道錯誤
* **數學函數運用不熟練**,**多看書**
##2.2 題目名2
判斷一個三位數是否為水仙花數 (15 分)
本題要求編寫程序,判斷一個給定的三位數是否為水仙花數。三位水仙花數,即其個位、十位、百位數字的立方和等於該數本身。
###2.2.1 數據處理
- 定義百位數字hundred, 十位數字ten, 個位數字bit,以及被輸入數字number。均為整型。
- 輸入一個數number。
- 利用表達式算出相應的百位hundred,十位ten,個位bit,注意運用基本運算和取余%。
- 利用if-else語句判斷number是否為三位數。
- 如果number不是三位數,則輸出Invalid Value!。
- 如果是三位數,則進入else-if語句判斷是否為水仙花數。
- 如果是水仙花數,則輸出Yes,否則輸出No。
###2.2.2 代碼截圖

###2.2.3 本題可擴展功能
* 獲得四位數(或者其他位數)的水仙花數

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

* **hundred==0**並不代表一定不是三位數,兩位數和一位數的百位也是0,理解錯誤,我通過詢問同學一起互相討論,從而改正成number和1000與99進行大小對比,即```number>=1000||number<=99```
##2.3 題目名3
12-24小時制 (15 分)
編寫一個程序,要求用戶輸入24小時制的時間,然后顯示12小時制的時間。
###2.3.1 數據處理
- 定義小時hour,分鍾minute。均為整型。
- 輸入24小時制時間。
- 運用if-else語句判斷hour是否大於等於12。
- 如果hour>=12,進入嵌套的if-else語句中,再判斷hour是否等於12。
- 如果hour==12,因為中午12點被認為是下午,所以24小時制的12:00就是12小時制的12:00 PM。
- 如果hour>12,則令hour-12后再賦值給hour,然后按照格式輸出。
- 如果hour<12,則進入else語句,直接按照格式輸出即可。
###2.3.2 代碼截圖

###2.3.3 本題可擴展功能
* 輸入12小時制的時間,然后顯示24小時制的時間

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

* 開始時不知道小時和分鍾之間的```:```應該怎么寫,於是用了char()字符型變量,可是事實上它是常量,后來問了同學發現**直接寫**就可以了
* 將hour分為兩段,在其中一段中需要**運用嵌套語句**
* 要學會多思考,在腦海中不斷重復過程,剛開始思路不清晰,被同學點撥后一下子就清楚了
#3.閱讀代碼
## ACM 題庫題解: poj 3750 小孩報數問題
題目截圖:

代碼截圖:

代碼分析:
* 代碼功能:輸入n,w,s,以及n個小孩的名字(人名不超過15個字符),令n個小孩按順序從第w個開始報數,報到規定的第s個后出列,游戲直至小孩全部出列為止
* 代碼優點:定義變量名稱准確,容易讓人明白意思;運用for語句,while語句,if語句,其中相互嵌套,邏輯順序嚴謹;語句末尾使用break語句,節省了運算時間;作者考慮到了人數不到s時的情況並且寫出相關解決辦法,十分全面