2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語言程序設(shè)計(jì)教程(第4版),第2章 基本的程序語句,本章主要內(nèi)容1.基本數(shù)據(jù)類型及取值范圍2.標(biāo)識(shí)符、變量和常量3.基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí)4.標(biāo)準(zhǔn)輸入/?輸出函數(shù)簡(jiǎn)介5.程序范例,第2章 引言,2.1 預(yù)備知識(shí)1.定點(diǎn)數(shù)和浮點(diǎn)數(shù)2.整數(shù)的二進(jìn)制3.浮點(diǎn)數(shù)的二進(jìn)制4.其它進(jìn)制及轉(zhuǎn)換,第2章 引言,1. C語言提供5種基本數(shù)據(jù)類型。(1)字符型:用char表示。(2)整數(shù)型:用int表示。(3)單精度實(shí)

2、數(shù)型:用float表示。(4)雙精度實(shí)數(shù)型:用double表示。(5)空類型:用void表示。?對(duì)整數(shù)型,有四種修飾:①signed(有符號(hào)) ②unsigned(無符號(hào))③long(長(zhǎng)型) ④short(短型)?數(shù)據(jù)類型決定了數(shù)據(jù)的大小、數(shù)據(jù)可執(zhí)行的操作以及數(shù)據(jù)的取值范圍。,2.2 基本數(shù)據(jù)類型及取值范圍,?數(shù)據(jù)類型的長(zhǎng)度和取值范圍會(huì)隨著機(jī)器的CPU類型和編譯器的不同而不同。,2.2 基本數(shù)

3、據(jù)類型及取值范圍,例1:驗(yàn)證數(shù)據(jù)類型的字節(jié)長(zhǎng)度。見【例2-1】所示的程序:example2_1.c?不同字節(jié)長(zhǎng)度的數(shù)據(jù)類型和取值范圍: 見表2-5和表2-6,2.2 基本數(shù)據(jù)類型及取值范圍,2.3.1 標(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í)符的長(zhǎng)度可以是一個(gè)或多個(gè)字符,最長(zhǎng)不允許超過32個(gè)字符。例如:

4、 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語言庫(kù)函數(shù)同名,2.3 標(biāo)識(shí)符、變量和常量,2.3.2 變量和常量1. 變量

5、 其值可以改變的量稱為變量。 變量的兩個(gè)要素:標(biāo)識(shí)符 (名字)和值。 ?C 語言規(guī)定:變量必須在使用之前定義。 ?定義變量的一般形式是: ;?必須是有效的C數(shù)據(jù)類型,如:int、float等,類型名規(guī)定了變量的存儲(chǔ)空間和取值范圍。? 可以由一個(gè)或多個(gè)由逗號(hào)分隔的多個(gè)標(biāo)識(shí)符名構(gòu)成。,2.3 標(biāo)識(shí)符、變量和常量,如: int i, j, number; unsigne

6、d int max, min; float high_value, price; double lenth, total_wieight;思考:上面各種變量的類型和他們的取值范圍。,2.3 標(biāo)識(shí)符、變量和常量,例2:運(yùn)行下面的程序,了解變量的取值范圍和C語言的特性。/*example2_2.c 變量的取值范圍測(cè)試*/ #include main(){ int a=32766,b=-32766;

7、 unsigned m=6553; float t=3.4e+37; printf("a=%d\n",a); printf("m=%u\n",m); printf(“t=%e\n”,t); a=a+4;,2.3 標(biāo)識(shí)符、變量和常量,b=b-6; m=m*10+10; t=t*10; printf(&qu

8、ot;After change:\n");printf("a+4=%d\n",a);printf("b-6=%d\n",b);printf("m*10+10=%u\n",m);printf("t*10=%e\n",t);},2.常量 ?常量的值是不可變的。 在C語言中,有整型常量、實(shí)型常量、字符常量、字符串常量、和枚舉常量

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

10、;,0x80); printf("八進(jìn)制0200的十進(jìn)制值為:%d\n",0200); printf("十進(jìn)制128的十進(jìn)制值為:%d\n",128); printf("十進(jìn)制128的十六進(jìn)制值為:%x\n",128); printf("十進(jìn)制128的八進(jìn)制值為:%o\n”,128);},2.3 標(biāo)識(shí)符、變量和常量,

11、(2)實(shí)型常量?實(shí)型常量的兩種表示法:浮點(diǎn)計(jì)數(shù)法和科學(xué)計(jì)數(shù)法。例如:231.467.36E?74.58E5?0.0945?對(duì)太大或太小的數(shù),采用科學(xué)計(jì)數(shù)法。 如上面的7.36E?7、4.58E5。,2.3 標(biāo)識(shí)符、變量和常量,例4:了解實(shí)型常量的兩種表示法。/*example2_4.c (浮點(diǎn)計(jì)數(shù)法,科學(xué)計(jì)數(shù)法)*/ #includemain(){ printf(“123.445

12、6的浮點(diǎn)數(shù)表示:%6f\n",123.456); printf(“1.23456E2的浮點(diǎn)數(shù)表示:%6f\n",1.23456e2); printf(“12345.6E-2的浮點(diǎn)數(shù)表示:%6f\n",12345.6e-2); printf(“12345.6的科學(xué)計(jì)數(shù)法表示:%E\n",12345.6);},2.3 標(biāo)識(shí)符、變量和常量,(3)字符常量

13、?字符常量是由一對(duì)單引號(hào)括起來的單個(gè)字符。 如:'A'、'S'、'9'、'$' 等均為字符常量。 注1:?jiǎn)我?hào)只起定界作用,并不代表字符。 注2:?jiǎn)我?hào) (')和反斜杠(\)本身作為字符時(shí)要通過轉(zhuǎn)義字符(\)。 如:'\''和 '\\' 分別代表單個(gè)字符單引號(hào)(')和反斜杠(\)。,2.

14、3 標(biāo)識(shí)符、變量和常量,?在C語言中,字符是按其所對(duì)應(yīng)的ASCII的值來存儲(chǔ)的,一個(gè)字符占一個(gè)字節(jié)。部分字符所對(duì)應(yīng)ASCII碼值如下:,2.3 標(biāo)識(shí)符、變量和常量,?字符和與之對(duì)應(yīng)的ASCII詳見附錄B,注意:數(shù)字3和字符?‘3’?的區(qū)別:,2.3 標(biāo)識(shí)符、變量和常量,?字符也可以參與運(yùn)算:如:?‘A’+6;運(yùn)算結(jié)果為71,對(duì)應(yīng)的字符為H。?‘8’?7;運(yùn)算結(jié)果為49,對(duì)應(yīng)的字符為1。?‘y’?32;運(yùn)算結(jié)果為89,對(duì)

15、應(yīng)的字符為Y。,例5:了解字符常量與其順序值的關(guān)系。/*example2_5.c 字符常量與其順序值的關(guān)系*/ #includemain(){ printf("%d-->%c\n",'A','A'); printf("%d-->%c\n",'A'+5,'A'+5); pri

16、ntf("%d-->%c\n",'A'+70,'A'+70);},2.3 標(biāo)識(shí)符、變量和常量,例5:了解字符常量與其順序值的關(guān)系。/*example2_5.c 字符常量與其順序值的關(guān)系*/ #includemain(){ printf("%d-->%c\n",'A','A'); p

17、rintf("%d-->%c\n",'A'+5,'A'+5); printf("%d-->%c\n",'A'+70,'A'+70);},2.3 標(biāo)識(shí)符、變量和常量,程序運(yùn)行結(jié)果:65-->A70-->F135-->?,(4)字符串常量?字符串常量是指用一對(duì)雙引號(hào)括起來的一串字符。

18、如: "world", "TRUE or FLASE", "8765431.0037", "T " 均為字符串常量。注:雙引號(hào) (")和反斜杠(\)本身作為字符串時(shí)要通過轉(zhuǎn)義字符(\)。 如: " \" "和 " \\" 分別代表字符串(")和反斜杠(\)

19、。,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。 因此,長(zhǎng)度為n個(gè)字符的字符串常量,在內(nèi)存中占有n+1個(gè)字節(jié)的存儲(chǔ)空間。如:字符串“ World ”,共5個(gè)字符,需占用6個(gè)字節(jié),其存儲(chǔ)形式為:,2.3 標(biāo)識(shí)符、變量和常量,(5)轉(zhuǎn)義字符?轉(zhuǎn)義字

20、符用反斜杠\后面跟一個(gè)字符或一個(gè)八進(jìn)制或十六進(jìn)制數(shù)表示。 如:\a,\0,\n等。?代表ASCII字符中不可打印的控制字符和特定功能的字符。?表示特殊字符,如:?jiǎn)我?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ì)在控制打印

21、機(jī)輸出執(zhí)行時(shí)響應(yīng)其操作。③ 在程序中,使用不可打印字符時(shí),通常用轉(zhuǎn)義字符表示。,2.3 標(biāo)識(shí)符、變量和常量,例6:了解轉(zhuǎn)義字符的作用。/*example2_6.c 了解轉(zhuǎn)義字符的作用*/ #includemain(){ printf("\a"); /* 發(fā)出鈴聲 */ printf("This is a test:\n");

22、 printf("Ready::"); printf("\bBackspace.\n"); /* 往左退一格 */ printf("\tHorizontal tab\n");/* 往右進(jìn)八格 */ printf("\\\n"); /* 輸出\ */ printf(

23、"\?\n"); /* 輸出? */ printf("\'\n"); /* 輸出' */ printf("\"\n"); /* 輸出" */ printf("\101\n");

24、 /* 輸出八進(jìn)制值101所對(duì)應(yīng)的字符 */ printf("\x41\n"); /* 輸出十六進(jìn)制值41所對(duì)應(yīng)的字符 */},?運(yùn)行程序,觀察程序的運(yùn)行結(jié)果。程序運(yùn)行結(jié)果:This is a test:Ready:Backspace. Horizontal tab\?'"AA,2.3 標(biāo)識(shí)符、變量和常量,(6)符號(hào)常

25、量?將程序中的常量定義為一個(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)常量用大寫英文字母表示。,

26、2.3 標(biāo)識(shí)符、變量和常量,例7:了解符號(hào)常量的使用。/*example2_7.c */ #include#define WHO "I am a student."#define HOW "That is Fine."#define PI 3.1415926main(){ printf("%s\n",WHO); printf("

27、%s\n",HOW); printf("%f\n",PI);},2.3 標(biāo)識(shí)符、變量和常量,程序運(yùn)行結(jié)果:I am a student.That is Fine.3.141593,?C語言的基本表達(dá)式是由操作數(shù)和操作符組成。操作數(shù)通常由變量或常量表示;操作符由各種運(yùn)算符表示。一個(gè)基本表達(dá)式也可以作為操作數(shù)來構(gòu)成復(fù)雜表達(dá)式。構(gòu)成基本表達(dá)式的常用運(yùn)算符有:(1)算術(shù)運(yùn)算符。(2

28、)關(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í),注:此處規(guī)定優(yōu)先級(jí)的數(shù)字越大,優(yōu)先級(jí)越高。,例8: 閱讀下面的程序,了解由算術(shù)運(yùn)

29、算符組成的表達(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)先級(jí),d1=a+b*c-b/a+b%c*a; /* 復(fù)雜表達(dá)式1 */ d2=(a+b)*c-

30、(b/a)+(b%c)*a; /* 復(fù)雜表達(dá)式2 */ d3=a/b; d4=c%b; printf("d1=%d, d2=%d, d3=%d, d4=%d\n", d1,d2,d3,d4); x=3.2; y=2.4; z1=x+y/x-y; /* 復(fù)雜表達(dá)式3 */

31、 z2=(x+y)/(x-y); /* 復(fù)雜表達(dá)式4 */ z3=y/b; printf("z1=%f, z2=%f, z3=%f\n",z1,z2,z3); },程序運(yùn)行結(jié)果:d1=62, d2=134, d3=2, d4=1z1=1.550000, z2=7.000000, z3=0.800000,?關(guān)于前置++/??和后置++/??的作用? 前置++或前置??表達(dá)式:

32、 ++; ? 先將變量的值加1,再使用變量。 ??; ? 先將變量的值減1,再使用變量。?后置++或后置??表達(dá)式: ++; ? 先使用變量,再將變量的值加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ù)

33、類型?2.表達(dá)式++a和a++有什么區(qū)別?3.表達(dá)式b=a++還可以怎樣表達(dá)?4.++/--能否用于常量表達(dá)式?,思考,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)系表達(dá)式的結(jié)果只有兩個(gè): (1) 真(值為1) (2) 假(值為0)假如有: int a,b; a=

34、(23>0) b=((23-9) == (18-6));則:變量a的值為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í),?邏輯表達(dá)式的結(jié)果: 真(值為1) 假(值為0) (注:非零值均為真)?邏輯運(yùn)算規(guī)則:

35、,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),1.由關(guān)系運(yùn)算符和邏輯運(yùn)算符可組成復(fù)雜邏輯表達(dá)式。 如:(a>b) && !(c-d) || (a>=5) 2.對(duì)于復(fù)雜邏輯表達(dá)式,要注意C語言的特殊語法規(guī)則。,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),特別提示,(1).(表達(dá)式1) || (表達(dá)式2) ?語法規(guī)則 若:(表達(dá)式1)的值為真, 則:(表達(dá)式1) || (表達(dá)式2)的結(jié)果就為真。

36、 特點(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=(a<b)||(++a); printf(“c=%d, a=%d\n”,c,a); 程序運(yùn)行結(jié)果為:c=1,a=4。,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),(2).(表達(dá)式1) && (表達(dá)式2) ?語法規(guī)則 若

37、:(表達(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=(a>b)&&(++a); printf(“c=%d, a=%d\n”,c,a); 程序運(yùn)行結(jié)果為:c=0,a=4。,2.4

38、 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),例11:閱讀下面的程序,分析復(fù)雜邏輯表達(dá)式運(yùn)算的語法規(guī)則。/*example2_14.c */ #includemain(){ int a=4,b=8,c=5; int d1,d2,d3,d4; d1=(ab--); /* 表達(dá)式(1) */ printf("d1=%d, a=%d,

39、 b=%d, c=%d\n",d1,a,b,c); d2=(a>b)&&(++a==5)||(c>b--); /* 表達(dá)式(2) */ printf("d2=%d, a=%d, b=%d, c=%d\n",d2,a,b,c); d3=(ab--); /* 表達(dá)式(3) */

40、 printf("d3=%d, a=%d, b=%d, c=%d\n",d3,a,b,c); d4=(a>b)&&(++a==5)&&(c>b--); /* 表達(dá)式(4) */ printf("d4=%d, a=%d, b=%d, c=%d\n",d4,a,b,c);},1.分析程序的運(yùn)行結(jié)果

41、。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)算符、表

42、達(dá)式及運(yùn)算的優(yōu)先級(jí),?位運(yùn)算規(guī)則:,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),2.4.5 條件運(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)算符又稱為

43、三目運(yùn)算符,“三目”指的是操作數(shù)的個(gè)數(shù)有3個(gè)。,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),例12:閱讀下面的程序,了解三目運(yùn)算符組成的表達(dá)式計(jì)算規(guī)則。/*example2_15.c 了解三目運(yùn)算符的語法規(guī)則*/ #include #include main(){ int a=3,b=5,c; c=(a>b)?(a+b):(a-b); printf("The ma

44、x value of a and b is: %d\n",c); a=6; b=2; c=(a>b)?(a-b):(a+b); printf("The max value of a and b is: %d\n",c);}?請(qǐng)分析程序的運(yùn)行結(jié)果。,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),2.4.6 逗號(hào)表達(dá)式?由逗號(hào)運(yùn)算符“,”將兩個(gè)表達(dá)式

45、連接起來: 表達(dá)式1,表達(dá)式2;?逗號(hào)表達(dá)式的語法規(guī)則: 先計(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);

46、 printf("a=%d\nb=%d\n",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á)式n的值。2.通常是用逗號(hào)表達(dá)式來分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不是為了求整個(gè)逗號(hào)表達(dá)式的值。3.變量定義中出現(xiàn)的逗號(hào)和在函數(shù)參數(shù)表中出現(xiàn)的逗號(hào)不構(gòu)成

47、逗號(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)換?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)避

48、免出現(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ù)類型符)表達(dá)式; 或 (數(shù)據(jù)類型符)變量;?強(qiáng)制轉(zhuǎn)換語法規(guī)則: 將表達(dá)式或變量的值臨時(shí)轉(zhuǎn)換成圓括號(hào)內(nèi)指定的數(shù)據(jù)類型。并不改變變量原來的數(shù)據(jù)類型。假設(shè)有: int a ; float t ; a=15; t=(float) a/30

49、;結(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-10,2.4 基本運(yùn)算符、表達(dá)式及運(yùn)算的優(yōu)先級(jí),例13:閱讀程序,分析復(fù)雜表達(dá)式的計(jì)算順序。/*example2_18.c 復(fù)雜表達(dá)式的計(jì)算順序*/ #include

50、 main(){ int a=10,b=15,c=14,temp; temp= a+6>b && b-c>c; /* ① */ printf("a+6>b && b-c>c= %d\n",temp); temp=!a+b*c-b/a && b-a*!(c-a);

51、 /* ② */ printf("!a+b*c-b/a && b-a*!(c-a)= %d\n",temp);}?請(qǐng)分析并修改程序。,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)算的優(yōu)先級(jí),1.表達(dá)式語句?一個(gè)

52、獨(dú)立的語句就是表達(dá)式語句。如:a=3*b-c/2;i--;++j:b=(a>3)? 1:0;2.復(fù)合語句?由一對(duì)花括號(hào)“{ }”將多個(gè)表達(dá)式語句括起來所組成。如:{ a=b+c; x=y%a; prinft("a=%d, x=%d\n", a, x);},3.控制語句?由控制結(jié)構(gòu)組成的語句,有5種控制語句:(1)選擇(分支)語句:if…

53、else。(2)多分支語句:switch。(3)for循環(huán)語句:for。(4)while循環(huán):while。(5)do_while循環(huán):do…while。4.轉(zhuǎn)向控制語句?由系統(tǒng)提供的關(guān)鍵字構(gòu)成,用于改變程序的流程。 有4種轉(zhuǎn)向控制語句:(1)break;可用于switch語句和循環(huán)的語句。(2)continue;只適用于循環(huán)語句。(3)return;用在函數(shù)的結(jié)束處。(4)goto;可用于程序的任何地方,但不提倡

54、使用。,?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ù)在功能上有所不同,使

55、用時(shí)應(yīng)根據(jù)具體的要求,選擇合適的輸入/輸出函數(shù)。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,2.5.1 格式化輸出函數(shù)printf( )?函數(shù)printf( )的一般形式為: printf("控制字符串",輸出項(xiàng)列表);?函數(shù)printf( )的作用: 按控制字符串指定的格式,向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出指定的輸出項(xiàng)列表的值。注意:可以是常量、變量、表達(dá)式。當(dāng)有多個(gè)輸出項(xiàng)時(shí),各項(xiàng)之間用逗號(hào)

56、分隔。中的個(gè)數(shù)、類型必須與中格式字符的個(gè)數(shù)、類型相一致。必須用雙引號(hào)將括起,可由格式說明和普通字符兩部分組成。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,1.格式說明?格式說明的一般格式為: % []?格式字符規(guī)定了對(duì)應(yīng)輸出項(xiàng)的輸出格式。注: 在格式字符前面,還可用字母1和h(大小寫均可)來說明是用long型或short型格式輸出數(shù)據(jù)。?常用格式字符如表2-21所示。如:%d,%c,%f,%Lf,%s等均為正確的

57、輸出格式說明。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,?修飾符是可選的,用于確定數(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ì)齊方式。 在%后面加上一個(gè)負(fù)號(hào)“?”,可使數(shù)據(jù)的輸出

58、方式改為左對(duì)齊的方式。如:%-3d,%-4c,%-5.2f,%-8Lf,%-6s等均為正確的輸出格式說明。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,2.普通字符?普通字符包括可打印字符和轉(zhuǎn)義字符。?可打印字符按原樣顯示在屏幕上,起說明作用。?轉(zhuǎn)義字符是一些不可顯示的控制字符,用于產(chǎn)生特殊的輸出效果。如:“ s=%4d\t%7.4f\n\t%lu\n” 為正確的輸出格式。?閱讀程序【例2-19】、【例2-20】、【例2-21】

59、。 了解格式輸出的方法。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,2.5.2 格式化輸入函數(shù)scanf()?函數(shù)scanf()的一般形式為: scanf("控制字符串",輸入項(xiàng)列表);?函數(shù)scanf()的作用: 按控制字符串指定的格式,從鍵盤輸入數(shù)據(jù),并將輸入的值賦給輸入項(xiàng)列表相對(duì)應(yīng)的變量。 注意:規(guī)定了數(shù)據(jù)的類型,其內(nèi)容也可由格式說明和普通字符兩部分組成。(注:不提倡加普通字符)

60、則由一個(gè)或多個(gè)變量地址組成,各變量地址之間用逗號(hào)“,”分隔。如有:int a,b;則:&a,&b就可以是一個(gè),2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,?輸入數(shù)據(jù)時(shí),可用空格符、表格符(tab)和換行符(enter)作為每個(gè)變量輸入完畢的標(biāo)志。?以換行符作為數(shù)據(jù)輸入的結(jié)束。1.格式說明?格式說明規(guī)定了輸入項(xiàng)中各變量的數(shù)據(jù)類型。?格式說明的一般形式: %[]注意: 格式字符的表示方法

61、與printf()中的相同,各格式字符及其意義如表2-23所示。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,?修飾符是可選的,主要有下面幾種:(1)字段寬度?字段寬度用數(shù)字表示,其作用是限定輸入的字符寬度。如:scanf("%3d", &a);則:變量a的寬度只占3個(gè)字符,有效值范圍為:?99~999。?若超過寬度,系統(tǒng)會(huì)截?cái)?,只取?位。假如有: int a,b; scanf

62、("%d%3d",&a,&b); printf("a=%d\tb=%d\n",a,b);若輸入為: 1234?12345?則系統(tǒng)會(huì)將1234賦給變量a,將12345的前3位的值123賦給變量b。輸出結(jié)果為: a=1234??b=123,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,(2)l和h?字母(L,l)和(H,h)分別表示輸入數(shù)據(jù)類型的長(zhǎng)短。(L,l)

63、? 可表示長(zhǎng)整型、雙精度浮點(diǎn)型。(H,h) ? 克表示短整型數(shù)。如: scanf("%10ld%hd%lf", &a, &b,&x);則:a按寬度為10的長(zhǎng)整型數(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",&

64、x, &y, &z);若輸入為:11 22 33?則結(jié)果為:x=11,y=33,z=0(z保持原來的值不變,22被跳過,沒有賦給任何變量。),2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,2.普通字符?普通字符包括空白字符、轉(zhuǎn)義字符和可見字符。注意:如果有普通字符,則輸入時(shí)需要原樣輸入。?特別提示: 在輸入格式的修飾符中,不建議使用普通字符。?普通字符的類型:(1)空白字符:空格符、制表符或換行符都是空白字符

65、,但它們的ASCII值是不一樣的。?空白字符的作用:對(duì)輸入的數(shù)據(jù)起分離作用。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,若輸入的數(shù)據(jù)中含有字符型的數(shù)據(jù)時(shí),需要作一些技術(shù)處理,否則有可能出錯(cuò)。例如:int a; char ch; scanf("%d%c",&a, &ch);若輸入為:64?q?則結(jié)果為:ch= ,a=64, 注:結(jié)果并不是 ch=q,a=64思考:怎樣

66、改進(jìn)?可使得結(jié)果為:ch=q,a=64,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,注意,(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,%

67、c",&a, &b, &ch);若輸入為:12,34,q?則結(jié)果為:a=12,b=34,ch=q思考:若輸入為:12,34,q? 則結(jié)果會(huì)怎樣?,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,1.要注意數(shù)值型數(shù)據(jù)和字符型數(shù)據(jù)的取值特點(diǎn)。 若要同時(shí)輸入這兩種類型的數(shù)據(jù),可采取先輸入字符型數(shù)據(jù),后輸入數(shù)值型數(shù)據(jù),以減少錯(cuò)誤的發(fā)生。2.建議在scanf()語句中不要加入可見字符。避免錯(cuò)誤的發(fā)生。,2.

68、5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,特別提醒,2.5.3 字符輸出函數(shù)C語言專門為字符提供了專用的字符輸出函數(shù)。(注:對(duì)不同的編譯器,它們所在的頭文件有可能不同。)常用的字符輸出函數(shù):表2-24,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,閱讀【例2-24】 的程序example2_24.c ,了解字符輸出函數(shù)的功能。,2.5.4 字符輸入函數(shù)C語言專門為字符提供了專用的字符輸入函數(shù)。(注:對(duì)不同的編譯器,它們所在的頭文件有可能不

69、同。)常用的字符輸出函數(shù):表2-25,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,1.使用getch()函數(shù)輸入字符后,輸入的字符不會(huì)顯示在屏幕上。2.用字符輸入函數(shù)接收字符時(shí),并不是從鍵盤輸入一個(gè)字符后立即響應(yīng),而是將輸入的內(nèi)容先讀入緩沖區(qū),待輸入結(jié)束后再一并執(zhí)行。3.與scanf()輸入函數(shù)不一樣,字符輸入函數(shù)將空格符、制表符、換行符也作為字符接收。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,關(guān)于字符輸入函數(shù)特別提醒,閱讀【例2-25】

70、 的程序example2_25.c ,了解字符輸入函數(shù)的功能。,【例2-26】 編寫程序,計(jì)算兩復(fù)數(shù)的差。程序要求從鍵盤輸入兩個(gè)復(fù)數(shù)的實(shí)部和虛部的值,然后求第1個(gè)復(fù)數(shù)與第2個(gè)復(fù)數(shù)的差。?核心算法分析: 兩個(gè)復(fù)數(shù)的算術(shù)運(yùn)算結(jié)果仍為復(fù)數(shù),計(jì)算兩個(gè)復(fù)數(shù)的差是實(shí)部與實(shí)部相減,虛部與虛部相減,即(a1+b1i)?(a2+b2i)=(a1-a2)+(b1-b2)i。程序見: example2_26.c 思考:請(qǐng)修改程序,完成計(jì)算兩復(fù)數(shù)的和

71、與兩復(fù)數(shù)的差。,2.6 程 序 范 例,程序范例1,【例2-27】 編寫程序,在屏幕上輸出由星號(hào)(*)組成的菱形圖案。?核心算法分析: 利用printf()語句,可直接將*輸出到屏幕上。 程序見: example2_ 27.c 思考:請(qǐng)修改程序,輸出各種其他不同形狀的幾何圖案。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,程序范例2,【例2-28】 簡(jiǎn)單的數(shù)學(xué)計(jì)算。編寫程序,計(jì)算3個(gè)數(shù)的和的平均值。?核心算法分析:計(jì)算3

72、個(gè)數(shù)a、b、c之和的平均值方法為:(a+b+c)/3 。 程序見: example2_28.c 思考:請(qǐng)修改程序,完成其他的簡(jiǎn)單算術(shù)運(yùn)算。,2.5 標(biāo)準(zhǔn)輸入?/?輸出函數(shù)簡(jiǎn)介,程序范例3,本章重點(diǎn)1.基本數(shù)據(jù)類型及取值范圍。 不同類型的變量有不同的取值范圍。2.基本表達(dá)式的意義 算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式3.復(fù)雜表達(dá)式的優(yōu)先級(jí)和表達(dá)式的意義 任何復(fù)雜表達(dá)式都是基本表達(dá)式的組合。4.幾組輸入/?輸出

溫馨提示

  • 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. 眾賞文庫(kù)僅提供信息存儲(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)論