C程序設(shè)計(jì)教學(xué)做一體化教程運(yùn)算符與表達(dá)式市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第1頁
C程序設(shè)計(jì)教學(xué)做一體化教程運(yùn)算符與表達(dá)式市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第2頁
C程序設(shè)計(jì)教學(xué)做一體化教程運(yùn)算符與表達(dá)式市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第3頁
C程序設(shè)計(jì)教學(xué)做一體化教程運(yùn)算符與表達(dá)式市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第4頁
C程序設(shè)計(jì)教學(xué)做一體化教程運(yùn)算符與表達(dá)式市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、/10/101 C程序設(shè)計(jì)教學(xué)做一體化教程耿祥義 張躍平 編著清華大學(xué)出版社第1頁/10/102第3章 運(yùn)算符與表示式 第2頁/10/1033.1 算術(shù)運(yùn)算符與賦值運(yùn)算符 3.1.1 關(guān)鍵知識(shí)點(diǎn)1算術(shù)運(yùn)算符 算術(shù)運(yùn)算符:+,-,*,/,%(加、減、乘、除、求余)都是連接兩個(gè)操作元二目運(yùn)算符。*,/和%運(yùn)算符級(jí)別(3級(jí))高于+和-(4級(jí))。算術(shù)運(yùn)算符結(jié)合方向是從左向右。 按著ANSI C標(biāo)準(zhǔn),求余(%)運(yùn)算符操作元只能是整型數(shù)據(jù)。比如,12%7結(jié)果是5,即12除以7余數(shù)是5,-12%7結(jié)果是-5。不過,12.0%7是非法,因?yàn)槠渲凶蟛僮髟?2.0不是整數(shù)。2算術(shù)表示式 用算術(shù)運(yùn)算符(包含括號(hào))連

2、接起來符合C語言語法規(guī)則式子稱為算術(shù)表示式。比如,假設(shè)x和y是整型變量,那么-2*x + 7*y 30 + 3*(y + 15)就是一個(gè)算術(shù)表示式,而3x + 5y就不是算術(shù)表示式,正確寫法應(yīng)該是3*x+5*y。運(yùn)算精度規(guī)則以下: 假如表示式中有浮點(diǎn)數(shù),則按雙精度進(jìn)行運(yùn)算。即計(jì)算結(jié)果是double型數(shù)據(jù)(保留1516位有效數(shù)字)。 假如表示式中最高精度是long型整數(shù),則按long精度進(jìn)行運(yùn)算,即計(jì)算結(jié)果是long型整數(shù)。 假如表示式中最高精度低于int型整數(shù),則按int精度進(jìn)行運(yùn)算,即計(jì)算結(jié)果是int型整數(shù)。比如,5/2結(jié)果是2,而不是2.5(5.0/2結(jié)果是2.5)。第3頁/10/1043

3、賦值運(yùn)算符 賦值運(yùn)算符:“=”是二目運(yùn)算符,賦值運(yùn)算符作用是將賦值符號(hào)“=”右側(cè)值賦給左側(cè)變量,即“=”左面操作元必須是變量,不能是常量或表示式。在數(shù)學(xué)中,x = x+1是錯(cuò)誤(數(shù)學(xué)中把=看作等號(hào)),不過在編程語言中“=”是賦值意思,x = x+1就是正確。比如變量x值是20,那么經(jīng)過賦值運(yùn)算x = x + 1后,變量x值就是21了。賦值運(yùn)算符級(jí)別在全部運(yùn)算符中是比較低(14級(jí),倒數(shù)2級(jí)),比如,x = x + 1相當(dāng)于x = (x + 1)。4賦值表示式 用賦值符號(hào)(包含括號(hào))連接起來符合C語法規(guī)則式子,稱為賦值表示式。比如,假設(shè)x和y都是int型變量,那么x = 12和y = 20都是賦值

4、表示式。賦值表示式值就是“=”左面變量得到值。比如,假如a和b是兩個(gè)int型變量,那么賦值表示式a = -10和b = 12值分別是-10和12。需要注意是“=”結(jié)合次序是從右向左,所以表示式a = b = 100相當(dāng)于a = (b = 100),即將賦值表示式b = 100值賦給變量a,所以賦值表示式a = b = 100值是100。第4頁/10/1055復(fù)合賦值運(yùn)算符 允許在賦值運(yùn)算符前面添加一個(gè)算術(shù)運(yùn)算符組合出一個(gè)復(fù)合賦值運(yùn)算符,比如(假設(shè)x是一個(gè)變量):x += 100;等價(jià)于x= x + 100;一樣,x *= 100 + x;等價(jià)于x = x*(100 + x); 盡管,x +=

5、100和x = x + 100效果相同,但x += 100效率較高,即編譯器在生成機(jī)器碼時(shí),x += 100產(chǎn)生機(jī)器碼少于x = x + 100產(chǎn)生機(jī)器碼。 第5頁/10/1066簡單示例 例子1 計(jì)算了代數(shù)表示式: 值。 Example3_1.c#includeint main() double a,b,c,d,result; a = 10; b = 34.56; c = 20.88; d = 200.98; result = 9*a*(b+c)/d; printf(%f,result); return 0;第6頁/10/107 3.1.2 能力目標(biāo)計(jì)算算術(shù)表示式值使用賦值運(yùn)算符將算術(shù)表示式

6、值賦給變量。 第7頁8 3.1.3 任務(wù)驅(qū)動(dòng)-正整數(shù)上各個(gè)位上數(shù)字 1任務(wù)主要內(nèi)容在main函數(shù)中申明一個(gè)用于存放正整數(shù)無符號(hào)short型變量positiveInteger,以及用于存放正整數(shù)個(gè)位、十位、百位、千位和萬位上數(shù)字char型變量a1,a2,a3,a4和a5。使用scanf函數(shù)讓用戶從鍵盤為positiveInteger輸入值。依次求出positiveInteger中個(gè)位、十位、百位、千位和萬位上數(shù)字,并將這些數(shù)字依次賦值給變量a1,a2,a3,a4和a5。 輸出a1,a2,a3,a4,a5以及表示式a1+a2+a3+a4+a5值。將表示式a5*10000+a4*1000+a3*10

7、0+a2*10+a1值賦值給變量positiveInteger,并輸出positiveInteger值。 將表示式a1*10000+a2*1000+a3*100+a4*10+a5值賦值給變量positiveInteger,并輸出positiveInteger值。2. 任務(wù)模板:按著任務(wù)關(guān)鍵內(nèi)容完成模板:將【代碼】替換為程序代碼。模板程序運(yùn)行效果如圖3.1。 第8頁/10/1093.任務(wù)小結(jié)或知識(shí)擴(kuò)展 模板參考答案:【代碼1】:a1 = positiveInteger%10;【代碼2】:positiveInteger = positiveInteger/10;【代碼3】:printf(a1+a2

8、+a3+a4+a5=%dn,a1+a2+a3+a4+a5);【代碼4】:printf(a1*a2*a3*a4*a5=%dn,a1*a2*a3*a4*a5);(1) 求商與求余 為了計(jì)算某個(gè)整數(shù)個(gè)位上數(shù)字,只需計(jì)算該整數(shù)和10求余結(jié)果。那么為了計(jì)算十位上數(shù)字,先計(jì)算該整數(shù)除以10商,然后再計(jì)算該商和10求余結(jié)果,依這類推就能夠計(jì)算出整數(shù)各個(gè)位上數(shù)字。整型數(shù)據(jù)進(jìn)行除法運(yùn)算結(jié)果依然是整型數(shù)據(jù),比如123/10結(jié)果是12,即123除以10商是12。123%10結(jié)果是3(123除以10余數(shù)),即123等于12乘以10加3。 第9頁10(2)注意乘號(hào) 初學(xué)C語言一定要習(xí)慣這里乘法運(yùn)算符號(hào),初學(xué)者經(jīng)常把6乘

9、以x錯(cuò)誤寫成:6x,正確寫法是6*x。(3)輸出% 假如準(zhǔn)備在printf函數(shù)“輸出模式”中輸出%,在編寫代碼時(shí)需要鍵入兩個(gè)連續(xù)%,比如: printf(你好%);輸出結(jié)果是:你好%。 第10頁11 3.1.4 實(shí)踐步驟 編寫程序輸出以下表示式值:A1/2+3+6*4/6。 B3+6*(4/6)。 C10%3*9。D12+10%(3*9)。(參考代碼見附錄A) 第11頁/10/10123.2 自增、自減運(yùn)算符 第12頁/10/1013 3.2.1 關(guān)鍵知識(shí)點(diǎn) 自增、自減運(yùn)算符:+,-是單目運(yùn)算符,能夠放在操作元之前,也能夠放在操作元之后,+,-操作元必須是變量。 1前綴自增、自減運(yùn)算 當(dāng)+(-

10、)出現(xiàn)在變量前面時(shí),稱+(-)是+(-)前綴運(yùn)算。 當(dāng)+(-)前綴運(yùn)算出現(xiàn)在一個(gè)表示式中時(shí),其運(yùn)算作用是:先自增(自減)后使用。假如+是前綴運(yùn)算,就首先使變量值增加1(即執(zhí)行x = x+1)、假如-是前綴運(yùn)算,就首先使變量值降低1(即執(zhí)行x = x-1),然后變量x值再參加該表示式計(jì)算。比如,假設(shè)申明了兩個(gè)int型變量x和n: int x,n = 10; 假如執(zhí)行: x = +n + 12; 那么+前綴運(yùn)算出現(xiàn)在算術(shù)表示式“n+12”中,所以變量n值首先自增1變成11,然后再參加表示式計(jì)算。 x = +n + 12;作用等價(jià)于以下: n = n + 1; x = n + 12;第13頁/10/

11、10142后綴自增、自減運(yùn)算 當(dāng)+或-出現(xiàn)在變量后面時(shí),稱+或-后綴運(yùn)算。當(dāng)后綴運(yùn)算出現(xiàn)在一個(gè)表示式中時(shí),其運(yùn)算作用是:讓變量x值先參加該表示式計(jì)算,在表示式值被計(jì)算完成之后,假如是+后綴運(yùn)算,就使變量值增加1(即執(zhí)行x = x+1),假如是-后綴運(yùn)算,就使變量值降低1(即執(zhí)行x = x-1),即所謂先使用后自增(自減)。 3簡單示例 例子2使用了自增、自減運(yùn)算符,請(qǐng)注意程序注釋輸出結(jié)果。 example3_2.c#include int main() int a = 16,b = 10,m,n; m = a+ - b; n = +a - b; b-; printf(m = %d,n = %d

12、n,m,n); /輸出結(jié)果是:m = 6,n = 8 printf(a = %d,b = %dn,a,b); /輸出結(jié)果是:a = 18,b = 9 return 0; 第14頁/10/1015 3.2.2 能力目標(biāo)能簡單明了地使用自增、自減運(yùn)算符。 第15頁16 3.2.3 任務(wù)驅(qū)動(dòng) 編寫程序,模擬冰塊溶解于水。冰塊放入盛有水容器中后,容器中物質(zhì)重量等于冰與水重量之和,但每隔1分鐘后,冰重量降低一個(gè)單位,水重量增加一個(gè)單位。冰塊放入盛有水容器3分種后,輸出容器所盛物質(zhì)重量,以及容器中冰塊重量和水重量。1任務(wù)主要內(nèi)容 在main函數(shù)中申明兩個(gè)無符號(hào)short型變量:water和ice,其值分別

13、表示水和冰塊重量。 在main函數(shù)中申明一個(gè)無符號(hào)short型變量weight,用于存放水和冰塊重量之和。 模擬1分鐘后容器中冰塊和水重量之和以及冰塊重量和水重量,即計(jì)算water與ice和,并把結(jié)果存放到weight中,而且要確保計(jì)算結(jié)束后water值自動(dòng)增加1、ice值自動(dòng)降低1。繼續(xù)模擬2分鐘后、3分中后容器中冰塊和水重量之和以及冰塊重量和水重量。2. 任務(wù)模板:按著任務(wù)關(guān)鍵內(nèi)容完成模板:將【代碼】替換為程序代碼。模板程序運(yùn)行效果如圖3.2。 第16頁/10/10173.任務(wù)小結(jié)或知識(shí)擴(kuò)展 模板參考答案:【代碼1】:weight = water+ice-;【代碼2】:weight = w

14、ater+ice-;【代碼3】:weight = water+ice-; 防止在表示式中出現(xiàn)過多自增、自減運(yùn)算符 盡管自增、自減運(yùn)算符有較高效率,但使用+和-運(yùn)算符時(shí),盡可能防止過于“聰明”地使用它們,不然不利于代碼閱讀。當(dāng)前軟件不但重視代碼效率,也非常重視代碼維護(hù)。比如,假設(shè)申明了變量i和y:int i = 2,y;假如執(zhí)行:y = i+ * i;那么,y值是4,i值是3(i先參加計(jì)算再自增)。顯然,閱讀:y = i+ * i;難度大于:y = i * i;i = i + 1;盡管y=i+*i;效率更高,不過,對(duì)于當(dāng)前處理器,i+*i帶來效率幾乎能夠忽略。編寫C程序盡可能防止在表示式中出現(xiàn)過

15、多自增、自減運(yùn)算符,以簡練、可讀性強(qiáng)為最正確。 第17頁18 3.2.4 實(shí)踐步驟 編寫程序,要求申明變量i和y:int i = 2,y;執(zhí)行:y = i+ * i; 輸出y和i值。 (參考代碼見附錄A) 第18頁/10/10193.3關(guān)系與邏輯運(yùn)算符 3.3.1 關(guān)鍵知識(shí)點(diǎn)1關(guān)系運(yùn)算符當(dāng)程序需要比較兩個(gè)數(shù)值大小關(guān)系時(shí),就需要使用關(guān)系運(yùn)算符。關(guān)系運(yùn)算符意義以下:l = 相等l != 不等l 大于l = 大于或等于l = 小于或等于關(guān)系運(yùn)算符是使用頻率非常高一個(gè)運(yùn)算符,基本信息見表3.1 。第19頁/10/10202關(guān)系表示式 用關(guān)系運(yùn)算符(包含括號(hào))連接起來符合C語法規(guī)則式子稱為關(guān)系表示式。比

16、如,假設(shè)x和y都是int型變量,那么x=9都是關(guān)系表示式。 關(guān)系表示式值要么是1、要么是0,當(dāng)關(guān)系表示式表示關(guān)系成立時(shí)值為1,不然為0。 比如,關(guān)系表示式:1 2 3值是1,因?yàn)殛P(guān)系運(yùn)算符結(jié)合次序是從左到右,所以1 2 3計(jì)算次序相當(dāng)于:(1 2) 3。 關(guān)系表示式:-3 -2 -1值是0(注意不是1),因?yàn)?3 -2 -1計(jì)算次序相當(dāng)于:(-3 -2) -2結(jié)果是0,因?yàn)椤?”級(jí)別低于“”,-1 = -1 -2計(jì)算次序相當(dāng)于:-1 = (-1 -2),而不是(-1 = -1) -2。 不要將相等關(guān)系運(yùn)算符:“=”和賦值運(yùn)算符:“=”相混同,比如,假設(shè)x是一個(gè)int型變量,其值是-10,那么關(guān)

17、系表示式x = 1值是0,而賦值表示式x = 1值是1。 第20頁/10/10213邏輯運(yùn)算符 C語言分別使用“&”、“|”和“!”表示邏輯代數(shù)中“與”、“或”和“非”三種邏輯運(yùn)算。C語言用非0數(shù)表示“真”,用0表示“假”。“&”、“|”是雙目運(yùn)算符,“!”是單目運(yùn)算符。 邏輯運(yùn)算符基本信息見表3.2。 第21頁/10/10224邏輯表示式 當(dāng)兩個(gè)操作元都是非零數(shù)時(shí),&運(yùn)算結(jié)果是1,不然是0。 當(dāng)兩個(gè)操作元都是零時(shí),|運(yùn)算結(jié)果是0,不然是1。 當(dāng)操作元是非零時(shí),!運(yùn)算結(jié)果是0,不然是1。比如:-5 & 3結(jié)果是1。 5 4 & 9 4)&(9 3 & 1 3) & (1 12 | 19 12)

18、 | |(19 8))。 10 9 | 3 2結(jié)果是0(相當(dāng)于(10 9) | (3 2))。 !8結(jié)果是0。 !8結(jié)果是1(!結(jié)合次序是從右向左)。 邏輯運(yùn)算符“&”和“|”也稱作短路邏輯運(yùn)算符。對(duì)于op1& op2,當(dāng)op1值是“假”時(shí)(值是0),“&”運(yùn)算符在進(jìn)行運(yùn)算時(shí)不再去計(jì)算op2值,直接就得出op1& op2結(jié)果是0(假); 當(dāng)op1值是“真”時(shí),就需要繼續(xù)計(jì)算op2值,才能最終計(jì)算出op1 & op2結(jié)果。對(duì)于op1 | op2,當(dāng)op1值是“真”時(shí),“|”運(yùn)算符在進(jìn)行運(yùn)算時(shí)不再去計(jì)算op2值,直接就得出op1 | op2結(jié)果是1(真);當(dāng)op1值是“假”時(shí),就需要繼續(xù)計(jì)算op2

19、值,才能最終計(jì)算出op1 | op2結(jié)果。 第22頁/10/10235. 簡單示例 例子3計(jì)算了幾個(gè)關(guān)系和邏輯表示式值,請(qǐng)注意程序注釋輸出結(jié)果。 example3_3.c #include int main() int a = 1,b = 5,c=5,x = 0; int rusult; rusult = a+bc&b=c; printf(result=%dn,rusult); /result=1 rusult = -a & b+c | b-c; printf(result=%dn,rusult); /result=0 rusult = (x = 10) & (x = 100); printf

20、(result=%d,x=%dn,rusult,x); /result=1,x=100 rusult = (x = -10) | (x = 0); printf(result=%d,x=%dn,rusult,x); /:result=1,x=-10 return 0; 第23頁/10/1024 3.3.2 能力目標(biāo)能使用關(guān)系運(yùn)算符表示數(shù)據(jù)之間大小關(guān)系。能使用邏輯運(yùn)算符表示數(shù)據(jù)之間邏輯關(guān)系。第24頁25 3.3.3 任務(wù)驅(qū)動(dòng) 1任務(wù)主要內(nèi)容 對(duì)于整型變量x,用關(guān)系和邏輯表示式表示下述內(nèi)容: x是負(fù)數(shù)。 x在-10和-20之間。 x大于100或者x小于10。 x20而且是3倍數(shù)。 x能被3或5整除

21、。 x能被5整除但不能被3整除。輸入x值,程序輸出上述表示式值。2. 任務(wù)模板:按著任務(wù)關(guān)鍵內(nèi)容完成模板:將【代碼】替換為程序代碼。模板程序運(yùn)行效果如圖3.3。 第25頁/10/10263.任務(wù)小結(jié)或知識(shí)擴(kuò)展 模板參考答案:【代碼1】: printf(表示式x=-20&x=-20&x20)&(x%3=0)值:%dn,(x20)&(x%3=0);【代碼3】:printf(表示式(x%5=0)&!(x%3=0)值:%dn,(x%5=0)&!(x%3=0);(1)運(yùn)算符級(jí)別和結(jié)合性 對(duì)于32+22+24-1 02+22)+(2-1)結(jié)果是1)。(2) 防止邏輯錯(cuò)誤 需要注意是,當(dāng)我們要表示一個(gè)變量x

22、值是否在某個(gè)范圍時(shí)候,比如小于-1且大于-5時(shí),不要使用表示式:-5 x -1,因?yàn)?,?dāng)x值是-3時(shí)候,表示式:-5 x -1值是0(假),應(yīng)該使用表示式:-5 x & x -5 & -1 x,顯然當(dāng)x值是-3時(shí),這兩個(gè)表示式值都是1(真)。(3) 增強(qiáng)代碼可讀性 在表示式中盡可能防止出現(xiàn)難以閱讀計(jì)算次序,提倡使用小括號(hào)到達(dá)您計(jì)算次序目標(biāo),方便增強(qiáng)代碼可讀性。比如,對(duì)于3+710-1,盡管加減運(yùn)算級(jí)別高于關(guān)系運(yùn)算符,但(3+7)(10-1)可讀性更加好。第26頁27 3.3.4 實(shí)踐步驟 實(shí)踐1 (參考代碼見附錄A) 有如圖3.4所表示意電路圖。用整型變量表示一個(gè)開關(guān)狀態(tài),當(dāng)整型變量值是非0時(shí)

23、表示開關(guān)是“開”,當(dāng)整型變量值是0時(shí)表示開關(guān)是“關(guān)”。程序使用scanf語句輸入整型變量值,即輸入各個(gè)開關(guān)狀態(tài)。程序用邏輯表示式表示電路通,即邏輯表示式值是1表示電路通。 實(shí)踐2: 編寫程序,在main函數(shù)中申明3個(gè)int型變量x,y,z,并使用scanf函數(shù)為這3個(gè)int型變量輸入值,然后程序計(jì)算并輸出以下表示式值:Ax+y&z-y。Bxyyz。Cx-x&y-y|z-z 。D(x-x)&y-y。 第27頁/10/10283.4類型轉(zhuǎn)換運(yùn)算符 3.4.1 關(guān)鍵知識(shí)點(diǎn)1類型轉(zhuǎn)換運(yùn)算符 類型轉(zhuǎn)換運(yùn)算符格式是:(類型)類型轉(zhuǎn)換運(yùn)算符是單目運(yùn)算符,操作元是數(shù)值型數(shù)據(jù),比如:(float)12結(jié)果是12

24、.0(保留67位有效數(shù)字)。(int)45.98結(jié)果是45。(double)(int)68.89結(jié)果是68.0(保留1516位有效數(shù)字)。#include int main() int a = 11; double b= 12.98,c,d; printf(%f,%dn,(float)a,(int)b);/輸出: 11.000000,12 c =(int)b+0.5; printf(%fn,c);/輸出: 12.500000 d =(int)(b+0.5); printf(%fn,d);/輸出: 13.000000 return 0; 3簡單示例 例子4中使用了類型轉(zhuǎn)換運(yùn)算符,請(qǐng)注意程序注釋輸

25、出結(jié)果。 2注意事項(xiàng) 需要注意是,類型轉(zhuǎn)換運(yùn)算符級(jí)別是2級(jí),所以,(int)15.9+0.1結(jié)果是15.1,即相當(dāng)于:(int)15.9)+0.1,而(int)(15.9+0.1)結(jié)果才是16。第28頁/10/1029 3.4.2 能力目標(biāo) 使用類型轉(zhuǎn)換運(yùn)算符將一個(gè)基本類型數(shù)據(jù)轉(zhuǎn)換為另一個(gè)基本類型數(shù)據(jù)。第29頁30 3.4.3 任務(wù)驅(qū)動(dòng) 對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入 1任務(wù)主要內(nèi)容 輸出浮點(diǎn)數(shù)對(duì)第1位小數(shù)實(shí)施四舍五入結(jié)果。 輸出浮點(diǎn)數(shù)對(duì)第2位小數(shù)實(shí)施四舍五入結(jié)果。 輸出浮點(diǎn)數(shù)對(duì)第3位小數(shù)實(shí)施四舍五入結(jié)果。2. 任務(wù)模板:按著任務(wù)關(guān)鍵內(nèi)容完成模板:將【代碼】替換為程序代碼。模板程序運(yùn)行效果如圖3.5。第

26、30頁/10/10313.任務(wù)小結(jié)或知識(shí)擴(kuò)展 模板參考答案:【代碼1】: result=(int)(number+0.5);【代碼2】:result=(int)(number*10+0.5);【代碼3】:(int)(number*100+0.5);(1) 關(guān)于四舍五入 為了實(shí)現(xiàn)四舍五入,只需要將浮點(diǎn)數(shù)據(jù)加上0.5,再將結(jié)果進(jìn)行int型轉(zhuǎn)換運(yùn)算即可。但需要注意是,類型轉(zhuǎn)換運(yùn)算符級(jí)別是2級(jí),所以,(int)15.9+0.5結(jié)果是15.5,即相當(dāng)于:(int)15.9)+0.5,而(int)(15.9+0.5)結(jié)果才是16。 (2) 關(guān)于優(yōu)先級(jí)別 C表示式就是用運(yùn)算符連接起來符合語法規(guī)則式子。運(yùn)算符

27、優(yōu)先級(jí)決定了表示式中運(yùn)算執(zhí)行先后次序。比如,xy&!z相當(dāng)于(xy)&(!z)。沒有必要去記憶運(yùn)算符優(yōu)先級(jí)別,在編寫程序時(shí)盡可能使用括號(hào)()運(yùn)算符號(hào)(級(jí)別是最高級(jí):一級(jí))來實(shí)現(xiàn)想要運(yùn)算次序,以免產(chǎn)生難以閱讀或含糊不清計(jì)算次序。運(yùn)算符結(jié)合性決定了并列相同級(jí)別運(yùn)算符先后次序,比如,加減結(jié)合性是從左到右,8-5+3相當(dāng)于(8-5)+3;邏輯非運(yùn)算符!結(jié)合性是右到左,!x 相當(dāng)于!(!x)。第31頁32 3.4.4 實(shí)踐步驟 編寫程序,模擬使用不一樣交通工具托運(yùn)行李費(fèi)用。詳細(xì)要求以下: 用火車在托運(yùn)行李時(shí)以千克為單位計(jì)算費(fèi)用(12元/kg),忽略重量中小數(shù)部分,即忽略不足1千克之部分。 用汽車在托運(yùn)行

28、李時(shí)以千克為單位計(jì)算費(fèi)用(22元/kg),將重量中小數(shù)部分百克部分進(jìn)行四舍五入,即將不足1千克之部分進(jìn)行四舍五入。 用飛機(jī)在托運(yùn)行李時(shí)以千克為單位計(jì)算費(fèi)用(132元/kg),將重量中小數(shù)部分十克部分進(jìn)行四舍五入,即將不足1百克之部分進(jìn)行四舍五入。 用double型變量weight存放用戶行李重量,用charge存放托運(yùn)費(fèi)用,程序使用scanf語句輸入weight值,該值被認(rèn)為是以千克為單位行李之重量,然后程序?qū)⒎謩e計(jì)算出用火車、汽車和飛機(jī)托運(yùn)行李費(fèi)用。(參考代碼見附錄A)第32頁/10/10333.5 位運(yùn)算符 3.5.1 關(guān)鍵知識(shí)點(diǎn) 整型數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式表示,比如一個(gè)int型變量在內(nèi)

29、存中占4個(gè)字節(jié)共32位,int型數(shù)據(jù)7二進(jìn)制表示是: 00000000 00000000 00000000 00000111左面最高位是符號(hào)位,最高位是0表示正數(shù),是1表示負(fù)數(shù)。負(fù)數(shù)采取補(bǔ)碼表示,比如-8補(bǔ)碼表示是: 111111111 111111111 1111111 11111000對(duì)于一個(gè)或多個(gè)字節(jié)組成數(shù)據(jù),按從左向右次序,稱左面第一位是最高位,右面第一位是最低位。為了表述上方便,從低位到高位依次編號(hào)。在許多文件中,將最低位編號(hào)為0,即從右向左,依次稱作位0,位1,位2,位3。本書在敘述上也恪守這個(gè)習(xí)慣,比如,說某數(shù)據(jù)位0是1,就是指該數(shù)據(jù)最低位值是1,說某數(shù)據(jù)位1是0,是指從右向左數(shù)

30、,該數(shù)據(jù)第二位值是0。當(dāng)然,有時(shí)候?yàn)榱撕喕瘮⑹觯矔?huì)按從左向右(高到低)來敘述相關(guān)內(nèi)容,比如,“數(shù)據(jù)從高至低第二位值是1”也是很清楚敘述。 第33頁 1“按位與”運(yùn)算 按位與運(yùn)算符&是雙目運(yùn)算符,對(duì)兩個(gè)整型數(shù)據(jù)a,b按位進(jìn)行&運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:假如a,b兩個(gè)數(shù)據(jù)對(duì)應(yīng)位都是1,則c該位是1,不然是0。假如b精度高于a,那么結(jié)果c精度和b相同。比如: a: 00000000 00000000 00000000 00000111 & b: 10000001 10100101 11110011 10101011 c: 00000000 00000000 00000000 000000112“按位或”運(yùn)算 按位或運(yùn)算符|是雙目運(yùn)算符,對(duì)兩個(gè)整型數(shù)據(jù)a,b按位進(jìn)行“|”運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:假如a,b兩個(gè)數(shù)據(jù)對(duì)應(yīng)位都是0,則c該位是0,不然是1。假如b精度高于a,那么結(jié)果c精度和b相同。 3“按位非”運(yùn)算 “按位非”運(yùn)算符“”是單目運(yùn)算符,對(duì)一個(gè)整型數(shù)據(jù)a按位進(jìn)行“”運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:假如a對(duì)應(yīng)位是0,則c該位是1,不然是0。 /10/1034第34頁4“按位異或”運(yùn)算 “按位異或”運(yùn)算符“”是雙目運(yùn)算符,對(duì)兩個(gè)整型數(shù)據(jù)a,b按位

溫馨提示

  • 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)論