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

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(jì) —進(jìn)階篇,第2章 運(yùn)算符和表達(dá)式(2),內(nèi)容概述,C語言的運(yùn)算符、表達(dá)式及運(yùn)用方法。,教學(xué)目標(biāo),1.熟悉自增、自減運(yùn)算的特點(diǎn),掌握賦值運(yùn)算,了解逗號運(yùn)算符和逗號表達(dá)式。2.掌握數(shù)據(jù)類型轉(zhuǎn)換的概念,能進(jìn)行基本的數(shù)據(jù)類型轉(zhuǎn)換。3 . 邏輯運(yùn)算、switch語句及其運(yùn)用方法。,2.1.1 基本的算術(shù)運(yùn)算符,,2.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式,2.1.2 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級和結(jié)合性,表達(dá)式是由

2、常量、變量、函數(shù)和運(yùn)算符組合起來的式子。,a+b(a*2)/c(x+r)*8-(a+b)/7++isin(x)+sin(y)(++i)-(j++)+(k--),優(yōu)先級 (從高到低)+ (正號) – (負(fù)號)* / % + (加) – (減)結(jié)合方向+ (正號) – (負(fù)號):從右向左+ (加) – (減) * / %:從左向右,,例: 計(jì)算下列表達(dá)式的值:-x/(y+1.8)-15%9*16求值過程如下:

3、① 求-x的值② 求y+1.8的值③ 求①/②的值④ 求15%9的值⑤ 求④*16的值⑥ 求③-⑤的值,說明:,1. 兩個(gè)整數(shù)相除,結(jié)果也為整數(shù)直接舍去商的小數(shù)部分,而不會“四舍五入”負(fù)數(shù)整數(shù)除法,結(jié)果的舍入方向沒有規(guī)定如果需要得到精確的運(yùn)算結(jié)果,可以把其中一個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)舉例,5/3(=1)、5.0/3(=1.66666…)舉例,-5/3(=-1?-2?)2. 模運(yùn)算符的兩個(gè)操作數(shù)都必須是整數(shù)負(fù)數(shù)模運(yùn)

4、算結(jié)果的符號沒有規(guī)定舉例,5%3(=2)、-5%3(=-2?1?),【例2.1】#include main(){ printf("\n\n%d,%d\n", 20/7,-20/7); printf("%f,%f\n",20.0/7, -20.0/7);},【例2.2】#include main(){ printf("%d\n",10

5、0%3); },運(yùn)行結(jié)果:1,運(yùn)行結(jié)果:2,-22.857143,-2.857143,2.1.3 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,一般形式為: (類型說明符) (表達(dá)式)功能:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如: (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型 (int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型,【例2.3】強(qiáng)制類型轉(zhuǎn)換#include main(){

6、 float x; int i; x=3.6; i=(int)x; printf("x=%f,i=%d\n",x,i);},運(yùn)行結(jié)果:x=3.600000,i=3,#include main(){double x,y, z;int a, b, c, d=5, e=2;x=2.8; y=3.7;a=(int)x+y; /* a=5

7、, 2+3.7 => 5 */b=(int)(x+y);/* b=6, (int)(6.5) */c=(int)x;z=(float)d/e; /* z=2.500000 , (float)(d/e)=?*/ printf("x=%f, c=%d\n", x, c);/* x=2.800000, c=2 */printf("z=%f\n&q

8、uot;,z);},【例2.4】強(qiáng)制類型轉(zhuǎn)換(2),2.2.1 數(shù)據(jù)類型轉(zhuǎn)換 C語言允許整型、實(shí)型、字符型數(shù)據(jù)進(jìn)行混合運(yùn)算。不同類型的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),要考慮的問題有: (1)運(yùn)算符的優(yōu)先級別; (2)運(yùn)算符的結(jié)合方向; (3)數(shù)據(jù)類型轉(zhuǎn)換。,,2.2 表達(dá)式及數(shù)據(jù)類型轉(zhuǎn)換,C語言數(shù)據(jù)類型轉(zhuǎn)換可歸納為二種方式:,強(qiáng)制轉(zhuǎn)換,表達(dá)式中的類型轉(zhuǎn)換,算術(shù)表達(dá)式中的運(yùn)算轉(zhuǎn)換,賦值轉(zhuǎn)換,輸出轉(zhuǎn)換,函數(shù)調(diào)用轉(zhuǎn)換,,,int

9、,unsigned int,,long int,,double,,float,,char, short,,存儲長度較短,,存儲長度較長,總趨勢:,算術(shù)表達(dá)式中的類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則,【例2.5】自動類型轉(zhuǎn)換#include main(){ float PI=3.14159; int s,r=5; s=r*r*PI; printf("s=%d\n",s);/*結(jié)果 s=78

10、*/},【例2.6】自動類型轉(zhuǎn)換(2)#include main(){ int a,b=322; float x,y=8.88; char c1='k',c2; a=y; x=b; a=c1; c2=b; printf("%d,%f,%d,%c\n",a,x,a,c2);/*結(jié)果:107,322.000000,107,B*/

11、},【例2.7】,int x=2;float y=1.6;char c='A';,c+x*y=?,,,65(int),,,2(int),,,1.6 (double),,3.2(double),,68.2(double),2.2.2 復(fù)合運(yùn)算符,*=、/=、%=、+=、-=、>=、&=、Λ=、¦=,由賦值運(yùn)算符與算術(shù)、位移、位邏輯運(yùn)算符組成。,復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的

12、組合。,例2.8,a+=b 相當(dāng)于 a=a+b,a*=b+c 相當(dāng)于 a=a*(b+c),a=2; a+=a*=a;,,,最好不要這樣用!!,,2.2.3 自增、自減運(yùn)算符,1 形式++i, --i使用i之前,先使i的值加/減1i++, i--使用i之后,再使i的值加/減12 說明++i和--i的值是加/減1之后i的值i++和i--的值是加/減1之前i的值++和--只能用于變量,不能用于常量和表達(dá)式++和-

13、-的結(jié)合方向是“自右向左”,(1) 單獨(dú)使用時(shí),++i;,等 價(jià),i++;,等 價(jià),i=i+1;,(2) j=++i;,(3) j=i++;,若i的初始值為3,i=4;j=4;,i=4;j=3;,,,【例2.8】自增、自減運(yùn)算符#include main(){ int i;i=8; printf("%d\n",++i); printf("%d\n",--i)

14、; printf("%d\n",i++); printf("%d\n",i--); printf("%d\n",-i++); printf("%d\n",-i--); },【例2.9】自增、自減運(yùn)算符(2)#include main(){ int i=5,j=5,p,q; p=(i++)+(i++)+(

15、i++); q=(++j)+(++j)+(++j); printf("%d,%d,%d,%d\n",p,q,i,j);/*結(jié)果:15,22,8,8*/},2.3.1 關(guān)系運(yùn)算符,<:小于 ,5<3, 3<5,<=:小于等于,5<=3,3<=5,與數(shù)學(xué)上(≤)不同,>:大于,5>3,3>5,>=:大于等于,5 >=3,3 >

16、=5 ,與數(shù)學(xué)上(≥)不同,==:等于,5==3 ,與數(shù)學(xué)上(=)不同,!=:不等于,5!=3 ,與數(shù)學(xué)上(≠)不同,,2.3 關(guān)系運(yùn)算符和關(guān)系表達(dá)式,關(guān)系運(yùn)算:比較運(yùn)算,比較兩個(gè)操作數(shù),看是否滿足給定的關(guān)系。,用關(guān)系運(yùn)算符將表達(dá)式連接起來的式子,優(yōu)先級, >=,高 低,== !=,結(jié)合方向,自左向右,表達(dá)式的值,關(guān)系成立,即為真,結(jié)果為1;,關(guān)系不成立,即為假,結(jié)果為0;,算術(shù)運(yùn)算符,高 低,C語言中,真:非0值,假

17、:0值,,2.3.2 關(guān)系表達(dá)式,,例2.10.若x=5,y=8求表達(dá)式x+6!=yx-3的值的為1。,,例2.11. 若x=5,y=8求表達(dá)式x+6>=y>x-3的值。算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符,先進(jìn)行算術(shù)運(yùn)算:① 計(jì)算算術(shù)表達(dá)式x+6的值:11② 計(jì)算算術(shù)表達(dá)式x-3的值:2關(guān)系運(yùn)算>=與=y成立,值:1④ 1>2不成立,值:0所以,表達(dá)式x+6>=y>x-3的值的為0。,!:

18、邏輯非,一元運(yùn)算符,運(yùn)算規(guī)則:取反,真,,假,假,,真,&&:邏輯與 。又稱邏輯乘。,運(yùn)算規(guī)則:兩個(gè)操作數(shù)均為真,結(jié)果為真。,||:邏輯或 。又稱邏輯加。,運(yùn)算規(guī)則:只要兩個(gè)操作數(shù)有一個(gè)為真,結(jié)果為真。,2.3.3 邏輯運(yùn)算符和邏輯表達(dá)式,1、邏輯運(yùn)算符,非0 值:真,0值:假,整型實(shí)型字符型指針類型,,00.0\0NULL,,2、邏輯量或邏輯表達(dá)式的值,用邏輯運(yùn)算符將表達(dá)式連接起來的式子。,優(yōu)先級,結(jié)合性,

19、?。鹤杂蚁蜃?&&、||:自左向右,,高,低,3、邏輯表達(dá)式,int a=5; float b=3.5;,!a,,0,!b,,0,a&&b,,1,a||b,,1,!a&&!b,,0,例2.12,例2.13 : 若x=3,y=7求邏輯表達(dá)式!(1<x)||2<9-y的值.,① 括號()優(yōu)先級最高,先計(jì)算1<x,值:1;② !優(yōu)先級高于其它算符,計(jì)算!①,值:0③ -優(yōu)先

20、級高于其余算符,計(jì)算9-y,值:2④ <運(yùn)算優(yōu)先級高于邏輯或||,計(jì)算2<③,值:0⑤ ||最后運(yùn)算,②||④,值:0所以,表達(dá)式!(1<x)||2<9-y的值是0。,在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。,4、注意,例2.14,a=0; b=1; c=2; d=a++&&b++&&- -c;

21、,d=(a++)&&(b++)&&(- -c);,運(yùn)算結(jié)果: d=0,a=1,b=1,c=2,(1)a && b && c,求解方法:只有a為真(非0),才需要判斷b的值,只有a和b都為真,才需要判斷c的值。只要a為假,就不必判斷b和c,運(yùn)算立即中止。,(2)a || b || c,求解方法:只要a為真(非0),就不必判斷b和c;只有a 為假,才判斷b;a和b都為假,才判斷

22、c。,例2.15:,a=0; b=1; c=2; d=a++||b++||- -c;,d=(a++)||(b++)||(- -c);,運(yùn)算結(jié)果: d=1,a=1,b=2,c=2,條件運(yùn)算符: 有兩個(gè)符號:?、:,它與三個(gè)操作數(shù)組成的三元運(yùn)算。,一般形式:, ? :,求值規(guī)則和表達(dá)式的值:,求解表達(dá)式1,,,,真(非0),,求解表達(dá)式2,,假(0),,求解表達(dá)式3,表達(dá)式的值,,,2.3.4 條件運(yùn)算符與條件表達(dá)式

23、,優(yōu)先級:,邏輯 > 條件 > 賦值,結(jié)合性:,自右至左,/*【例2.16】條件表達(dá)式*/#include main(){int x,y,max,a,b;a=5;b=3;x=30;max=a>b ? a : b;--a==b++ ? a++ : b++ ;y = x>10 ? x/10 : x>0 ? x: -x;},,,把表達(dá)式的表示作適當(dāng)修改:,/*【例2.16】條件表達(dá)式

24、*/#include main(){int x,y,max,a,b;a=5;b=3;x=30;max=(a>b) ? a : b;(--a==b++) ? a++ : b++ ;y = (x>10) ? x/10 :(( x>0) ? x: -x);},C語言的靈活使用要適度!復(fù)雜的表達(dá)式應(yīng)該分步計(jì)算!,2.4 多分支選擇--switch語句,C語言還提供了另一種用于多分支選擇的switc

25、h語句, 其一般形式為: switch (表達(dá)式) { case常量表達(dá)式1: 語句1; case常量表達(dá)式2: 語句2; … case常量表達(dá)式n: 語句n; default : 語句n+1; }其中,語句i可以是復(fù)合語句.,Switch語句執(zhí)行流程:,計(jì)算表達(dá)式值,語句n,語句1,語句2,語句3,語句4

26、,=常量表達(dá)式1 2 3 4 n,,,,,,,,,,,,,,#include int main(){int week;printf("Input week: ");scanf("%d",&week);switch (week) {case 1: printf("Monday\n

27、"); case 2: printf("Tuesday\n"); case 3: printf("Wednesday\n"); case 4: printf("Thursday\n"); case 5: printf("Friday\n"); case 6: printf("Saturday\n")

28、; case 7: printf("Sunday\n"); default:printf("Error\n");}return(0);},【例2.17】switch用法示例,運(yùn)行結(jié)果:Input week: 3WednesdayThursdayFridaySaturdaySundayError結(jié)果有問題?,在使用switch語句時(shí)還應(yīng)注意以下幾點(diǎn):,在case

29、后的各常量表達(dá)式的值不能相同,否則會出現(xiàn)錯(cuò)誤。在case后,允許有多個(gè)語句,可以不用{}括起來。在case后的語句中,應(yīng)有break語句表示結(jié)束,否則將繼續(xù)執(zhí)行下一個(gè)case后的語句。各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。default子句可以省略不用。,正確的應(yīng)該是:,#include int main(){int week;printf("Input week: &

30、quot;);scanf("%d",&week);switch (week) {case 1: printf("Monday\n"); break;case 2: printf("Tuesday\n"); break;case 3: printf("Wednesday\n"); break;case 4: printf

31、("Thursday\n"); break;case 5: printf("Friday\n"); break;case 6: printf("Saturday\n"); break;case 7: printf("Sunday\n"); break;default:printf("Error\n");}r

32、eturn(0);},【例2.18】在菜單程序中使用switch.,select=getchar(); /*等待用戶輸入*switch(select) { case '0': printf("您選擇的是退出測試!\n"); _beep(300,400);

33、 break; case '1': printf("您選擇的是加法測試!\n"); break; case '2': printf("您選擇的是減法測試!\n");

34、 break;……………… case '4': printf("您選擇的是記憶力測試!\n"); break; default: printf(“選擇錯(cuò)誤!請重新選擇!\n”);/*小于‘0’或大于‘4’*/}if(select==

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論