C語(yǔ)言基礎(chǔ)課件第2章_第1頁(yè)
C語(yǔ)言基礎(chǔ)課件第2章_第2頁(yè)
C語(yǔ)言基礎(chǔ)課件第2章_第3頁(yè)
C語(yǔ)言基礎(chǔ)課件第2章_第4頁(yè)
C語(yǔ)言基礎(chǔ)課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章C語(yǔ)言的運(yùn)算符和表達(dá)式C語(yǔ)言程序設(shè)計(jì)(基于CDIO思想)本章介紹算術(shù)運(yùn)算符和算術(shù)表達(dá)式、賦值運(yùn)算符和賦值表達(dá)式及與賦值相關(guān)的運(yùn)算符(復(fù)合的賦值運(yùn)算符、自增1、自減1運(yùn)算符)以及其他運(yùn)算符,從而進(jìn)一步提高順序結(jié)構(gòu)程序的設(shè)計(jì)能力。2主要內(nèi)容12賦值運(yùn)算符、復(fù)合的賦值運(yùn)算符3自增1(自減1)運(yùn)算符、類型轉(zhuǎn)換4算術(shù)運(yùn)算符和算術(shù)表達(dá)式逗號(hào)運(yùn)算符、容量運(yùn)算符3

2.1計(jì)算a/b和a%b的值(算術(shù)運(yùn)算)

1.1.1分析與設(shè)計(jì)

注意:如果兩個(gè)操作數(shù)a、b的值都是整型,結(jié)果也是整型;“%”是取余運(yùn)算,要求兩個(gè)操作數(shù)必須是整型。如:7%3的值為1,3%7的值為3,而3.5%7是非法的。

例2_1求a/b和a%b的值#include"stdio.h"main(){inta,b;

printf("a,b=?");scanf("%d,%d",&a,&b);printf("a/b=%d\n",a/b);printf("a%%b=%d\n",a%b);}程序運(yùn)行結(jié)果:a,b=?3,5a/b=0a%b=3從鍵盤輸入a、b變量的值,求a/b和a%b的值。

研究式學(xué)習(xí)—C程序設(shè)計(jì)(第一章)4

2.1.2運(yùn)算符與表達(dá)式

1.運(yùn)算符的功能:即它對(duì)數(shù)據(jù)做什么操作2.運(yùn)算符對(duì)運(yùn)算對(duì)象有一定的限制3.表達(dá)式值的類型4.運(yùn)算符的優(yōu)先級(jí)5.結(jié)合方向兩個(gè)同優(yōu)先級(jí)的運(yùn)算符相鄰時(shí),是按從左到右的順序運(yùn)算(左結(jié)合),還是按從右到左的順序運(yùn)算(右結(jié)合),C語(yǔ)言運(yùn)算符的結(jié)合性大多數(shù)是左結(jié)合的,有一小部分是右結(jié)合的。C程序設(shè)計(jì)|第一章運(yùn)算符是表示某種運(yùn)算的符號(hào),是對(duì)數(shù)據(jù)的操作表達(dá)式是用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來的符合C語(yǔ)言語(yǔ)法規(guī)則的式子運(yùn)算對(duì)象可以是常量、變量、函數(shù)等優(yōu)先級(jí)和結(jié)合性:優(yōu)先級(jí)是指表達(dá)式中各計(jì)算的先后次序;結(jié)合性是指當(dāng)一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同時(shí)進(jìn)行運(yùn)算的結(jié)合方向運(yùn)算符及表達(dá)式C程序設(shè)計(jì)|第一章算術(shù)運(yùn)算符有:?jiǎn)文窟\(yùn)算符:-(負(fù))、+(正),右結(jié)合雙目運(yùn)算符:+、-、*、/(整數(shù)相除結(jié)果取整)、%(取余)優(yōu)先級(jí):先乘除(含取余),后加減,括號(hào)優(yōu)先結(jié)合性:同級(jí)從左至右寫出以下面算術(shù)表達(dá)式的優(yōu)先級(jí)和結(jié)合性:

a*b/c-1.5+’a’

a/b/c*(3-d)要求%兩側(cè)均為整形數(shù)據(jù)算術(shù)運(yùn)算符C程序設(shè)計(jì)|第一章用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來的、符合C語(yǔ)法規(guī)則的式子。例如:25/4等于6,25.0/4.0等于6.255/10等于0,5.0/10.0等于0.54%9=4-15%4=-3(%只能對(duì)整型數(shù)據(jù)操作)乘號(hào)不能省略,且要根據(jù)運(yùn)算順序書寫,如:數(shù)學(xué)表達(dá)式

a(b2+4ac) (a+b)÷cdC表達(dá)式a*(b*b+4*a*c)(a+b)/c/d或(a+b)/(c*d)算術(shù)表達(dá)式C程序設(shè)計(jì)|第一章main(){inti=3;floatr=2.0;printf("2*-i:%d\n",2*-i);printf(“r/i:%f\n”,r/i);printf("r/i:%d\n",r/i);i=r/i;printf("i=r/i:%d\n",i);i=2%3;printf("2%%3:%d",i);}程序執(zhí)行結(jié)果:2*-i:-6r/i:0.666667r/i:21845i=r/i:0

2%3:2

算術(shù)運(yùn)算舉例92.1.4實(shí)戰(zhàn)演練

1.編程序計(jì)算數(shù)學(xué)表達(dá)式:b2-4ac,a,b,c的值從鍵盤輸入。2.

編程序計(jì)算298秒是幾分幾秒。提示:設(shè)intx=298;再定義兩個(gè)變量存放分(m)、秒(s)值;則:m=x/60;s=x%60;3.從鍵盤輸入一個(gè)三位數(shù),求各位數(shù)字之和。例如,輸入的三位數(shù)為358,則輸出結(jié)果為3+5+8=16。提示:題目的關(guān)鍵是要求出該數(shù)的個(gè)、十、百位上的數(shù)字,可利用C語(yǔ)言整數(shù)相除,結(jié)果仍為整數(shù)的特點(diǎn)。若設(shè)該數(shù)為data,它的個(gè)、十、百位為g、s、b,則b=data/100;s=(data-b*100)/10;g=data%10C程序設(shè)計(jì)|第一章2.2.1分析與設(shè)計(jì)例2.3:交換a,b變量的值

main(){inta=3,b=5,t;

t=a;a=b;b=t;

printf(“a=%d,b=%d\n”,a,b);}2.2交換a,b變量的值(賦值運(yùn)算)C程序設(shè)計(jì)|第一章由賦值運(yùn)算符“=”將變量和表達(dá)式連接起來的式子。其形式是:

<變量>=<表達(dá)式>賦值表達(dá)式表達(dá)式值各變量值a=55a=b=c=55a,b,c均為5a=5+(c=6)

11a為11,c為6a=(b=4)+(c=6)10a為10,b為4,c為6a=(b=10)/(c=2)5a為5,b為10,c為2賦值運(yùn)算符及表達(dá)式C程序設(shè)計(jì)|第一章2.2.3復(fù)合的賦值運(yùn)算符C語(yǔ)言中有10種復(fù)合賦值運(yùn)算符:

+=、-=、*=、/=、%=、

<<=、>>=、&=、^=、|=(位運(yùn)算符以后講)實(shí)例:a/=3等價(jià)于a=a/3

x*=y+8等價(jià)于x=x*(y+8)a+=a-=a*a相當(dāng)于a=a+(a=a-a*a)y%=8等價(jià)于y=y%8賦值語(yǔ)句的格式:賦值表達(dá)式;賦值表達(dá)式可以包含在其它表達(dá)式中,而賦值語(yǔ)句不能,如:if((a=b)>0)t=a;C程序設(shè)計(jì)|第一章例2_4復(fù)合賦值運(yùn)算符的應(yīng)用main(){intx,y;x=3;y=8;x*=y+1;printf("x=%d,y=%d\n",x,y);x=3;y=8;x=x*y+1;printf("x=%d,y=%d\n",x,y);}程序執(zhí)行結(jié)果:x=27,y=8x=25,y=8賦值運(yùn)算舉例C程序設(shè)計(jì)|第一章++(自增),--(自減):++n,--m前綴,變量的值+(-)1n++,m--后綴,變量的值+(-)1優(yōu)先級(jí):高于雙目運(yùn)算結(jié)合性:同級(jí)從右至左

j=3;

k=++j;→j=j+1;k=j;即j的為4,k的值為4

k=j++;→k=j;j=j+1;

即j的為4,k的值為3

自增、自減運(yùn)算說明:對(duì)于j變量,j++和++j都使j的值加1,但k的值就不同了,所以前綴和后綴運(yùn)算對(duì)變量是一樣的,對(duì)表達(dá)式的值就不一樣C程序設(shè)計(jì)|第一章自增、自減舉例例2_5自增1運(yùn)算,前后綴區(qū)別#include"stdio.h"main(){intx,y;x=5;y=x++;printf("x=5,y=x++:%d,x=%d\n",y,x);x=5;y=++x;printf("x=5,y=++x:%d,x=%d\n",y,x);}運(yùn)行結(jié)果:x=5,y=x++:5,x=6x=5,y=++x:6,x=616

2.2.5實(shí)戰(zhàn)演練

1.用賦值語(yǔ)句表達(dá):a的值為2,b的值比a多2,c的值比b的值多2,并輸出a,b,c的結(jié)果。請(qǐng)編出完整程序驗(yàn)證。2.假設(shè)變量a和b均為整型,以下語(yǔ)句可以不借助任何變量把a(bǔ)、b中的值進(jìn)行交換。請(qǐng)先填空,再編出完整程序驗(yàn)證。a+=_________;(a為a、b之和)b=a-__________;a-=___________;

2.3計(jì)算存款n年后的本利之和(類型轉(zhuǎn)換等運(yùn)算)

設(shè)銀行定期存款的年利率r為2.25%,并已知存款期為n年,存款本金為m元,編程計(jì)算n年后的本利之和2.3.1分析與設(shè)計(jì)根據(jù)題意算法步驟為:step1:定義變量;step2:輸入算法所需要的數(shù)據(jù)r,n,m;step3:進(jìn)行運(yùn)算和數(shù)據(jù)處理:本利之和=m*(1+r)step4:輸出運(yùn)算結(jié)果數(shù)據(jù)。172.3計(jì)算存款n年后的本利之和(類型轉(zhuǎn)換等運(yùn)算例2_6計(jì)算存款n年后的本利之和#include"stdio.h"#include"math.h"main(){intn,m;floatr=0.0225,total;printf("Pleaseentern,m:");scanf("%d,%d",&n,&m);total=m*pow(1+r,n);printf("Total=%f\n",total);}18程序運(yùn)行結(jié)果:Pleaseentern,m:3,1000Total=1069.030143C程序設(shè)計(jì)|第一章自動(dòng)轉(zhuǎn)換:當(dāng)參加算術(shù)運(yùn)算的數(shù)據(jù)類型不一致時(shí)低級(jí)向高級(jí)轉(zhuǎn)換;賦值運(yùn)算符兩邊的數(shù)據(jù)類型不同時(shí),將右側(cè)表達(dá)式的值轉(zhuǎn)換為左側(cè)變量的類型強(qiáng)制轉(zhuǎn)換:強(qiáng)迫變量或表達(dá)式的值轉(zhuǎn)換為某一特定類型。常用在自動(dòng)類型轉(zhuǎn)換不能達(dá)到目的時(shí)。轉(zhuǎn)換格式為:(類型說明符)變量(類型說明符)(表達(dá)式)(double)a,(int)(x+y),(float)(5%3)2.3.2類型轉(zhuǎn)換轉(zhuǎn)換不會(huì)改變變量定義時(shí)所規(guī)定的數(shù)據(jù)類型C程序設(shè)計(jì)|第一章“=”兩側(cè)類型不一致時(shí),要將“=”右側(cè)表達(dá)式的值轉(zhuǎn)換為“=”左側(cè)變量的類型,右側(cè)表達(dá)式類型的字節(jié)超過變量類型的字節(jié)時(shí)會(huì)出錯(cuò)整←實(shí):截掉小數(shù)部分實(shí)←整:數(shù)值不變,存為浮點(diǎn)整←char:整型低8位←char整型←(字節(jié)數(shù)相同的)unsigned整型:原樣送入。若超過整型表示范圍會(huì)出錯(cuò)。unsigned←(字節(jié)數(shù)相同的)非unsigned整型:原樣送入,符號(hào)位也作為數(shù)值賦值時(shí)的類型轉(zhuǎn)換C程序設(shè)計(jì)|第一章逗號(hào)表達(dá)式的格式:表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號(hào)表達(dá)式的求解順序及結(jié)果:先求解表達(dá)式1,再求解表達(dá)式2,…,最后求解表達(dá)式n;逗號(hào)表達(dá)式的最終結(jié)果為表達(dá)式n的值。實(shí)例:a=3*5,a*4

最終結(jié)果為60x=(a=10,b=100,c=50)最終結(jié)果為50y=(i++,j--,k+2)最終結(jié)果為k+22.3.3逗號(hào)運(yùn)算和逗號(hào)表達(dá)式用于了解一個(gè)變量或某種類型的量在內(nèi)存中所占的字節(jié)數(shù)。它有以下兩種用法:sizeof(表達(dá)式)

例如:intx=1;

floaty=5.0;printf(“%d”,sizeof(x+y));

結(jié)果為:8sizeof(類型名)例如:

printf(“%d”,sizeof(shortint))結(jié)果為:22.3.4容量運(yùn)算符sizeof例2_7測(cè)定基本數(shù)據(jù)類型所占的字節(jié)數(shù)#include"stdio.h"main(){printf("char:%3dbyte\n",sizeof(char));printf("short:%3dbyte\n",sizeof(short));printf("int:%3dbyte\n",sizeof(int));printf("long:%3dbyte\n",sizeof(long));printf("unsigned:%3dbyte\n",sizeof(unsigned));printf("float:%3dbyte\n",sizeof(float));printf("double:%3dbyte\n",sizeof(double));printf("longdouble:%3dbyte\n",sizeof(longdouble));}2.3.4容量運(yùn)算符sizeofC提供了6個(gè)用于位操作的運(yùn)算符。這些運(yùn)算符只能作用于整數(shù)分量,即有符號(hào)或無符號(hào)的char,short,int和long類型1.按位與(&)運(yùn)算位運(yùn)算就是參加運(yùn)算的兩個(gè)數(shù)按二進(jìn)制位參加運(yùn)算,如“與”運(yùn)算是兩個(gè)參加運(yùn)算的二進(jìn)制位都是1,結(jié)果值是1,只要有一個(gè)運(yùn)算數(shù)是0,結(jié)果是0。例如3&4為:

00000011(3)(&)00000100(4)

00000000(0)2.3.5位運(yùn)算符2.按位或(|)運(yùn)算按位或運(yùn)算符用于對(duì)一個(gè)數(shù)據(jù)的某些位置1。如x是一個(gè)整數(shù)(16位),要將低8位全置為1,高8位保留原樣,可以這樣運(yùn)算:x|0377,0377是8進(jìn)制數(shù),轉(zhuǎn)換成二進(jìn)制后,低8位全為1,和x或運(yùn)算后,x的低8位也為1。3.按位異或(^)運(yùn)算:同則0,異則1。異或運(yùn)算可以使特定位翻轉(zhuǎn),如要使01111010的低4位翻轉(zhuǎn),可與(00001111)進(jìn)行異或運(yùn)算,即:

01111010(^)00001111011101012.3.5位運(yùn)算符4.按位左移(<<)運(yùn)算左移運(yùn)算用來將一個(gè)數(shù)的各二進(jìn)制位左移若干位,左移一位相當(dāng)于這個(gè)數(shù)乘2,如x<<2用于將x的值左移2位,右邊空出的2位用零填充。這個(gè)表達(dá)式的結(jié)果等

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論