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

下載本文檔

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

文檔簡介

1、第第2 2章章 基本的基本的程序語句程序語句 本章主要內(nèi)容本章主要內(nèi)容1. 用二進(jìn)制表示的數(shù)2.基本數(shù)據(jù)類型及取值范圍3.標(biāo)識(shí)符、變量和常量4.基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)5.標(biāo)準(zhǔn)輸入/輸出函數(shù)簡介6.程序范例第2章 引言1整型數(shù)的二進(jìn)制表示整型數(shù)分為有符號(hào)的和無符號(hào)的兩種;有符號(hào)的整型數(shù)的正負(fù)號(hào)由字節(jié)的最高位來表示:0表示正數(shù),1表示負(fù)數(shù)。整型數(shù)占用的字節(jié)數(shù)可為8位、16位或者32位。整型數(shù)的取值范圍:2.1 用二進(jìn)制表示的數(shù)字 節(jié) 數(shù)有 符 號(hào) 的無 符 號(hào) 的最 小 值最 大 值最 小 值最 大 值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個(gè)字節(jié)),雙精度浮點(diǎn)數(shù)占64位(8個(gè)字節(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ù)符號(hào)位(1位)指數(shù)位(8位)尾數(shù)(23位)31 30 23 22 0SEM S代表符號(hào)位,占1位。E稱為“移碼”,占8位。 E的取值范圍為0255,E=127+e 因此,e的取值范圍為127+128);M代表有效位

3、數(shù)或稱為“小數(shù)”, m2=(1.M)2(2)雙精度浮點(diǎn)型數(shù)據(jù)的字節(jié)分配空間:2.1 用二進(jìn)制表示的數(shù)S代表符號(hào)位,占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.797 693103081.

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

5、+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)識(shí)符標(biāo)識(shí)符 標(biāo)識(shí)符是對(duì)變量名、函數(shù)名、標(biāo)號(hào)和其他各種用戶定義的對(duì)象命名。建議取有實(shí)際意義的標(biāo)識(shí)符來命名。標(biāo)識(shí)符的第1個(gè)字符必須是字母或下劃線,標(biāo)識(shí)符的長度可以是一個(gè)或多個(gè)字

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

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

8、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)識(shí)符、變量和常量 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)整型常量 可采用十進(jìn)制、八

9、進(jìn)制、十六進(jìn)制來表示整型常量。 八進(jìn)制數(shù)的前面用數(shù)字0開頭, 十六進(jìn)制數(shù)前面用數(shù)字0和字母X開頭(0 x或0X) 整型常量的表示見表2-9。2.3 標(biāo)識(shí)符、變量和常量例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”,128);2.3 標(biāo)識(shí)符、

10、變量和常量(2)實(shí)型常量實(shí)型常量的兩種表示法:浮點(diǎn)計(jì)數(shù)法和科學(xué)計(jì)數(shù)法。例如:231.467.36E74.58E50.0945對(duì)太大或太小的數(shù),通常是采用科學(xué)計(jì)數(shù)法。 如上面的7.36E7、4.58E5。2.3 標(biāo)識(shí)符、變量和常量例4:了解實(shí)型常量的兩種表示法。/*example2_4.c (浮點(diǎn)計(jì)數(shù)法,科學(xué)計(jì)數(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,12345.6e-2); pr

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

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

13、5,A+5); printf(%d-%cn,A+70,A+70);2.3 標(biāo)識(shí)符、變量和常量例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)識(shí)符、變量和常量程序運(yùn)行結(jié)果:65-A70-F135-?(4)字符串常量字符串常量是指用一對(duì)雙引號(hào)括起來的一串字符。如: world, TRUE or FLASE, 8765431.0037, T 均為字符串常量。注:雙引號(hào) ()和反

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

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

16、: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所對(duì)應(yīng)的字符所對(duì)應(yīng)的字符 */ printf(x41n); /* 輸出十六進(jìn)制值輸出十六進(jìn)制值41所對(duì)應(yīng)的字符所對(duì)應(yīng)的字符 */運(yùn)行程序,觀察程序的運(yùn)行

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

18、ple2_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)識(shí)符、變量和常量程序運(yùn)行結(jié)果:I am a student.That is Fine.3.141593C語言的基本表達(dá)式是由操作數(shù)和操作符組成。l操作數(shù)通常由變量或常量表示;l操作符由各種運(yùn)算符表示。l一個(gè)基本表達(dá)式也可以作為操作數(shù)來構(gòu)成復(fù)雜表達(dá)式。l構(gòu)成基本表達(dá)式的常用運(yùn)算符有:(1)算術(shù)運(yùn)

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

20、ample2_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)先級(jí) 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 */ z2=(x+y)/(x-y)

21、; /* 復(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)先級(jí)思考思考關(guān)于前置+/和后置+/的作用 前置+或前置表達(dá)式: +; 先將變量的值加1,再使用變量。 ; 先將變量的值減1,再使用變量。后置+或后置表達(dá)式: +; 先使用變量,再將變

22、量的值加1。 ; 先使用變量,再將變量的值減1。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)例9:閱讀程序example2_10.c,了解前置+/-和后置+/的作用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)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ù)時(shí)的作用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)1.為什么程序的運(yùn)行結(jié)果會(huì)有不同?2.程序設(shè)計(jì)應(yīng)遵循什么原則?3.修改程序,使其具有更好的可

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

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

25、注意C語言的特殊語法規(guī)則。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)特別提示(1)(表達(dá)式表達(dá)式1) | (表達(dá)式表達(dá)式2) 語法規(guī)則 若:(表達(dá)式1)的值為真, 則:(表達(dá)式1) | (表達(dá)式2)的結(jié)果就為真。 特點(diǎn):系統(tǒng)對(duì)(表達(dá)式2)不會(huì)進(jìn)行計(jì)算,但會(huì)檢查其語法錯(cuò)誤。 結(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)先級(jí)例11:閱讀下面的程序,分析復(fù)雜邏輯表達(dá)式運(yùn)算的語法規(guī)則。/*example2_14.c */ #inc

26、ludemain() 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) */ printf(d4=

27、%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)先級(jí)思考2.4.4 位運(yùn)算符及表達(dá)式位運(yùn)算的作用:直接對(duì)變量的二進(jìn)制按位進(jìn)行操作。 注意:位運(yùn)算只適合于整型和字符型變量。位運(yùn)算符及其含義和優(yōu)先級(jí)如下:2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)位 運(yùn) 算 符含 義優(yōu) 先 級(jí)按位取反高(14)&位與低(8)位異或低(7)|位或低(6)位右移位運(yùn)算規(guī)則:2.4

28、 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)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(真)時(shí),其結(jié)果為表達(dá)式2的值; 當(dāng)表達(dá)式1的值為0(假)時(shí),其結(jié)果為表達(dá)式3的值。注意:注意: 表達(dá)式1通常是關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是其他表達(dá)式。條件運(yùn)算符又稱為三目運(yùn)算符,“三目”指的是操作數(shù)的個(gè)數(shù)有3個(gè)。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)例12:閱讀下面的程序,了解三目運(yùn)算符組成的表達(dá)式計(jì)算規(guī)則。/*e

29、xample2_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);請(qǐng)分析程序的運(yùn)行結(jié)果。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)2.4.6 逗號(hào)表達(dá)式逗號(hào)表達(dá)式由逗號(hào)運(yùn)算符“,”將兩個(gè)表達(dá)式連接起來: 表達(dá)式1,表達(dá)式2;逗號(hào)表達(dá)式的語法規(guī)則:語法規(guī)則:

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

31、為了求整個(gè)逗號(hào)表達(dá)式的值。3變量定義中出現(xiàn)的逗號(hào)和在函數(shù)參數(shù)表中出現(xiàn)的逗號(hào)不構(gòu)成逗號(hào)表達(dá)式。4.逗號(hào)表達(dá)式有可能降低程序的可讀性,請(qǐng)謹(jǐn)慎使用。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)幾點(diǎn)說明請(qǐng)閱讀程序example2_17.c,進(jìn)一步了解逗號(hào)表達(dá)式。2.4.7 數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換C語言允許表達(dá)式中混合有不同類型的常量和變量。1. 系統(tǒng)自動(dò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)先級(jí)2.強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換表達(dá)式: (數(shù)據(jù)類型符

32、)表達(dá)式; 或: (數(shù)據(jù)類型符)變量;強(qiáng)制轉(zhuǎn)換語法規(guī)則: 將表達(dá)式或變量的值臨時(shí)臨時(shí)轉(zhuǎn)換成圓括號(hào)內(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)先級(jí)2.4.8 復(fù)雜表達(dá)式的計(jì)算順序 C語言共有各類運(yùn)算符47個(gè),按優(yōu)先級(jí)可分為11個(gè)類別共15個(gè)優(yōu)先級(jí)。運(yùn)算符的優(yōu)先級(jí)與運(yùn)算方向:表2-102.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)例13:閱讀程序,分析復(fù)雜表達(dá)式的計(jì)算順序。/*example2_18.c 復(fù)雜表達(dá)

33、式的計(jì)算順序*/ #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);請(qǐng)分析表達(dá)式和表達(dá)式的結(jié)果。指出程序的不足,修改程序。2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)2.4.9 C語言的基本語句結(jié)構(gòu)C語言的語句可分為四大類:1表達(dá)式語句2復(fù)合語句3控制語句4轉(zhuǎn)向控制語句2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的

34、優(yōu)先級(jí)1表達(dá)式語句表達(dá)式語句一個(gè)獨(dú)立的語句就是表達(dá)式語句。如:a=3*b-c/2;i-;+j:b=(a3)? 1:0;2復(fù)合語句復(fù)合語句由一對(duì)花括號(hào)“ ”將多個(gè)表達(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)成,用于改變程序的流程。 有4種轉(zhuǎn)向控制語句:(1

35、)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ù)在功能上有所不同,使用時(shí)應(yīng)

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

37、: % 格式字符規(guī)定了對(duì)應(yīng)輸出項(xià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ù)、對(duì)齊方式等。若缺省修飾符,按系統(tǒng)默認(rèn)設(shè)定輸出。修飾符的主要類型:(1)字段寬度修飾符 用數(shù)字修飾輸出字符占用的寬度,規(guī)則見表2-22。如:%3d,%4c,%5.2f,%8Lf,%6s等均為正確的輸出格式說明。(2)對(duì)齊方式修飾符 默認(rèn)輸出方式為右對(duì)齊方式。 在

38、%后面加上一個(gè)負(fù)號(hào)“”,可使數(shù)據(jù)的輸出方式改為左對(duì)齊的方式。如:%-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ù)scanf()函數(shù)scanf()的

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

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

41、變量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=33,z=0(z保持原來的

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

43、4q則結(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)義字符屬空白字符,對(duì)輸入的數(shù)據(jù)不產(chǎn)生影響。(3)可見字符可見字符是指ASCII碼中所有通過鍵盤輸入的可見字符。如數(shù)字、字母、其他符號(hào)等。注意: 若輸入格式中含有可見字符,則實(shí)際輸入要“原樣輸入”。假如有:int a,b; char ch; scanf(%d,%d,%c,&a, &b, &ch);若輸入為:12,34,q則結(jié)果為:a=12,b=34,ch=q思考:若輸入為:

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論