第一章概述
1. c語言的特點
①語言簡潔、緊湊,使用方便、靈活。共有32個關鍵字,9種控制語句。
②運算子豐富,公有34種運算子。
③資料結構豐富,資料型別有:整型、實型、字元型、陣列、指標、結構體、共用體等。
④具有結構化的控制語句(如if…else、while、do…while、switch、for)
⑤語法限制不太嚴格,程式設計自由度大。
⑥允許直接訪問實體地址,能進行位(bit)操作,可以直接對硬體操作。
⑦生成目標**質量高,程式執行效率高。
⑧可移植性好。
2. c語言的用途
c雖不擅長科學計算和管理領域,但對作業系統和系統實用程式以及對硬體進行操作方面,c有明顯的優勢。現在很多大型應用軟體也用c編寫。
第二章資料型別、運算子與表示式
第二章資料型別、運算子與表示式
1. c的資料型別
c的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。
2. 常量與變數
常量其值不可改變,符號常量名通常用大寫。變數其值可以改變,變數名只能由字母、數字和下劃線組成,且第乙個字元必須為字母或下劃線。否則為不合法的變數名。
變數在編譯時為其分配相應儲存單元。
3. 整型資料
整型常量的表示方法:十進位制不用說了,八進位制以0開頭,如0123,十六進製制以0x開頭,如0x1e。
整型變數分為:基本型(int)、短整型(short int)、長整型(long int)和無符號型。不同機器上各類資料所佔記憶體位元組數不同,一般int型為2個位元組,long型為4個位元組。
4. 實型資料
實型常量表示形式:十進位制形式由數字和小數點組成(必須有小數點),如:0.
12、.123、123.、0.
0等。指數形式如123e3代表123×10的三次方。
實型變數分為單精度(float)和雙精度(double)兩類。在一般系統中float型佔4位元組,7位有效數字,double型佔8位元組,15~16位有效數字。
5. 字元型資料
字元變數用單引號括起來,如'a','b'等。還有一些是特殊的字元常量,如'\n','\t'等。分別代表換行和橫向跳格。
字元變數以char 來定義,乙個變數只能存放乙個字元常量。
字串常量是由雙引號括起來的字串行。這裡一定要注意'a'和"a"的不同,前者為字元常量,後者為字串常量,c規定:每個字串的結尾加乙個結束標誌'',實際上"a"包含兩個字元:
'a'和''。
6. 數值型資料間的混合運算
整型、字元型、實型資料間可以混合運算,運算時不同型別資料要轉換成同一型別再運算,轉換規則:
char,short -> int -> unsigned -> long -> double <- float
7. 運算子和表示式
c運算子包括:
算數運算子
關係運算子( > < == >= <= != )
邏輯運算子
位運算子( << >>
賦值運算子( = )
條件運算子( ? : )
逗號運算子( , )
指標運算子( * & )
求位元組數( sizeof )
強制型別轉換(型別)
分量運算子( . -> )
下標運算子( [ ] )
其它運算子( 如函式呼叫運算子( ) )
自增自減運算子( ++ -- )注意:++i和i++的不同之處,++i使用i之前先使i加1,i++使用i之後,使i加1。
逗號表示式的求解過程:先求解表示式1,再求解表示式2,整個表示式的值是表示式2的值。
第三章最簡單的c程式設計
1.c的9種控制語句:
if() ~ else~
for()~
while()~
do~while()
continue
break
switch
goto
return
程式的三種基本結構:順序結構,選擇結構,迴圈結構
2.資料輸出
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函式完成。但要包含標頭檔案stdio.h。
putchar( ) 向終端輸出乙個字元
printf( )的格式字元:
① d格式符用來輸出十進位制整數
%d 按整型資料的實際長度輸出
%md 使輸出長度為m,如果資料長度小於m,則左補空格,如果大於m,則輸出實際長度
%ld 輸出長整型資料
② o格式符以八進位制形式輸出整數
③ x格式符以十六進製制形式輸出整數
④ u格式符用來輸出unsigned型資料,以十進位制形式輸出
⑤ c格式符用來輸出乙個字元
⑥ s格式符輸出乙個字串
%s 輸出實際長度字串
%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出
%-ms輸出的串佔m列,如果串長度小於m,右補空格,
%m.ns 輸出佔m列,但只取字串中左端n個字元並靠右對齊
%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值
⑦ f格式符以小數形式輸出實數
%f 整數部分全部輸出,小數部分輸出6位
%m.nf 輸出資料共佔m列,其中有n位小數。如果數值長度小於m,左補空格
%-m.nf 同上,右補空格
⑧ e格式符以指數形式輸出實數
%e 系統指定6位小數,5位指數(e+002 )
⑨ g格式符輸出實數,根據數值大小,自動選f格式或e格式
3.資料輸入
getchar( ) 從終端輸入乙個字元
scanf( 格式控制,位址列表) 標準c scanf中不使用%u,對於unsigned型資料,以%d或%o或%x輸入。%後的*,用來跳過它相應的資料。輸入資料時不能規定精度如scanf( "%7.
2f", &a );是不合法的。
第四章邏輯運算和判斷選取控制
1. 關係運算子:
c提供6種關係運算子(> < <= >= == != )前四種優先順序高於後兩種。
2. if語句
c提供了三種形式的if語句
if(表示式) 語句
if(表示式) 語句1 else 語句2
if(表示式1) 語句1
else if(表示式2) 語句2
…else 語句n
3. 條件運算子
(a>b)?a:b 條件為真,表示式取值a,否則取值b
4. switch語句
switch(表示式)
第五章迴圈控制
第五章迴圈控制
1. 幾種迴圈語句
goto語句(現已很少使用)
while語句先判斷表示式後執行語句
do-while語句先執行語句後判斷表示式
for語句
2. break語句和continue語句
break語句用於跳出迴圈,continue用於結束本次迴圈。
第六章陣列
第六章陣列
1. 一維陣列
c規定只有靜態儲存(static)和外部儲存(extern)陣列才能初始化。給陣列初始化時可以不指定陣列長度。
2. 二維陣列
3. 字元陣列
部分字串處理函式
puts(字元陣列) 將乙個字串輸出到終端。
gets(字元陣列) 從終端輸入乙個字串到字元陣列,並且得到乙個函式值,為該字元陣列的首位址
strcat(字元陣列1,字元陣列2) 連線兩個字元陣列中的字串,陣列1必須足夠大。
strcpy(字元陣列1,字串2) 將字串2拷貝到字元陣列1中。
strcmp(字串1,字串2) 比較字串,相等返回0,字串1>字串2,返回正數,小於返回負數。
strlen(字元陣列) 求字串長度。
strlwr( 字串) 將字串中的大寫字母轉換成小寫
strupr( 字串) 將字串中的小寫字母轉換成大寫
以上是一些比較常用的字串處理函式。
第七章函式
1. 關於形參和實參的說明
① 在函式被呼叫之前,形參不佔記憶體
② 實參可以是常量、變數或表示式
③ 必須指定形參的型別
④ 實參與形參型別應一致
⑤ 實參對形參的資料傳遞是"值傳遞",即單向傳遞
2. 函式返回值
如果想讓函式返回乙個值,在函式中就要用return語句來獲得,在定義函式時也要對函式值指定型別,如果不指定,預設返回整型。
3. 函式呼叫
1)注意在函式呼叫時實參和形參的個數、型別應一一對應。對實參表求值的順序是不確定的,有的系統按自左至右,有的系統則按自右至左的順序。這一點要注意。
2)函式呼叫的方式:函式語句,函式表示式,函式引數
3)如果主調函式和被調函式在同一檔案中,並且主調函式在前,那麼一般要在主調函式中對被調函式進行說明。除非:(1)被調函式的返回值型別為整型或字元型(2)被調函式出現在主調函式之前。
4)對函式的說明和定義是不同的,定義是指對函式功能的確立,包括指定函式名,函式值型別,形參及其型別、函式體等。說明則只是對已定義的函式返回值型別進行說明,只包括函式名、函式型別以及乙個空的括弧,不包括形參和函式體。
5)c語言允許函式的遞迴呼叫(在呼叫乙個函式的過程中又出現直接或間接的呼叫該函式本身)。
4. 陣列作為函式引數
1)陣列元素作為函式引數和一般變數相同
2)陣列名作引數應該在主調和被調函式分別定義陣列,形引數組的大小可以不定義。注意:陣列名作引數,不是單向傳遞。
3)多維陣列作引數,在被調函式中對形引數組定義時可以省略第一維的大**明,但不能省略第二維或更高維的說明。
5. 區域性變數和全域性變數
從變數作用域角度分,變數可分為區域性變數和全域性變數。
1)內部變數(區域性變數)
在乙個函式內定義,只在函式範圍內有效的變數。
2)外部變數(全域性變數)
在函式外定義,可以為本檔案其它函式所共用,有效範圍從定義變數的位置開始
到本檔案結束。建議盡量少使用全域性變數,因為它在程式全部執行過程中都占用
資源,而且使函式的通用性降低了。如果在定義外部變數之前的函式要想使用該
外部變數,則應在該函式中用extern作外部變數說明。
6. 動態儲存變數與靜態儲存變數
從變數值存在的時間(生存期)角度來分,可分為靜態儲存變數和動態儲存變數。靜態儲存指在程式執行期間給變數分配固定的儲存空間,動態儲存指程式執行期間根據需要動態的給變數分配儲存空間。
c語言中,變數的儲存方法分為兩大類:靜態儲存類和動態儲存類,具體包括:自動的(auto),靜態的(static),暫存器的(register),外部的(extern)。
1) 區域性變數的儲存方式
函式中的區域性變數如不作專門說明,都之auto的,即動態儲存的,auto可以省略。區域性變數也可以定義為static的,這時它在函式內值是不變的。靜態區域性變數如不賦初值,編譯時系統自動賦值為0,動態區域性變數如不賦初值,則它的值是個不確定的值。
c規定,只有在定義全域性變數和區域性靜態變數時才能對陣列賦初值。為提高執行效率,c允許將區域性變數值放在暫存器中,這種變數叫register變數,要用register說明。但只有區域性動態變數和形式引數可以作為register變數,其它不行。
2) 全域性變數的儲存方式
全域性變數在函式外部定義,編譯時分配在靜態儲存區,可以在程式中各個函式所引用。多個檔案的情況如何引用全域性變數呢?假如在乙個檔案定義全域性變數,在別的檔案引用,就要在此檔案中用extern對全域性變數說明,但如果全域性變數定義時用static的話,此全域性變數就只能在本檔案中引用了,而不能被其它檔案引用。
3) 儲存類別小結
從作用域角度分,有區域性變數和全域性變數
區域性變數:自動變數,即動態區域性變數(離開函式,值就消失)
靜態區域性變數(離開函式,值仍保留)
暫存器變數(離開函式,值就消失)
(形參可定義為自動變數和暫存器變數)
全域性變數:靜態全域性變數(只限本檔案引用)
全域性變數(允許其它檔案引用)
從存在的時間分,有靜態儲存和動態儲存
動態儲存:自動變數(本函式內有效)
暫存器變數(本函式內有效)
形參靜態儲存:靜態區域性變數(函式內有效)
靜態全域性變數(本檔案內有效)
全域性變數(其它檔案可引用)
從變數值存放的位置分
靜態儲存區:靜態區域性變數
靜態全域性變數
全域性變數
動態儲存區:自動變數和形參
暫存器內:暫存器變數
C語言指標小結
輸出結果同上。指標變數位址加1 inti,pa,a pa a for i 0 i 9 i 輸出結果同上。2 陣列名與指標的區別 陣列名是指標常量而指標是指標變數,舉乙個例子。inti,pa,a pa a for i 0 i 9 i 輸出結果同上。這裡如果將pa換成a,那麼編譯就會出錯。原因pa是指標...
C語言精華小結
一 c語言結構 1 主函式用main作為函式名,每個c程式都必須包含且僅含乙個main函式,c程式的執行是從主函式中的第一句開始,到主函式中的最後依據結束 2 標頭檔案的引用 include或 include name.h 3 函式由函式首部和函式體組成 函式首部,即函式的第一行,包括函式名 函式型...
C語言程式設計小結精華
二級c語言程式設計模擬試題 1 8 下面程式的功能是統計從命令列上傳遞進來的第乙個引數 現字母個數。請填空完善程式。注 引數個數從0開始記數 include include void main int argcar 填空題答案 1 main函式 2 cos fabs x y sin fabs x f...