?? tc1.dat
字號:
第1章 C語言概述
本章主要介紹C語言程序的結(jié)構(gòu)和書寫規(guī)則.
1.1 C語言的發(fā)展簡史和特點
1.C語言的誕生與發(fā)展
(1)在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的.由于匯編語言程序依賴于計算機(jī)硬件,其可讀性和可移植性都很差;但一般的高級語言又難以實現(xiàn)對計算機(jī)硬件的直接操作(這正是匯編語言的優(yōu)勢),于是人們盼望有一種兼有匯編語言和高級語言特性的新語言.
(2)C語言是貝爾實驗室于70年代初研制出來的,后來又被多次改進(jìn),并出現(xiàn)了多種版本.80年代初,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI),根據(jù)C語言問世以來各種版本對C語言的發(fā)展和擴(kuò)充,制定了ANSI C標(biāo)準(zhǔn)(1989年再次做了修訂).
本書以ANSI C新標(biāo)準(zhǔn)來介紹.
(3)目前,在微機(jī)上廣泛使用的C語言編譯系統(tǒng)有Microsoft C、Turbo C 、Borland C等.雖然它們的基本部分都是相同的,但還是有一些差異, 所以請大家注意自己所使用的C編譯系統(tǒng)的特點和規(guī)定(參閱相應(yīng)的手冊).
本書選定的上機(jī)環(huán)境是TC V2.0(DOS操作系統(tǒng)).
2.C語言的特點
C語言同時具有匯編語言和高級語言的優(yōu)勢.
(1)語言簡潔、緊湊,使用方便、靈活.
(2)運(yùn)算符極其豐富.
(3)生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高.
(4)可移植性好(較之匯編語言).
(5)可以直接操縱硬件.
3. 在C語言中,除實現(xiàn)順序、選擇和循環(huán)三種基本結(jié)構(gòu)等的9條控制語句外,輸入輸出操作均由標(biāo)準(zhǔn)庫函數(shù)(不是C語言的組成部分)來實現(xiàn).
所以學(xué)習(xí)C語言,不僅要學(xué)習(xí)這9條控制語句和各種運(yùn)算符,而且要學(xué)習(xí)并掌握常用標(biāo)準(zhǔn)庫函數(shù)的使用.
1.2 C語言程序的結(jié)構(gòu)與書寫規(guī)則
1.2.1 C語言程序的總體結(jié)構(gòu)
一個完整的C語言程序,是由一個main()函數(shù)(又稱主函數(shù))和若干個其它函數(shù)結(jié)合而成的,或僅由一個main()函數(shù)構(gòu)成.
[案例1.1] 僅由main()函數(shù)構(gòu)成的C語言程序.
/*案例代碼文件名:AL1_1.C*/
/*功能:僅由main()函數(shù)構(gòu)成的C語言程序示例*/
main()
{ printf(“This is a C program.\n”);
}
程序運(yùn)行結(jié)果:
This is a C program.
[案例1.2] 由main()函數(shù)和1個其它函數(shù)max()構(gòu)成的C語言程序.
/*案例代碼文件名:AL1_2.C*/
/*功能:由main()函數(shù)和1個其它函數(shù)max()構(gòu)成的C語言程序示例*/
int max(int x, int y)
{ return( x>y ? x : y ); }
main()
{ int num1,num2;
printf(“Input the first integer number: ”);
scanf(“%d”, &num1);
printf(“Input the second integer number: ”);
scanf(“%d”, &num2);
printf(“max=%d\n”, max(num1, num2));
}
程序運(yùn)行情況:
Input the first integer number:6←┘
Input the second integer number:9←┘
max=9
[案例1.3] 改寫[案例1.2],交換main()函數(shù)和max()函數(shù)的前后位置.
源程序略.
程序運(yùn)行情況:
Input the first integer number:6←┘
Input the second integer number:9←┘
max=9
1.函數(shù)是C語言程序的基本單位.
main()函數(shù)的作用,相當(dāng)于其它高級語言中的主程序;其它函數(shù)的作用,相當(dāng)于子程序.
2.C語言程序總是從main()函數(shù)開始執(zhí)行.
一個C語言程序,總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置.當(dāng)主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢.
習(xí)慣上,將主函數(shù)main()放在最前頭.
1.2.2 函數(shù)的一般結(jié)構(gòu)
任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成.其一般結(jié)構(gòu)如下:
[函數(shù)類型] 函數(shù)名(函數(shù)參數(shù)表) 函數(shù)說明部分
{ 說明語句部分;
執(zhí)行語句部分; 函數(shù)體部分
}
1. 使用的語法符號約定
[...]──方括號表示可選(即可以指定,也可以缺省)
……──省略號表示前面的項可以重復(fù)
| ──多(含2)中選1
2.函數(shù)說明
由函數(shù)類型(可缺省)、函數(shù)名和函數(shù)參數(shù)表三部分組成,其中函數(shù)參數(shù)表的格式為:
數(shù)據(jù)類型 形參[, 數(shù)據(jù)類型 形參2……]
例如,[案例1.2]中的函數(shù)max(),其函數(shù)說明各部分如圖1-1所示.
函數(shù)類型 函數(shù)名 函數(shù)參數(shù)表
↓ ↓ ↓
int max ( int x , int y )
圖1-1 函數(shù)說明部分結(jié)構(gòu)圖
注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表.
3.函數(shù)體
在函數(shù)說明部分的下面、大括號(必須配對使用)內(nèi)的部分.
函數(shù)體一般由說明語句和可執(zhí)行語句兩部分構(gòu)成:
(1)說明語句部分
說明語句部分由變量定義、自定義類型定義、自定義函數(shù)說明、外部變量說明等組成.
(2)可執(zhí)行語句
一般由若干條可執(zhí)行語句構(gòu)成.圖1-2是[案例1.2]的main()函數(shù)體的示意圖.
/*主函數(shù)main()*/
main()
{ int num1,num2; 變量定義部分
printf(“Input the first integer number: ”);
scanf(“%d”, &num1);
printf(“Input the second integer number: ”); 可執(zhí)行語句部分 函數(shù)體
scanf(“%d”, &num2);
printf(“max=%d\n”, max(num1, num2));
}
圖1-2 函數(shù)體結(jié)構(gòu)示意圖
4.說明
(1)函數(shù)體中的變量定義語句,必須在所有可執(zhí)行語句之前.
下面程序中變量定義語句“int max;”的位置是非法的:
main()
{ int x,y; /*變量定義語句:定義2個整型變量x、y*/
x=3; /*可執(zhí)行的賦值語句:將3賦值給變量x*/
y=6; /*可執(zhí)行的賦值語句:將6賦值給變量y*/
int max; /*變量定義語句:出現(xiàn)在可執(zhí)行的
賦值語句“x=3;”和“ y=6;”之后,非法!*/
max=x>y?x:y;
printf(“max=%d\n”,max);
}
解決辦法很簡單,請讀者自己思考.
(2)如果不需要,也可以缺省變量定義語句.
1.2.3 源程序書寫格式
1.所有語句都必須以分號“;”結(jié)束,函數(shù)的最后一個語句也不例外.
2.程序行的書寫格式自由,既允許1行內(nèi)寫幾條語句,也允許1條語句分寫在幾行上.
例如,[案例1.2]的主函數(shù)main(),也可改寫成如下所示的格式:
……
main()
{ int num1,num2;
printf(“Input the first integer number: ”); scanf(“%d”, &num1);
printf(“Input the second integer number: ”); scanf(“%d”, &num2);
printf(“max=%d\n”, max(num1, num2));
}
如果某條語句很長,一般需要將其分寫在幾行上.
3.允許使用注釋.
C語言的注釋格式為: /* …… */
例如,在[案例1.1]和[案例1.2]中,以及本節(jié)其它部分給出的源程序中,凡是用“/*”和“*/”括起來的文字,都是注釋.
(1) “/*”和“*/” 必須成對使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯.
技巧:為避免遺漏必須配對使用的符號,例如注釋符號、函數(shù)體的起止標(biāo)識符(花括號)、圓括號等等,在輸入時,可連續(xù)輸入這些起止標(biāo)識符,然后再在其中進(jìn)行插入來完成內(nèi)容的編輯.在起止標(biāo)識符嵌套時,以及相距較遠(yuǎn)時,這樣做更有必要.
(2)注釋的位置,可以單占1行,也可以跟在語句的后面.
(3)如果1行寫不下,可另起1行繼續(xù)寫.
(4)注釋中允許使用漢字.在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行.
1.3 C語言的語句和關(guān)鍵字
1.3.1 C語言的語句 [標(biāo)簽-語句和關(guān)鍵字]
與其它高級語言一樣,C語言也是利用函數(shù)體中的可執(zhí)行語句,向計算機(jī)系統(tǒng)發(fā)出操作命令.按照語句功能或構(gòu)成的不同,可將C語言的語句分為五類.
1.控制語句
控制語句完成一定的控制功能.C語言只有9條控制語句,又可細(xì)分為三種:
( 1)選擇結(jié)構(gòu)控制語句
if()~else~, switch()~
(2)循環(huán)結(jié)構(gòu)控制語句
do~while(), for()~, while()~, break, continue
(3)其它控制語句
goto, return
2. 函數(shù)調(diào)用語句
函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個分號(語句結(jié)束標(biāo)志)構(gòu)成.
例如,printf("This is a C function statement.");
3. 表達(dá)式語句
表達(dá)式語句由表達(dá)式后加一個分號構(gòu)成.最典型的表達(dá)式語句是,在賦值表達(dá)式后加一個分號構(gòu)成的賦值語句.
例如,“num=5 ”是一個賦值表達(dá)式,而“num=5;”卻是一個賦值語句.
4. 空語句
空語句僅由一個分號構(gòu)成.顯然,空語句什么操作也不執(zhí)行.
例如,下面就是一個空語句:
;
5. 復(fù)合語句
復(fù)合語句是由大括號括起來的一組(也可以是1條)語句構(gòu)成.例如:
main()
{ ……
{……} /*復(fù)合語句.注意:右括號后不需要分號.*/
……
}
復(fù)合語句的性質(zhì):
(1)在語法上和單一語句相同,即單一語句可以出現(xiàn)的地方,也可以使用復(fù)合語句.
(2)復(fù)合語句可以嵌套,即復(fù)合語句中也可出現(xiàn)復(fù)合語句.
1.3.2 關(guān)鍵字
C語言的關(guān)鍵字共有32個,根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、存儲類型關(guān)鍵字和其它關(guān)鍵字四類.
(1)數(shù)據(jù)類型關(guān)鍵字(12個):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void
(2)控制語句關(guān)鍵字(12個):break, case, continue, default, do, else, for, goto, if, return, switch, while
(3)存儲類型關(guān)鍵字(4個):auto, extern, register, static
(4)其它關(guān)鍵字(4個):const, sizeof, typedef, volatile
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -