C語言——基礎查漏補缺(二):《C程序設計試題彙編》應試概念總結

前言

“C語言本來沒有輸入輸出語句,只有輸入輸出函數”……說真的,不是爲了考試,誰會總結這玩意……

得了,乾脆將這種知識全部總結至此,如果哪天需要用,直接翻博客,總好過重新學一遍。

本文所用教材是譚浩強的《C程序設計試題彙編》,用它應付大多數C語言考試應該沒什麼問題,當然,本文只總結煩人的概念,不總結有趣的編程。

第一章 C語言概述

1、C語言本身沒有輸入輸出語句,只有輸入輸出函數;
2、C程序的基本組成單位是函數,一個C語言程序是由函數組成;
3、C語言程序必須通過編譯和連接後,才能被計算機執行;
4、在C源程序中,一個變量代表內存中的一個存儲單元;
5、C源程序文件的後綴是.c,經過編譯後爲.obj,經過連接後,生成文件的後綴是.exe
6、結構化程序由順序、選擇、循環三種基本結構組成;
7、C源程序中至少應含有一個主函數;

第二章 數據類型、運算符與表達式(概念最多的部分)

1、C語言關鍵字:
char short int unsigned long float double struct union void enum signed const volatile typedef auto register static extern break case continue default do else for goto if return switch while sizeof……

⚠️注意
(1)define是宏定義預處理指令,不是關鍵字,ifdef,endif也都不是關鍵字,前面必須加#的都不是關鍵字;
(2)printf,scanf和getc之類也不是關鍵字,在庫/頭文件中被定義的函數名都不是關鍵字(不能使用其作爲自定義變量是因爲其會和頭文件內容發生衝突);
(3)type不是關鍵字,typedef纔是;include是宏包含預處理指令,不是關鍵字;沒有go這個關鍵字;pow是C標準庫函數名,不是關鍵字。

2、常量
(1)注意實型常量的表示方法除了十進制小數形式(123.456)外還有指數形式:12.34e3代表的是12.34×10312.34\times10^3,-346.87E-25代表346.87×1025-346.87\times10^{-25}
⚠️e和E在指數形式中都可以用,但記住:e/E前e/E後必有數,e/E後一定是整數

(2)字符常量用單引號:'a',字符串常量用雙引號:"abc"轉義字符是特殊形式的字符常量

(3)符號常量是用#define定義的,#define PI 3.1415,那麼PI就是符號常量,預編譯後,PI就變成了字面常量3.1415,即符號常量就不存在了

(4)const float pi=3.1415定義的是常變量,其初始化後就不能改變值。常變量是有名字的不變量,常量是沒有名字的不變量,前者有名字是爲了便於在程序中被引用

(5)0x9代表十六進制的9,0x不能單獨用;注意編程時數據不能寫成這樣:986,012,這種逗號是不被允許的;

(6)⚠️以0開頭的數字表示八進制,這也是爲什麼-068不合法,這不是-68,而是八進制數,八進制沒有8,所以錯了;

(7)關於小數,-.18 是合法的, 小數點前和後的0可以省略,但不能只有小數點自身;

(8)03e2是300,03不會被處理爲八進制,因爲e表示的科學計數法是以10爲基底;

(9).8e-4.1e0都是合法的,但.e0不合法,因爲e前必須有數字,只用小數點來表示0.0是錯誤的;

(10)轉義字符合法性判斷:
幾個不常用的:\a響鈴,\b退格,\f換頁,\v垂直製表,\\反斜槓,\?問號,\'單引號,\"雙引號;

\xab代表ASCII碼爲十六進制數ab的字符,\101\033代表的是ASCII碼爲八進制數101和33的字符;

⚠️ASCII碼十進制範圍是0~127,也就是說八進制代表的轉義字符最大是\177十六進制代表的轉義字符最大是\x7F

3、運算符和表達式
(1)int,char,short三種類型數據在內存中所佔用的字節數由所用機器的機器字長決定;

(2)混合數據類型的運算,int、float、double兩兩之間的運算,int和float都被轉化爲double,運算結果是double。如果是char和float或者double進行運算,則將char、float都轉化爲double,運算結果爲double。char可以直接和int之間進行運算;

(3)⚠️算術表達式和運算符的優先級與結合性
算術運算符:
除了按照優先級進行結合,還遵循左結合性;

賦值運算符遵循右結合性:
a=b=c,現將c賦給b,再將b賦給a;


右結合性的運算符:
一些單目運算符:!(邏輯非),~(按位取反),++,–,-(負號),(類型)(類型轉換),*(指針運算符),&(取地址),sizeof;
? :(條件運算符,三目);
=,+=,-=,%=,>>=等賦值運算符


注意逗號運算符是左結合的。


優先級
初等運算符((),[],->,.)==> 單目運算符 ==> 算數運算符(先乘除後加減) ==> 關係運算符 ==> 邏輯運算符(不包括!) ==> 條件運算符 ==> 賦值運算符 ==> 逗號運算符。


⚠️重要例子:
x=(i=4,j=16,k=32),x值爲32;
(a=2,b=5,b++,a+b)表達式的值是8,因爲括號中的幾個表達式從左至右計算,而括號表達式取值爲括號中最後一個表達式的值。

(4)%兩側都必須是整數(要求運算數必須是整型);

(5)y爲double型,i爲int型,則y=float(i)是錯的,賦值語句不能類型不匹配;

(6)int a=2; a*=2+3等價於a=2*(2+3),算數運算符優先級高於賦值運算符;

(7)a=a*3=2這種寫法是錯誤的,賦值符號右結合性,先運行a*3=2,不能將值賦給表達式;

3.4:明天繼續刷題,今天先更到這。

2019.3.4, 20:52更新,剛出了考研分數線,沒進複試,明年這時候再更。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章