C語言程序設(shè)計教程(第4版)_第2章_基本語句_第1頁
C語言程序設(shè)計教程(第4版)_第2章_基本語句_第2頁
C語言程序設(shè)計教程(第4版)_第2章_基本語句_第3頁
C語言程序設(shè)計教程(第4版)_第2章_基本語句_第4頁
C語言程序設(shè)計教程(第4版)_第2章_基本語句_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第2 2章章 基本的程序語句基本的程序語句 本章主要內(nèi)容本章主要內(nèi)容1. 用二進(jìn)制表示的數(shù)2.基本數(shù)據(jù)類型及取值范圍3.標(biāo)識符、變量和常量4.基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級5.標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介6.程序范例第2章 引言1整型數(shù)的二進(jìn)制表示整型數(shù)分為有符號的和無符號的兩種;有符號的整型數(shù)的正負(fù)號由字節(jié)的最高位來表示:0表示正數(shù),1表示負(fù)數(shù)。整型數(shù)占用的字節(jié)數(shù)可為8位、16位或者32位。整型數(shù)的取值范圍:2.1 用二進(jìn)制表示的數(shù)字 節(jié) 數(shù)有 符 號 的無 符 號 的最 小 值最 大 值最 小 值最 大 值1128+1270255232 768+32 767065 53542 147 483

2、 648+2 147 483 64704 294 967 2952浮點(diǎn)數(shù)的二進(jìn)制表示浮點(diǎn)數(shù)分成單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù);單精度浮點(diǎn)數(shù)占32位(4個字節(jié)),雙精度浮點(diǎn)數(shù)占64位(8個字節(jié))。浮點(diǎn)型數(shù)據(jù)的一般表達(dá)式:(1)S2em e是實(shí)際的階碼值,代表浮點(diǎn)數(shù)的取值范圍; m是尾數(shù),代表浮點(diǎn)數(shù)的精度。2.1 用二進(jìn)制表示的數(shù)(1)單精度浮點(diǎn)型數(shù)據(jù)的字節(jié)分配空間:2.1 用二進(jìn)制表示的數(shù)符 號 位( 1位 )指 數(shù) 位(8 位 )尾 數(shù)( 23 位 )31 3 0 23 22 0SEM S代表符號位,占1位。E稱為“移碼”,占8位。 E的取值范圍為0255,E=127+e 因此,e的取值范圍為12

3、7+128);M代表有效位數(shù)或稱為“小數(shù)”, m2=(1.M)2(2)雙精度浮點(diǎn)型數(shù)據(jù)的字節(jié)分配空間:2.1 用二進(jìn)制表示的數(shù)S代表符號位,占1位。E稱為“移碼”,占11位。 E的取值范圍為02047,E=1023+e 因此,e的取值范圍為1023+1024);M代表有效位數(shù)或稱為“小數(shù)”, m2=(1.M)2浮點(diǎn)型數(shù)據(jù)的取值范圍:2.1 用二進(jìn)制表示的數(shù)數(shù) 據(jù) 類 型字節(jié)數(shù)(位數(shù))階碼(e)取值范圍最 小 值最 大 值單精度浮點(diǎn)數(shù)4字節(jié)(32位)1271285.877 47210393.402 8241038雙精度浮點(diǎn)數(shù)8字節(jié)(64位)1 0231 0241.112 537103081.79

4、7 693103081. C語言提供5種基本數(shù)據(jù)類型。(1)字符型:用char表示。(2)整數(shù)型:用int表示。(3)單精度實(shí)數(shù)型:用float表示。(4)雙精度實(shí)數(shù)型:用double表示。(5)空類型:用void表示。對整數(shù)型,有四種修飾:signed(有符號) unsigned(無符號)long(長型) short(短型)數(shù)據(jù)類型決定了數(shù)據(jù)的大小、數(shù)據(jù)可執(zhí)行的操作以及數(shù)據(jù)的取值范圍。2.2 基本數(shù)據(jù)類型及取值范圍基本數(shù)據(jù)類型及取值范圍數(shù)據(jù)類型的長度和取值范圍會隨著機(jī)器的CPU類型和編譯器的不同而不同。2.2 基本數(shù)據(jù)類型及取值范圍基本數(shù)據(jù)類型及取值范圍 實(shí)現(xiàn)環(huán)境數(shù)據(jù)類型字 節(jié) 長 度Tur

5、bo CBorland C+Visual C+Dev C+GCCchar(字符型)11111short int(短整型)22222int(整型)22444long int(長整型)44444float(單精度浮點(diǎn)型)44444double(雙精度浮點(diǎn)型)88888例1:驗(yàn)證數(shù)據(jù)類型的字節(jié)長度。見【例2-1】所示的程序:example2_1.c不同字節(jié)長度的數(shù)據(jù)類型和取值范圍: 見表2-5和表2-62.2 基本數(shù)據(jù)類型及取值范圍2.3.12.3.1 標(biāo)識符標(biāo)識符 標(biāo)識符是對變量名、函數(shù)名、標(biāo)號和其他各種用戶定義的對象命名。建議取有實(shí)際意義的標(biāo)識符來命名。標(biāo)識符的第1個字符必須是字母或下劃線,標(biāo)識

6、符的長度可以是一個或多個字符,最長不允許超過32個字符。例如: score、number12、student_name等均為正確的標(biāo)識符; 8times、price/tea、low!valume等均不為正確的標(biāo)識符。注意:(1) 標(biāo)識符區(qū)分大小寫,score、Score、SCORE代表三個不同的標(biāo)識符。(2)標(biāo)識符不能和C語言的關(guān)鍵字相同 (3)標(biāo)識符不能和用戶自定義的函數(shù)或C語言庫函數(shù)同名 2.3 標(biāo)識符、變量和常量2.3.2 變量和常量1.1. 變量變量 其值可以改變的量稱為變量。 變量的兩個要素:標(biāo)識符 (名字)和值。 C 語言規(guī)定:變量必須在使用之前定義。 變量定義的一般形式是: ;必

7、須是有效的C數(shù)據(jù)類型,如:int、float等,類型名規(guī)定了變量的存儲空間和取值范圍。 可以由一個或多個由逗號分隔的多個標(biāo)識符名構(gòu)成。2.3 標(biāo)識符、變量和常量如: int i, j, number; unsigned int max, min; float high_value, price; double lenth, total_wieight;思考:上面各種變量的類型和他們的取值范圍。2.3 標(biāo)識符、變量和常量例2:運(yùn)行下面的程序,了解變量的取值范圍和C語言的特性。/*example2_2.c 變量的取值范圍測試*/ #include main() int a=32766,b=-327

8、66; unsigned m=6553; float t=3.4e+37; printf(a=%dn,a); printf(m=%un,m); printf(“t=%en”,t); a=a+4; 2.3 標(biāo)識符、變量和常量 b=b-6; m=m*10+10; t=t*10; printf(After change:n); printf(a+4=%dn,a); printf(b-6=%dn,b); printf(m*10+10=%un,m); printf(t*10=%en,t);2.2.常量常量 常量的值是不可變的。 在C語言中,有整型常量、實(shí)型常量、字符常量、字符串常量、和枚舉常量等。(1)

9、整型常量 可采用十進(jìn)制、八進(jìn)制、十六進(jìn)制來表示整型常量。 八進(jìn)制數(shù)的前面用數(shù)字0開頭, 十六進(jìn)制數(shù)前面用數(shù)字0和字母X開頭(0 x或0X) 整型常量的表示見表2-9。2.3 標(biāo)識符、變量和常量例3:了解整型常量的不同進(jìn)制表示法。/*example2_3.c */ #includemain() printf(十六進(jìn)制0 x80的十進(jìn)制值為:%dn,0 x80); printf(八進(jìn)制0200的十進(jìn)制值為:%dn,0200); printf(十進(jìn)制128的十進(jìn)制值為:%dn,128); printf(十進(jìn)制128的十六進(jìn)制值為:%xn,128); printf(十進(jìn)制128的八進(jìn)制值為:%on”,

10、128);2.3 標(biāo)識符、變量和常量(2)實(shí)型常量實(shí)型常量的兩種表示法:浮點(diǎn)計數(shù)法和科學(xué)計數(shù)法。例如:231.467.36E74.58E50.0945對太大或太小的數(shù),通常是采用科學(xué)計數(shù)法。 如上面的7.36E7、4.58E5。2.3 標(biāo)識符、變量和常量例4:了解實(shí)型常量的兩種表示法。/*example2_4.c (浮點(diǎn)計數(shù)法,科學(xué)計數(shù)法)*/ #includemain() printf(“123.4456的浮點(diǎn)數(shù)表示:%6fn,123.456); printf(“1.23456E2的浮點(diǎn)數(shù)表示:%6fn,1.23456e2); printf(“12345.6E-2的浮點(diǎn)數(shù)表示:%6fn,12

11、345.6e-2); printf(“12345.6的科學(xué)計數(shù)法表示:%En,12345.6);2.3 標(biāo)識符、變量和常量(3)字符常量 字符常量是由一對單引號括起來的單個字符。 如:A、S、9、$ 等均為字符常量。 注注1 1:單引號只起定界作用,并不代表字符。 注注2 2:單引號 ()和反斜杠()本身作為字符時要通過轉(zhuǎn)義字符()。 如:和 分別代表單個字符單引號()和反斜杠()。2.3 標(biāo)識符、變量和常量在C語言中,字符是按其所對應(yīng)的ASCII的值來存儲的,一個字符占一個字節(jié)。部分字符所對應(yīng)ASCII碼值如下:2.3 標(biāo)識符、變量和常量字符字符0 01 19 9A AB BY YZ Za

12、ab by yz zASCII碼值(十進(jìn)制)484957656689909798121122字符和與之對應(yīng)的ASCII詳見附錄B注意:注意:數(shù)字3和字符3的區(qū)別:2.3 標(biāo)識符、變量和常量含義含義表達(dá)式表達(dá)式值值字節(jié)數(shù)字節(jié)數(shù)常量33占2個字節(jié)字符351占1個字節(jié)字符也可以參與運(yùn)算:字符也可以參與運(yùn)算:如:如:A+6;運(yùn)算結(jié)果為71,對應(yīng)的字符為H。87;運(yùn)算結(jié)果為49,對應(yīng)的字符為1。y32;運(yùn)算結(jié)果為89,對應(yīng)的字符為Y。例5:了解字符常量與其順序值的關(guān)系。/*example2_5.c 字符常量與其順序值的關(guān)系*/ #includemain() printf(%d-%cn,A,A); pri

13、ntf(%d-%cn,A+5,A+5); printf(%d-%cn,A+70,A+70);2.3 標(biāo)識符、變量和常量例5:了解字符常量與其順序值的關(guān)系。/*example2_5.c 字符常量與其順序值的關(guān)系*/ #includemain() printf(%d-%cn,A,A); printf(%d-%cn,A+5,A+5); printf(%d-%cn,A+70,A+70);2.3 標(biāo)識符、變量和常量程序運(yùn)行結(jié)果:65-A70-F135-?(4)字符串常量字符串常量是指用一對雙引號括起來的一串字符。如: world, TRUE or FLASE, 8765431.0037, T 均為字符串

14、常量。注:雙引號 ()和反斜杠()本身作為字符串時要通過轉(zhuǎn)義字符()。 如: 和 分別代表字符串()和反斜杠()。2.3 標(biāo)識符、變量和常量注意字符常量與字符串常量的區(qū)別: 在C語言中,字符串常量在內(nèi)存中存儲時,系統(tǒng)自動在字符串的末尾加一個“串結(jié)束標(biāo)志”:0該結(jié)束標(biāo)志的ASC碼值為0,字符為空NULL。 因此,長度為n個字符的字符串常量,在內(nèi)存中占有n+1個字節(jié)的存儲空間。如:字符串“ World ”,共5個字符,需占用6個字節(jié),其存儲形式為:2.3 標(biāo)識符、變量和常量World0(5)轉(zhuǎn)義字符轉(zhuǎn)義字符用反斜杠后面跟一個字符或一個八進(jìn)制或十六進(jìn)制數(shù)表示。 如:a,0,n等。代表ASCII字符中

15、不可打印的控制字符和特定功能的字符。表示特殊字符,如:單引號()、雙引號()和反斜杠()等。常用的轉(zhuǎn)義字符見表2-12。2.3 標(biāo)識符、變量和常量注意 轉(zhuǎn)義字符中的字母只能是小寫字母,每個轉(zhuǎn)義字符只能看作一個字符。 表2-12中的r、v和f對屏幕輸出不起作用,但會在控制打印機(jī)輸出執(zhí)行時響應(yīng)其操作。 在程序中,使用不可打印字符時,通常用轉(zhuǎn)義字符表示。2.3 標(biāo)識符、變量和常量例例6 6:了解轉(zhuǎn)義字符的作用。:了解轉(zhuǎn)義字符的作用。/*example2_6.c 了解轉(zhuǎn)義字符的作用了解轉(zhuǎn)義字符的作用*/ #includemain() printf(a); /* 發(fā)出鈴聲發(fā)出鈴聲 */ printf(T

16、his is a test:n); printf(Ready:); printf(bBackspace.n); /* 往左退一格往左退一格 */ printf(tHorizontal tabn);/* 往右進(jìn)八格往右進(jìn)八格 */ printf(n); /* 輸出輸出 */ printf(?n); /* 輸出輸出? */ printf(n); /* 輸出輸出 */ printf(n); /* 輸出輸出 */ printf(101n); /* 輸出八進(jìn)制值輸出八進(jìn)制值101所對應(yīng)的字符所對應(yīng)的字符 */ printf(x41n); /* 輸出十六進(jìn)制值輸出十六進(jìn)制值41所對應(yīng)的字符所對應(yīng)的字符 *

17、/運(yùn)行程序,觀察程序的運(yùn)行結(jié)果。程序運(yùn)行結(jié)果:This is a test:Ready:Backspace. Horizontal tab?AA2.3 標(biāo)識符、變量和常量(6)符號常量將程序中的常量定義為一個標(biāo)識符,稱為符號常量。符號常量在使用前必須先定義,定義的形式是: #define 如:#define PI 3.1415926 #define TRUE 1 #define FALSE 0其中PI、TRUE、FLASE均為符號常量;其值分別為3.1415926,1,0。注1: #define是C語言的預(yù)處理命令;注2:習(xí)慣上符號常量用大寫英文字母表示。2.3 標(biāo)識符、變量和常量例7:了解符

18、號常量的使用。/*example2_7.c */ #include#define WHO I am a student.#define HOW That is Fine.#define PI 3.1415926main() printf(%sn,WHO); printf(%sn,HOW); printf(%fn,PI);2.3 標(biāo)識符、變量和常量程序運(yùn)行結(jié)果:I am a student.That is Fine.3.141593C語言的基本表達(dá)式是由操作數(shù)和操作符組成。l操作數(shù)通常由變量或常量表示;l操作符由各種運(yùn)算符表示。l一個基本表達(dá)式也可以作為操作數(shù)來構(gòu)成復(fù)雜表達(dá)式。l構(gòu)成基本表達(dá)式的

19、常用運(yùn)算符有:(1)算術(shù)運(yùn)算符。(2)關(guān)系運(yùn)算符。(3)邏輯運(yùn)算符。(4)賦值運(yùn)算符。另外,條件運(yùn)算符、自反賦值運(yùn)算符、逗號運(yùn)算符、指針運(yùn)算符、位運(yùn)算符等均可構(gòu)成基本表達(dá)式。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.4.1 算術(shù)運(yùn)算符及算術(shù)表達(dá)式算術(shù)運(yùn)算符主要用于完成變量的算術(shù)運(yùn)算。如:加、減、乘、除等。各運(yùn)算符及其作用如下:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級運(yùn) 算 符優(yōu) 先 級作 用高(14)自增1(變量的值加1)自減1(變量的值減1)低(12)加法減法*中(13)乘法/除法%模運(yùn)算(整數(shù)相除,結(jié)果取余數(shù))注:此處規(guī)定優(yōu)先級的數(shù)字越大,優(yōu)先級越高。例8: 閱讀下面的程序,了解由算術(shù)運(yùn)

20、算符組成的表達(dá)式。/*example2_8.c */ #includemain() int a,b,c,d1,d2,d3,d4; double x,y,z1,z2,z3; a=8; b=3; c=10;2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級 d1=a+b*c-b/a+b%c*a; /* 復(fù)雜表達(dá)式1 */ d2=(a+b)*c-(b/a)+(b%c)*a; /* 復(fù)雜表達(dá)式2 */ d3=a/b; d4=c%b; printf(d1=%d, d2=%d, d3=%d, d4=%dn, d1,d2,d3,d4); x=3.2; y=2.4; z1=x+y/x-y; /* 復(fù)雜表達(dá)式3 */ z

21、2=(x+y)/(x-y); /* 復(fù)雜表達(dá)式4 */ z3=y/b; printf(z1=%f, z2=%f, z3=%fn,z1,z2,z3); 程序運(yùn)行結(jié)果:d1=62, d2=134, d3=2, d4=1z1=1.550000, z2=7.000000, z3=0.8000001.分析例8程序中存在的問題。2.修改例8的程序,提高程序的可讀性。3.運(yùn)行例2-9的程序,觀察表達(dá)式及程序的運(yùn)行結(jié)果。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級思考思考關(guān)于前置+/和后置+/的作用 前置+或前置表達(dá)式: +; 先將變量的值加1,再使用變量。 ; 先將變量的值減1,再使用變量。后置+或后置表達(dá)式:

22、 +; 先使用變量,再將變量的值加1。 ; 先使用變量,再將變量的值減1。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級例9:閱讀程序example2_10.c,了解前置+/-和后置+/的作用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級1.+/-運(yùn)算符適合于什么數(shù)據(jù)類型?2.表達(dá)式+a和a+有什么區(qū)別?3.表達(dá)式b=a+還可以怎樣表達(dá)?4.+/-能否用于常量表達(dá)式?思考思考注意+/-運(yùn)算符在不同環(huán)境下的區(qū)別。例10:閱讀程序example2_11.c。了解前置+/-和后置+/作為函數(shù)參數(shù)時的作用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級1.為什么程序的運(yùn)行結(jié)果會有不同?2.程序設(shè)計應(yīng)遵循什么原則?3.

23、修改程序,使其具有更好的可讀性。4.分析修改后的程序:example2_12.c。思考思考不同形式的程序表達(dá)式的含義:比較程序example2_13.c和example2_13a.c2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級注意2.4.2 關(guān)系運(yùn)算符及關(guān)系表達(dá)式關(guān)系運(yùn)算符的作用:用于條件判斷的表達(dá)。關(guān)系運(yùn)算符及其含義和優(yōu)先級如下:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級關(guān)系運(yùn)算符含 義優(yōu) 先 級小于高(10)大于等于低(9)!=不等于小于等于高(10)大于等于關(guān)系表達(dá)式的結(jié)果只有兩個: (1) 真(值為1) (2) 假(值為0)假如有: int a,b; a=(230) b=(23-9) = (

24、18-6);則:變量a的值為1,變量b的值為0。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.4.3 邏輯運(yùn)算符及邏輯表達(dá)式邏輯運(yùn)算符的作用:用于判斷條件中的邏輯關(guān)系。邏輯運(yùn)算符及其含義和優(yōu)先級如下:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級邏輯運(yùn)算符含 義優(yōu) 先 級!邏輯非高(14)&邏輯與中(5)| |邏輯或低(4)邏輯表達(dá)式的結(jié)果: 真(值為1) 假(值為0) (注:非零值均為真)邏輯運(yùn)算規(guī)則:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級ABA&BA|B!A真真真真假真假假真假假假假假真假真假真真1.由關(guān)系運(yùn)算符和邏輯運(yùn)算符可組成復(fù)雜邏輯表達(dá)式。 如:(ab) & !(c-d) | (a=5)

25、2.對于復(fù)雜邏輯表達(dá)式,要注意C語言的特殊語法規(guī)則。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級特別提示(1)(表達(dá)式表達(dá)式1) | (表達(dá)式表達(dá)式2) 語法規(guī)則 若:(表達(dá)式1)的值為真, 則:(表達(dá)式1) | (表達(dá)式2)的結(jié)果就為真。 特點(diǎn):系統(tǒng)對(表達(dá)式2)不會進(jìn)行計算,但會檢查其語法錯誤。 結(jié)論:與(表達(dá)式2)的結(jié)果無關(guān)。 例如: int a=4,b=8,c; c=(ab)&(+a); printf(“c=%d, a=%dn”,c,a); 程序運(yùn)行結(jié)果為:c=0,a=4。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級例11:閱讀下面的程序,分析復(fù)雜邏輯表達(dá)式運(yùn)算的語法規(guī)則。/*example2

26、_14.c */ #includemain() int a=4,b=8,c=5; int d1,d2,d3,d4; d1=(ab-); /* 表達(dá)式(1) */ printf(d1=%d, a=%d, b=%d, c=%dn,d1,a,b,c); d2=(ab)&(+a=5)|(cb-); /* 表達(dá)式(2) */ printf(d2=%d, a=%d, b=%d, c=%dn,d2,a,b,c); d3=(ab-); /* 表達(dá)式(3) */ printf(d3=%d, a=%d, b=%d, c=%dn,d3,a,b,c); d4=(ab)&(+a=5)&(cb-); /* 表達(dá)式(4)

27、*/ printf(d4=%d, a=%d, b=%d, c=%dn,d4,a,b,c);1.分析程序的運(yùn)行結(jié)果。2.如果有: int a=4,b=8,c=5; int d1,d2,d3,d4; d4=(ab-); 則:d4,a,b,c的值分別為多少?提示:要避免含義不明確的表達(dá)式。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級思考2.4.4 位運(yùn)算符及表達(dá)式位運(yùn)算的作用:直接對變量的二進(jìn)制按位進(jìn)行操作。 注意:位運(yùn)算只適合于整型和字符型變量。位運(yùn)算符及其含義和優(yōu)先級如下:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級位 運(yùn) 算 符含 義優(yōu) 先 級按位取反高(14)&位與低(8)位異或低(7)|位或低(6

28、)位右移位運(yùn)算規(guī)則:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級ABA|BABA&BAB11101001011001000001101110102.4.5 條件運(yùn)算符條件運(yùn)算符條件運(yùn)算符由“?”和“:”組成。條件表達(dá)式的一般形式: 表達(dá)式1? 表達(dá)式2:表達(dá)式3;條件表達(dá)式的語法規(guī)則: 當(dāng)表達(dá)式1的值為1(真)時,其結(jié)果為表達(dá)式2的值; 當(dāng)表達(dá)式1的值為0(假)時,其結(jié)果為表達(dá)式3的值。注意:注意: 表達(dá)式1通常是關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是其他表達(dá)式。條件運(yùn)算符又稱為三目運(yùn)算符,“三目”指的是操作數(shù)的個數(shù)有3個。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級例12:閱讀下面的程序,了解三目運(yùn)算符組

29、成的表達(dá)式計算規(guī)則。/*example2_15.c 了解三目運(yùn)算符的語法規(guī)則*/ #include #include main() int a=3,b=5,c; c=(ab)?(a+b):(a-b); printf(The max value of a and b is: %dn,c); a=6; b=2; c=(ab)?(a-b):(a+b); printf(The max value of a and b is: %dn,c);請分析程序的運(yùn)行結(jié)果。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.4.6 逗號表達(dá)式逗號表達(dá)式由逗號運(yùn)算符“,”將兩個表達(dá)式連接起來: 表達(dá)式1,表達(dá)式2;逗號表達(dá)

30、式的語法規(guī)則:語法規(guī)則: 先計算表達(dá)式1,再計算表達(dá)式2; 最后結(jié)果為表達(dá)式2的結(jié)果。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級例13:了解逗號表達(dá)式的語法規(guī)則。/*example2_16.c 了解逗號表達(dá)式*/ #include main() int a,b; a=3*5,a*4; b=(3*5,a*4); printf(a=%dnb=%dn,a,b);請分析程序的運(yùn)算結(jié)果。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級1逗號表達(dá)式可以擴(kuò)充到具有n個表達(dá)式的情況: 表達(dá)式1,表達(dá)式2,表達(dá)式n; 整個逗號表達(dá)式的結(jié)果為表達(dá)式整個逗號表達(dá)式的結(jié)果為表達(dá)式n的值。的值。2通常是用逗號表達(dá)式來分別求逗號表

31、達(dá)式內(nèi)各表達(dá)式的值,并不是為了求整個逗號表達(dá)式的值。3變量定義中出現(xiàn)的逗號和在函數(shù)參數(shù)表中出現(xiàn)的逗號不構(gòu)成逗號表達(dá)式。4.逗號表達(dá)式有可能降低程序的可讀性,請謹(jǐn)慎使用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級幾點(diǎn)說明請閱讀程序example2_17.c,進(jìn)一步了解逗號表達(dá)式。2.4.7 數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換C語言允許表達(dá)式中混合有不同類型的常量和變量。1. 系統(tǒng)自動轉(zhuǎn)換容易出現(xiàn)意外結(jié)果。假設(shè)有:s=a+t; b=a+t;結(jié)果為:s=6.7,b=6,原因:數(shù)據(jù)類型不一致,有可能產(chǎn)生數(shù)據(jù)丟失。應(yīng)避免出現(xiàn)數(shù)據(jù)類型不一致的表達(dá)式。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型強(qiáng)制

32、轉(zhuǎn)換表達(dá)式: (數(shù)據(jù)類型符)表達(dá)式; 或: (數(shù)據(jù)類型符)變量;強(qiáng)制轉(zhuǎn)換語法規(guī)則: 將表達(dá)式或變量的值臨時臨時轉(zhuǎn)換成圓括號內(nèi)指定的數(shù)據(jù)類型。但不改變不改變變量原來的數(shù)據(jù)類型。假設(shè)有: int a ; float t ; a=15; t=(float) a/30;結(jié)果為:t=0.5,若表達(dá)式為t=a/30,則結(jié)果為:t=0。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.4.8 復(fù)雜表達(dá)式的計算順序 C語言共有各類運(yùn)算符47個,按優(yōu)先級可分為11個類別共15個優(yōu)先級。運(yùn)算符的優(yōu)先級與運(yùn)算方向:表2-102.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級例13:閱讀程序,分析復(fù)雜表達(dá)式的計算順序。/*examp

33、le2_18.c 復(fù)雜表達(dá)式的計算順序*/ #include main() int a=10,b=15,c=14,temp; temp= a+6b & b-cc; /* */ printf(a+6b & b-cc= %dn,temp); temp=!a+b*c-b/a & b-a*!(c-a); /* */ printf(!a+b*c-b/a & b-a*!(c-a)= %dn,temp);請分析表達(dá)式和表達(dá)式的結(jié)果。指出程序的不足,修改程序。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級2.4.9 C語言的基本語句結(jié)構(gòu)C語言的語句可分為四大類:1表達(dá)式語句2復(fù)合語句3控制語句4轉(zhuǎn)向控制語句2.4

34、基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級1表達(dá)式語句表達(dá)式語句一個獨(dú)立的語句就是表達(dá)式語句。如:a=3*b-c/2;i-;+j:b=(a3)? 1:0;2復(fù)合語句復(fù)合語句由一對花括號“ ”將多個表達(dá)式語句括起來所組成。如: a=b+c; x=y%a; prinft(a=%d, x=%dn, a, x);3控制語句控制語句由控制結(jié)構(gòu)組成的語句,有5種控制語句:(1)選擇(分支)語句:ifelse。(2)多分支語句:switch。(3)for循環(huán)語句:for。(4)while循環(huán):while。(5)do_while循環(huán):dowhile。4轉(zhuǎn)向控制語句轉(zhuǎn)向控制語句由系統(tǒng)提供的關(guān)鍵字構(gòu)成,用于改變程序的流程。

35、 有4種轉(zhuǎn)向控制語句:(1)break;可用于switch語句和循環(huán)的語句。(2)continue;只適用于循環(huán)語句。(3)return;用在函數(shù)的結(jié)束處。(4)goto;可用于程序的任何地方,但不提倡使用。C語言的輸入/輸出的操作是通過調(diào)用系統(tǒng)函數(shù)來實(shí)現(xiàn)。常用的標(biāo)準(zhǔn)輸入/輸出函數(shù)有如下幾種。(1)格式化輸入/輸出函數(shù):scanf()/printf()。(2)字符輸入/輸出函數(shù):getc()/putc()。(3)字符輸入/輸出函數(shù):getch()/putch()。(4)字符輸入/輸出函數(shù):getchar()/putchar()。(5)字符串輸入/輸出函數(shù):gets()/puts()。不同的函數(shù)

36、在功能上有所不同,使用時應(yīng)根據(jù)具體的要求,選擇合適的輸入/輸出函數(shù)。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介2.5.1 格式化輸出函數(shù)printf( )函數(shù)printf( )的一般形式為: printf(控制字符串,輸出項列表);函數(shù)printf( )的作用: 按控制字符串指定的格式,向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出指定的輸出項列表的值。注意:(1)可以是常量、變量、表達(dá)式。當(dāng)有多個輸出項時,各項之間用逗號分隔。(2)中的個數(shù)、類型必須與中格式字符的個數(shù)、類型相一致。(3)必須用雙引號將括起,可由格式說明和普通字符兩部分組成。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介1格式說明格

37、式說明格式說明的一般格式為: % 格式字符規(guī)定了對應(yīng)輸出項的輸出格式。注: 在格式字符前面,還可用字母1和h(大小寫均可)來說明是用long型或short型格式輸出數(shù)據(jù)。常用格式字符如表2-21所示。如:%d,%c,%f,%Lf,%s等均為正確的輸出格式說明。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介修飾符是可選的,用于確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對齊方式等。若缺省修飾符,按系統(tǒng)默認(rèn)設(shè)定輸出。修飾符的主要類型:(1)字段寬度修飾符 用數(shù)字修飾輸出字符占用的寬度,規(guī)則見表2-22。如:%3d,%4c,%5.2f,%8Lf,%6s等均為正確的輸出格式說明。(2)對齊方式修飾符 默認(rèn)

38、輸出方式為右對齊方式。 在%后面加上一個負(fù)號“”,可使數(shù)據(jù)的輸出方式改為左對齊的方式。如:%-3d,%-4c,%-5.2f,%-8Lf,%-6s等均為正確的輸出格式說明。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介2普通字符普通字符普通字符包括可打印字符和轉(zhuǎn)義字符??纱蛴∽址丛瓨语@示在屏幕上,起說明作用。轉(zhuǎn)義字符是一些不可顯示的控制字符,用于產(chǎn)生特殊的輸出效果。如:“ s=%4dt%7.4fnt%lun” 為正確的輸出格式。閱讀程序【例2-19】、【例2-20】、【例2-21】 。 了解格式輸出的方法。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介2.5.2 格式化輸入函數(shù)scan

39、f()函數(shù)scanf()的一般形式為: scanf(控制字符串,輸入項列表);函數(shù)scanf()的作用: 按控制字符串指定的格式,從鍵盤輸入數(shù)據(jù),并將輸入的值賦給輸入項列表相對應(yīng)的變量。 注意:(1)規(guī)定了數(shù)據(jù)的類型,其內(nèi)容也可由格式說明和普通字符兩部分組成。(注:不提倡加普通字符)(2)則由一個或多個變量地址組成,各變量地址之間用逗號“,”分隔。如有:int a,b;則:&a,&b就可以是一個2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介輸入數(shù)據(jù)時,可用空格符、表格符(tab)和換行符(enter)作為每個變量輸入完畢的標(biāo)志。以換行符作為數(shù)據(jù)輸入的結(jié)束。1格式說明格式說明格式說明規(guī)定了輸

40、入項中各變量的數(shù)據(jù)類型。格式說明的一般形式: %注意: 格式字符的表示方法與printf()中的相同,各格式字符及其意義如表2-23所示。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介修飾符是可選的,主要有下面幾種:(1)字段寬度)字段寬度字段寬度用數(shù)字表示,其作用是限定輸入的字符寬度。如:scanf(%3d, &a);則:變量a的寬度只占3個字符,有效值范圍為:99999。若超過寬度,系統(tǒng)會截斷,只取前3位。假如有: int a,b; scanf(%d%3d,&a,&b); printf(a=%dtb=%dn,a,b);若輸入為: 123412345則系統(tǒng)會將1234賦給變量a,將123

41、45的前3位的值123賦給變量b。輸出結(jié)果為: a=1234b=1232.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介(2)l和和h字母(L,l)和(H,h)分別表示輸入數(shù)據(jù)類型的長短。(L,l) 可表示長整型、雙精度浮點(diǎn)型。(H,h) 可表示短整型數(shù)。如: scanf(%10ld%hd%lf, &a, &b,&x);則:a按寬度為10的長整型數(shù),b為短整型數(shù),x為雙精度浮點(diǎn)型數(shù)。(3)字符)字符“*”*的作用是跳過相應(yīng)的數(shù)據(jù)。輸入的數(shù)據(jù)不賦給變量。假如有:int x=0,y=0,z=0; scanf(%d%*d%d,&x, &y, &z);若輸入為:11 22 33則結(jié)果為:x=11,y=

42、33,z=0(z保持原來的值不變,22被跳過,沒有賦給任何變量。)2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介2普通字符普通字符普通字符包括空白字符、轉(zhuǎn)義字符和可見字符。注意:如果有普通字符,則輸入時需要原樣輸入。特別提示: 在輸入格式的修飾符中,不建議使用普通字符。普通字符的類型:(1)空白字符:空格符、制表符或換行符都是空白字符,但它們的ASCII值是不一樣的??瞻鬃址淖饔茫簩斎氲臄?shù)據(jù)起分離作用。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介 若輸入的數(shù)據(jù)中含有字符型的數(shù)據(jù)時,需要作一些技術(shù)處理,否則有可能出錯。例如:int a; char ch; scanf(%d%c,&a

43、, &ch);若輸入為:64q則結(jié)果為:ch= ,a=64, 注:結(jié)果并不是 ch=q,a=64思考:思考:怎樣改進(jìn)?可使得結(jié)果為:怎樣改進(jìn)?可使得結(jié)果為:ch=q,a=642.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介注意(2)轉(zhuǎn)義字符:n、t轉(zhuǎn)義字符屬空白字符,對輸入的數(shù)據(jù)不產(chǎn)生影響。(3)可見字符可見字符是指ASCII碼中所有通過鍵盤輸入的可見字符。如數(shù)字、字母、其他符號等。注意: 若輸入格式中含有可見字符,則實(shí)際輸入要“原樣輸入”。假如有:int a,b; char ch; scanf(%d,%d,%c,&a, &b, &ch);若輸入為:12,34,q則結(jié)果為:a=12,b=34

44、,ch=q思考:若輸入為:12,34,q 則結(jié)果會怎樣?2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介1要注意數(shù)值型數(shù)據(jù)和字符型數(shù)據(jù)的取值特點(diǎn)。 若要同時輸入這兩種類型的數(shù)據(jù),可采取先輸入字符型數(shù)據(jù),后輸入數(shù)值型數(shù)據(jù),以減少錯誤的發(fā)生。2建議在scanf()語句中不要加入可見字符。避免錯誤的發(fā)生。2.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介特別提醒2.5.3 字符輸出函數(shù)字符輸出函數(shù)C語言專門為字符提供了專用的字符輸出函數(shù)。(注:對不同的編譯器,它們所在的頭文件有可能不同。)常用的字符輸出函數(shù):表2-242.5 標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介輸出函數(shù)簡介函 數(shù) 原 型函 數(shù) 功 能int putc(int ch,FILE *stream);將ch所對應(yīng)的字符輸出到stream指定的文 件流中(stdo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論