0.展示PTA總分
順序結構
選擇結構
1.本章學習總結
1.1 學習內容總結
第一章
- printf(“···”)輸出語句會把“”中的字符串原樣輸出,也可以加%進行四則運算,即%d或者%f是求值,求printf(“···”,···)中,后面的值。
- \n是在輸出內容后再空一行。
- 自定義或者其他變量都有自己的數據類型,比如四種整數類型(byte、short、int、long)、兩種浮點數類型(float、double)、一種字符類型(char)等。
- c語言程序設計基本由數據表達和數據處理來構成,數據表達即定義數據以供使用,數據處理是程序主體,在流程控制中,我們已經見到了順序、分支(if else等)和循環(for、while、do while)3種基本控制結構。
- 標識符(標識符由字母、下划線、數字這三個方面組成,但開頭必須是字母或下划線。
另外,關鍵字不能是標識符,如main等)有:byte、short、int、long、float、double、char、boolean、n等。 - 常量有數據類型,常量是指在程序運行中不能改變的數據,有整型常量、實型常量、字符常量等。
- 運算符有:+、-、*、/、&&、>、<、||等,有優先等級之分。
- 每條語句最后要加分號;來執行運算。
- 用一對大括號{}將若干語句順序組合在一起就形成了一個復合語句。
- scanf輸入語句的基本形式是scanf(“%d或者%f”,&輸入內容),&非常重要。
第二章
- 可以用來注釋文本的符號有:/```/和//。
- return 0;的作用是結束主函數的運行,並向系統返回0,作為程序的結束狀態。
- float和double的區別在於double型數據占用空間和精確度都更大。
- C語言中變量的含義和數學中變量的含義不同。C語言中的變展在數學上是錯誤的,在C語言中卻表示把變量x的值加1,然后再保存到x中。例如,x=x+1。
- C語言區分大小寫字母, 它認為fahtr 和Fahr是不一樣的。
- 賦值表達式:變量=表達式; 賦值運算符的左邊必須是一個變量。=是賦值運算符。
- printf(“%d %f”,a,b)中%d、f和a、b是一一對應的。
- ==是關系運算符,用於比較兩個操作數是否相等;而=是賦值運算。
- if else語句的一般形式為:
if (表達式)
語句1;
else
語句2; - for循環語句基本形式:
for(表達式1;表達式2;表達式3)(注意這里沒有分號)
循環體語句
表達式3在循環語句后執行。還要有變量的初始值。 - %求余運算在整數間進行。
- 平方根函數sqrt (x),絕對值函數fabs (x),冪函數pow(x,n),指數函數exp (x),以e為底的對數函數log (x): 計算Inx。
第三章
- if else語句適用於二分支結構,而else-if語句適用於多分支結構;else-if的一般形式為:
if (表達式1)
語句1;
else if (表達式2)
語句2;
···
else if (表達式n-1)
語句n-1;
···
else
語句n; - 要區分數字和數字字符, 例如,1是整型數字,而1是字符。2字符型變量
字符型變量在定義時用類型名char,例如:
char op;
定義了一個字符型變量op,它的值是字符型數據。op='+'將字符型常量'+"賦給字符型變量op。 - 字符輸人函數getchar ()
調用字符輸人函數getchar ()可以從鍵盤輸人一個字符。設c是是字符型變量,函數getchar ( )的一般調用格式為:ch=getchar ();
其功能是從鍵盤輸人一個字符,並賦值給變量ch。
由於函數gelchar ()只能讀人一個字符,如果要輸人多個字符,就需要多次調用該函數,-般采用循環調用的方式。例如以下程序段:
char ch;
for (i=0; i< 10; i++)
ch=getchar ( );
語句ch=getchar ()被循環調用了10次,共讀入10個字符。 - 字符輸出函數putchar()
調用字符輸出函數putchar ()可以輸出一個字符。函數putchar ()的般調用格式 為:
putchar (輸出參數);
其功能是輸出參數是字符型變量或字符型常量。 - switch語句:
在swich語句的每個語句段中都使用break語句這是switch語句的主要使用方法,一般形式為:
switch (表達式){
case常量表達式1:語句段1; break;
case常量表達式2:語句段2; break;
···
case: 常量表達式n:語句段n; break;
default: 語句段n+1; break;
}
如果不使用break,不但執行對應語句,還執行后面的語句。
第四章
- while語句和do-while語句:
while語句是先判斷條件,條件滿足后才執行循環體; do while語句是先執行循環體,后判斷循環條件,
do while語句至少執行一次,但while語句可能1次都不執行。
*contimue語句和break語句:
contimue語句和break語句的區別在於,break結束循環,而continue 只是跳過后物語句繼續循環。break 除了可以中止循環外,還用手switch語句,而continue只能用於
循環。
1.2 本章學習體會
可能是對文字理解能力的下降,感覺c語言的學習有些吃力,但是努力在跟,感覺還是很容易遺漏一些很重要哦的知識點,比如scanf語句中常常遺漏&導致出錯,感覺可能此專業是真的需要每天都要投入大量時間來練習代碼,然后熟練度達到一定水平之后可能就比較容易游刃有余,對此專業真的有點愛恨交織,會更加嚴格的要求自己。
2.PTA實驗作業
2.1 7-7 計算銀行存款的本息
- 本題目要求計算銀行存款的本息,計算公式為sum=money×(1+rate)
year
,其中sum為存款到期時的本息合計(稅前),money是存款金額,year是存期,rate是年利率。
2.1.1 數據處理
- 數據表達:
1.int money,存儲輸入的存款金額數;
2.int year;存儲輸入的存期;
3.double rate,存儲輸入的年利率;
4.double sum,為本息合計做存儲准備; - 數據處理:
一個輸入語句,一個賦值表達式,一個輸出出口;
2.1.2 代碼截圖
2.1.3 pta提交列表及說明
Q1.第一次提交時忘記了&符號,
A.改正后進行第二次提交,
Q2.發現沒有帶空格,
A.改正后答案正確。
2.1.4本題可擴展功能
可以根據所知的數據來計算所得的利潤:
2.2 7-6 出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)
2.2.1 數據處理
- 數據表達:
1.double distance;存儲里程數;
2.int time;存儲時間;
3.double money1;存儲情況一的可能結果;
4.double money2;存儲情況二的可能結果;
5.double money3;存儲情況三的可能結果; - 數據處理:
一個輸入語句,兩個else-if結構,一個輸出出口;
2.2.2 代碼截圖
2.2.3 pta提交列表及說明
Q1.time的條件搞錯;
A.把time改成如圖的兩種情況;
Q2.第三個語段用的else;
A.改成了else if;
2.2.4 本題可擴展功能
可以用來計算t>10時每5分鍾3元的情況:
2.3 7-12 判斷一個三位數是否為水仙花數
本題要求編寫程序,判斷一個給定的三位數是否為水仙花數。三位水仙花數,即其個位、十位、百位數字的立方和等於該數本身。
2.3.1 數據處理
- 數據表達
1.int N;定義輸入的整數;
2.int bit;儲存個位數;
3.int hundred;存儲百位數;
4.int ten;存儲十位數; - 數據處理
一個輸入語句,兩個if else結構,3條輸出語句。
2.3.2 代碼截圖
2.3.3 pta提交列表及說明
Q1.最后的輸出語句沒有加!
A.加上了感嘆號以后提交。
Q2.if()中的條件沒有用&&連接,
A.添加&&后答案正確。
2.3.4 本題可擴展功能
可以利用這個原理計算更多整數的定義也可以換平方的定義:
3.閱讀代碼
題目:
題解:
- 代碼功能:
對於給定的采用”yyyy/mm/dd”加24小時制(用短橫線”-”連接)來表示日期和時間的字符串,將其轉換成”mm/dd/yyyy”加12小時制格式的字符串。 - 優點:用了getchar語法,比其他語法要相對簡單一點,
每個變量對應的語法都是唯一的,簡單易懂。