《《C語言程序設(shè)計》電子教案第2章數(shù)據(jù)類型及基本運算量.ppt》由會員分享,可在線閱讀,更多相關(guān)《《C語言程序設(shè)計》電子教案第2章數(shù)據(jù)類型及基本運算量.ppt(53頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1,目錄,2.1數(shù)據(jù)類型 2.2常量 2.3變量 2.4庫函數(shù) 2.5運算符及表達式,2,2.1數(shù)據(jù)類型,數(shù)據(jù)類型分四大類:,,3,2.1數(shù)據(jù)類型,1.基本數(shù)據(jù)類型 1)整型:不帶小數(shù)點和指數(shù)的數(shù),,4,2.1數(shù)據(jù)類型,1.基本數(shù)據(jù)類型 2)浮點型:帶有小數(shù)點或指數(shù)的數(shù),,注:在Visual C++6.0中l(wèi)ong double被作為double處理。,5,2.1數(shù)據(jù)類型,1.基本數(shù)據(jù)類型 3)字符型:由字母、數(shù)字、空白符、標(biāo)點和特殊字符組成,以1個字節(jié)的ASCII存儲。 (1)字母:小寫字母az、大寫字母AZ; (2)數(shù)字:09; (3)空白符:空格符、制表符、換行符等,在字符
2、常量和字符串常量中起作用; (4)標(biāo)點符號及特殊字符:詳見ASCII字符集。,,6,2.1數(shù)據(jù)類型,1.基本數(shù)據(jù)類型 4)枚舉類型(enum) 指把可能的值一一列舉出來,變量的值只可以在列舉出來的值的范圍內(nèi)取。,,7,2.1數(shù)據(jù)類型,2.構(gòu)造數(shù)據(jù)類型 1)構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個或多個數(shù)據(jù)類型用構(gòu)造的方法來定義的數(shù)據(jù)類型; 2)一個構(gòu)造類型的值可以分解成若干個成員或元素。每個成員都是一個基本數(shù)據(jù)類型或又是一個構(gòu)造數(shù)據(jù)類型; 3)種類:數(shù)組類型( )、結(jié)構(gòu)體類型(struct)和共用體類型(unoin),,8,2.1數(shù)據(jù)類型,3.指針類型(*) 指針用來表示所指向內(nèi)容在內(nèi)存中的
3、地址( area=pi*r*r; printf(“area=%f”,area); 程序結(jié)果:,,17,2.3變量,在程序運行期間,值可以改變的量稱為變量 1.變量的種類 1)局部變量(也稱為內(nèi)部變量) 在函數(shù)體的聲明部分定義。其作用域僅限于本函數(shù)內(nèi),離開本函數(shù)后不能再使用這個變量。 2)全局變量(也稱為外部變量) 在函數(shù)外部定義的變量。它不屬于哪一個函數(shù),它的作用域是整個文件。 注意:同一個源文件中,在不同作用域內(nèi)可以定義同名變量,在使用時,作用域小的變量屏蔽作用域大的變量。,,18,2.3變量,2.變量的定義 1)定義方法 變量定義的一般形式為: 類型聲明符變量名,變量名
4、,...; 其中,類型聲明符可以是基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型或指針類型, 如:int a; //a為整型變量,,19,2.3變量,2.變量的定義 2)變量定義注意事項 (1)允許在一個類型聲明符后,定義多個相同類型的變量。各變量名之間用逗號分隔。類型聲明符與變量名之間至少用一個空格分隔。 long x,y; //x,y為長整型變量 unsigned p,q; //p,q為無符號整型變量 (2)最后一個變量名之后必須以西文分號“;”結(jié)尾。 (3)變量定義必須放在變量使用之前,局部變量的定義放在函數(shù)體中的聲明部分。,,20,2.3變量,2.變量的定義 3)定義變量小結(jié) (1)在
5、實際應(yīng)用中,應(yīng)根據(jù)需要設(shè)置變量的類型。能用整型時就不要用浮點型;如果所要求的精度不高,能用單精度型時就不用雙精度型。 (2)根據(jù)需要合理選擇變量的作用域。 (3)在同一作用域內(nèi)不能定義同名變量;在不同作用域內(nèi)可以定義同名變量。,,21,2.3變量,3.變量的使用 1)變量的初始化 在C語言中,變量被定義之后,在第一次賦值之前,其值是隨機的。 在程序中常常需要對變量賦初值,以便使用變量。 在變量定義同時賦初值的一般形式為: 類型聲明符變量1=值1,變量2=值2,;,,22,2.3變量,3.變量的使用 1)變量的初始化 例2_2】變量的初始化 #include void main()
6、 int a=3,b=5,c; c=a+b; printf(%d+%d=%dn,a,b,c); 程序結(jié)果:,,23,2.3變量,3.變量的使用 2)變量的賦值與取值 (1)變量的賦值 用賦值語句把計算得到的表達式的值賦給變量。變量的值只有被賦以新值,舊值才被覆蓋。對于數(shù)值類型變量,如果被賦的新值超出其可表示的范圍,會出現(xiàn)溢出錯誤。,,24,2.3變量,3.變量的使用 2)變量的賦值與取值 (1)變量的賦值 【例2_3】整型數(shù)據(jù)的溢出。 #include void main() int a,b; a= 2147483647; b=a+1; printf(%d,%dn,a,
7、b); 由于Visual C++6.0中int型數(shù)據(jù)占4個字節(jié),有符號整數(shù)的表示范圍為-21474836482147483647,所以對2147483647加1得到的2147483648溢出了。,,25,2.3變量,3.變量的使用 2)變量的賦值與取值 (2)使用的變量值 將變量名寫在表達式中,或給其他變量賦值,或用作函數(shù)的參數(shù),表示使用變量的值。如例2_2中的語句c=a+b;是將變量a和b的當(dāng)前值求和后賦給變量c。c的值變?yōu)樾轮担琣和b的值被引用,不會被改變。,,26,2.3變量,3.變量的使用 3)變量與符號常量的區(qū)別 (1)變量占用內(nèi)存空間,在程序運行過程中,值可能發(fā)生變化;
8、符號常量不占用內(nèi)存空間,在程序運行過程中,值也可能發(fā)生變化。 (2)變量的定義及聲明是用語句實現(xiàn)的,在執(zhí)行階段為變量分配相應(yīng)的內(nèi)存空間;符號常量的定義是通過宏定義命令#define實現(xiàn)的,在編譯階段就用直接常量代替了全部符號常量。,,27,2.4庫函數(shù),1.數(shù)學(xué)函數(shù) int abs( int x)求整數(shù)x的絕對值 double fabs(double x)求雙精度實數(shù)x的絕對值 double sqrt(double x)計算x的開方 double pow(double x,double y)計算xy的值 double log10(double x)求lgx double exp(double
9、 x)求ex的值 double log(double x)求x double sin(double x)計算sin(x)的值 double cos(double x)計算cos(x)的值,,28,2.4庫函數(shù),2.輸入輸出函數(shù) int scanf(char *format,args,)從標(biāo)準(zhǔn)輸入設(shè)備按format指定的格式把輸入數(shù)據(jù)存入到“args,”所指的內(nèi)存中 int printf(char *format,args,)把“args,”的值以format指定的格式輸出到標(biāo)準(zhǔn)輸出設(shè)備 int getchar(void)從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個字符int putchar(char ch)把ch
10、輸出到標(biāo)準(zhǔn)輸出設(shè)備 char *gets(char *s)從標(biāo)準(zhǔn)設(shè)備讀取一行字符串放入s所指存儲區(qū),用0替換讀入的換行符int puts(char *str)把str所指字符串輸出到標(biāo)準(zhǔn)設(shè)備,將0轉(zhuǎn)成回車換行符,,29,2.5運算符及表達式,1.運算符及表達式簡介 1)運算符的種類 (1)算術(shù)運算符 用于數(shù)值運算:加+、減-、乘*、除/、求余%、自增++、自減--。 (2)賦值運算符 用于賦值運算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=、-=、*=、/=、%=)和復(fù)合位運算賦值( printf(%f,%fn,20.0/7,-20.0/7); 程序運行結(jié)果:,,38,2.5運算符及表達式
11、,2.算術(shù)運算符及算術(shù)表達式 3)算術(shù)運算符的優(yōu)先級及結(jié)合性 【例2_5】求余運算。 #include void main() printf(%dn,10%3); 程序運行結(jié)果 :,,39,2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 4)自增、自減運算符 自增1運算符記為“++”:使變量的值自增1。 自減1運算符記為“--”:使變量值自減1。 自增1和自減1運算符均為單目運算,具有右結(jié)合性。 可有以下幾種形式: ++i //i自增1后再參與其它運算 --i //i自減1后再參與其它運算 i++ //i參與運算后,i的值再自增1 i-- //i參與運算后,i的值再自減1,,40,
12、2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 4)自增、自減運算符 【例2_6】自增自減運算。 #include void main() int i=10; printf(%dn,i++); printf(%dn,i--); printf(%dn,++i); printf(%dn,--i); printf(%dn,-i++); printf(%dn,-i--); ,,41,2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 4)自增、自減運算符 【例2_7】復(fù)雜的自增自減運算。 #include void main() int i=5,j=5,p,q; p=(i++)+(i++
13、)+(i++); q=(++j)+(++j)+(++j); printf(%d,%d,%d,%dn,p,q,i,j); ,,42,2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 5)各類數(shù)值型數(shù)據(jù)之間的混合運算 若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。 轉(zhuǎn)換方法:自動轉(zhuǎn)換、強制轉(zhuǎn)換 (1)自動轉(zhuǎn)換:發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。自動轉(zhuǎn)換規(guī)則為由少字節(jié)類型向多字節(jié)類型轉(zhuǎn)換。,,43,2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 5)各類數(shù)值型數(shù)據(jù)之間的混合運算 (2)強制類型轉(zhuǎn)換 強制
14、類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運算來實現(xiàn)的。 一般形式為:(類型聲明符)(表達式) 功能:把表達式的運算結(jié)果強制轉(zhuǎn)換成類型聲明符所表示的類型。在使用強制轉(zhuǎn)換時應(yīng)注意以下問題: 類型聲明符和表達式都必須加括號(變量可不加) 強制轉(zhuǎn)換和自動轉(zhuǎn)換只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的臨時性轉(zhuǎn)換,而不改變原來對該變量定義的類型。,,44,2.5運算符及表達式,2.算術(shù)運算符及算術(shù)表達式 5)各類數(shù)值型數(shù)據(jù)之間的混合運算 (2)強制類型轉(zhuǎn)換 【例2_8】強制類型轉(zhuǎn)換。 #include void main() float f=5.75; printf(
15、(int)f=%d,f=%fn,(int)f,f); ,,45,2.5運算符及表達式,3.賦值運算符及賦值表達式 1)簡單賦值運算符和簡單賦值表達式 由簡單賦值運算符 “=” 連接的式子稱為簡單賦值表達式。 (1)簡單賦值表達式格式:變量=表達式 (2)簡單賦值表達式使用說明 賦值運算符的功能具有單向性,將表達式的值傳送變量。 賦值運算符左邊只能是單個變量名,不能是其它運算量。 賦值運算符右邊可以是常量、變量、函數(shù)或表達式。 賦值運算符兼有計算與賦值雙重功能。 賦值運算符具有右結(jié)合性。 賦值運算符的優(yōu)先級低于算術(shù)運算符。 在賦值表達式末尾加分號就構(gòu)成了賦值語句。,,46,2.5運算符及表
16、達式,3.賦值運算符及賦值表達式 2)賦值中的自動類型轉(zhuǎn)換 如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型轉(zhuǎn)換,即把賦值運算符右邊的類型換成左邊的類型。具體規(guī)定如下: (1)實型賦給整型,舍去小數(shù)部分。 (2)整型賦給實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。 (3)字符型賦給整型,由于字符型為一個字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高位為0。整型賦給字符型,只把低八位賦給字符量。,,47,2.5運算符及表達式,3.賦值運算符及賦值表達式 2)賦值中的自動類型轉(zhuǎn)換 【例2_9】賦值運算中的自動類型轉(zhuǎn)換。 #include void mai
17、n() int a,b=322; float x,y=8.88; char c1=k,c2; a=y; x=b; printf(%d,%f ,a,x); a=c1; c2=b; printf(%d,%c,a,c2); ,,48,2.5運算符及表達式,3.賦值運算符及賦值表達式 2)賦值中的自動類型轉(zhuǎn)換 (4)右邊量的數(shù)據(jù)類型長度比左邊長,丟失的部分按四舍五入舍入。 【例2_10】賦值運算中的自動類型轉(zhuǎn)換。 #include void main() float pi=3.14159; int s,r=10; s=r*r*pi; printf(s=%dn,s); ,,49
18、,2.5運算符及表達式,3.賦值運算符及賦值表達式 2)賦值中的自動類型轉(zhuǎn)換 【例2_11】不同類型的量參與運算。 #include void main() long x=5,y=6; int a=7,b=8,c,d; c=x+a; d=y+b; printf(c=x+a=%d,d=y+b=%dn,c,d); ,,50,2.5運算符及表達式,3.賦值運算符及賦值表達式 (3)復(fù)合的賦值運算符 在賦值符之前加其它二目運算符可構(gòu)成復(fù)合賦值符。 +=、-=、*=、=、%=、=、 y=((x=a+b),(b+c)); printf(y=%d,x=%d,y,x); ,,53,2.5運算符及表達式,4.逗號運算符及逗號表達式 (4)逗號表達式注意事項 (1)擴展形式:表達式1,表達式2,表達式n 整個逗號表達式的值等于表達式n的值。 (2)程序中使用逗號表達式,通常是要分別計算逗號表達式內(nèi)各表達式的值,并不一定要計算整個逗號表達式的值。 (3)并不是在所有出現(xiàn)逗號的地方都組成逗號表達式,如在變量定義中和函數(shù)參數(shù)表中的逗號只是用作各變量之間的分隔符。 (4)賦值運算符的優(yōu)先級高于逗號運算符。,,