浙江大學(xué)C顏暉原版c2_第1頁
浙江大學(xué)C顏暉原版c2_第2頁
浙江大學(xué)C顏暉原版c2_第3頁
浙江大學(xué)C顏暉原版c2_第4頁
浙江大學(xué)C顏暉原版c2_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選課件Chap 2 基本數(shù)據(jù)類型和表達式基本數(shù)據(jù)類型和表達式l數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型l整型intl實型(浮點型)float doublel字符型char構(gòu)造數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉指針類型l對數(shù)據(jù)的操作運算對數(shù)據(jù)的操作運算運算符和表達式精選課件Chap 2 基本數(shù)據(jù)類型和表達式基本數(shù)據(jù)類型和表達式l常量和變量常量和變量l整數(shù)類型整數(shù)類型l實數(shù)類型實數(shù)類型l字符類型字符類型l表達式表達式l數(shù)據(jù)的存儲和類型轉(zhuǎn)換數(shù)據(jù)的存儲和類型轉(zhuǎn)換精選課件2.1 常量和變量常量和變量2.1.1 2.1.1 常量常量l常量(常數(shù)):數(shù)據(jù)常量(常數(shù)):數(shù)據(jù)123 (整型)4.56 (實型) A (字符型)

2、l符號常量:用標(biāo)識符表示的常量數(shù)據(jù)符號常量:用標(biāo)識符表示的常量數(shù)據(jù):PI:EPS通常用大寫字母精選課件例例21 求球的表面積和體積求球的表面積和體積# include void main( ) float r, s, v; scanf(%f, &r); s=4.0*3.14*r*r ; v=4.0/3.0*3.14*r*r*r ; printf(s=%f, v=%fn, s, v);s=4.0*3.14159159*r*r ; v=4.0/3.0*3.14159159*r*r*r ; 精選課件例例22 符號常量符號常量# define PI 3.14# include void main( )

3、 float r, s, v; scanf(%f, &r); s=4.0*PI*r*r ; v=4.0/3.0*PI*r*r*r ; printf(s=%f, v=%fn, s, v);# define PI 3.14159159 精選課件2.1.2 變量變量C C語言中的量語言中的量l常量常量(常數(shù)):數(shù)據(jù)(常數(shù)):數(shù)據(jù)l符號常量符號常量:用標(biāo)識符表示的常量數(shù)據(jù):用標(biāo)識符表示的常量數(shù)據(jù)在程序的運行過程中,在程序的運行過程中,其值不能被改變其值不能被改變l變量變量:存放數(shù)據(jù)的:存放數(shù)據(jù)的工作單元工作單元在程序的運行過程中,在程序的運行過程中,其值可以改變其值可以改變精選課件變量的定義變量的定義

4、變量定義的一般形式 類型名 變量表;變量名:小寫字母,見名知義變量名:小寫字母,見名知義類型名:類型名:l整型intl實型(浮點型)float doublel字符型char精選課件變量的定義變量的定義int i, j, k; (定義定義i, j, k為整型變量)為整型變量)char c; (定義定義c為字符型變量)為字符型變量)float x, y;double area, length;變量名代表內(nèi)存中的一個存儲單元變量名代表內(nèi)存中的一個存儲單元用于存放該變量的值用于存放該變量的值該存儲單元的大小由變量的數(shù)據(jù)類型決定該存儲單元的大小由變量的數(shù)據(jù)類型決定精選課件變量的定義與使用變量的定義與使用

5、變量必須變量必須 先先定義,后后使用。# include void main( ) int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;一個變量名只能定義一次。 變量一般都定義在程序的頭上,不能定義在程序的中間或后面。精選課件變量的使用變量的使用變量: 先定義,后使用 先賦值,后引用# include void main( ) int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;精選課件變量的賦值變量的賦值l賦初值:在定義變量時對它賦值 int a = 5, b = 3;l賦值表達式:int a, b;a = 5;b=

6、3;l輸入函數(shù): scanf(“%d%d”, &a, &b);精選課件2.2 整數(shù)類型整數(shù)類型2.2.1 2.2.1 整型常量(整數(shù))整型常量(整數(shù))三種表現(xiàn)形式l十進制整數(shù):正、負號,十進制整數(shù):正、負號,0 09 9,首位不是,首位不是0 0例:10,123l八進制整數(shù):正、負號,八進制整數(shù):正、負號,0 07 7,首位是,首位是0 0例:010,0123l1616進制整數(shù):正、負號,進制整數(shù):正、負號,0 09 9,a-f,A-F,a-f,A-F,前綴前綴是是0 0 x,0Xx,0X例:0 x10,0 x123精選課件123 = 1111011 (B) 二進制 =173 (O) 八進制

7、=7B (X) 十六進制int i=0173;int j=0 x7b;int k=123;例:16 020 0 x10 10 012 0XA精選課件2.2.2 整型變量整型變量int ai, bi, ci, di = 0;ai = 1;bi = -27;ci = 012;整型變量的值是整數(shù),它的取值范圍有限最小取值范圍 32768,32767精選課件2.2.3 整型數(shù)據(jù)的輸入輸出整型數(shù)據(jù)的輸入輸出printf(格式控制格式控制, 輸出參數(shù)輸出參數(shù)1, . , 輸出參數(shù)輸出參數(shù)n);scanf(格式控制格式控制, 輸入?yún)?shù)輸入?yún)?shù)1, . , 輸入?yún)?shù)輸入?yún)?shù)n);格式控制說明 % %d:以十進

8、制形式輸入、輸出整數(shù) %o:以八進制形式輸入、輸出整數(shù) %x:以十六進制形式輸入、輸出整數(shù) 精選課件例例2-3# include void main( ) printf(%d, %o, %xn, 10, 10, 10); printf(%d, %d, %dn, 10, 010, 0 x10); printf(%d, %xn, 012, 012); 運行結(jié)果為:運行結(jié)果為: 10, 12, a 10, 8, 16 10, a001010精選課件例例2-4# include void main( ) int a, b; scanf(%o%d, &a, &b); printf(%d%5dn, a,

9、b); printf(%x, %dn, a, b); 輸入:輸入:17 17運行結(jié)果為:運行結(jié)果為:15 17f, 17精選課件2.3 實型數(shù)據(jù)實型數(shù)據(jù)2.3.1 實型常量實型常量(實數(shù)實數(shù))浮點表示:0.123 123.4 1.科學(xué)計數(shù)法:123e4 0.2e-12.3.2 實型變量實型變量單精度浮點型float x, y, z;雙精度浮點型double u, v, w;4字節(jié)存儲8字節(jié)存儲精選課件數(shù)據(jù)精度和取值范圍數(shù)據(jù)精度和取值范圍 數(shù)據(jù)精度 取值范圍單精度 七位有效數(shù)字 (10-38 1038)雙精度 十六位有效數(shù)字 (10308 10308 )精選課件l 數(shù)據(jù)數(shù)據(jù)精度精度 與與 取值范

10、圍取值范圍是兩個不同的概念:是兩個不同的概念: float x = 1.23456789; float y = 123456789; 雖在數(shù)據(jù)表示范圍內(nèi),但無法精確表達。 float z = 1.2e55 z的精度要求不高,但數(shù)據(jù)表示范圍超出。l并不是所有的實數(shù)都能在計算機中精確表示。并不是所有的實數(shù)都能在計算機中精確表示。l 實型常量的類型都是實型常量的類型都是doublex=1.234568y=1.234567e8精選課件2.3.3 實型數(shù)據(jù)的輸入和輸出實型數(shù)據(jù)的輸入和輸出l輸出 printf( )float 和和double使用相同的格式控制說明使用相同的格式控制說明%f:以小數(shù)形式輸出

11、浮點數(shù),保留以小數(shù)形式輸出浮點數(shù),保留6位小數(shù)。位小數(shù)。 %e:以指數(shù)形式輸出以指數(shù)形式輸出 位整數(shù)位整數(shù).5 位小數(shù)位小數(shù)位指數(shù)位指數(shù) 精選課件例2-5 實型數(shù)據(jù)的輸出實型數(shù)據(jù)的輸出# include void main( ) float f = 123.45; double d = 3.1415926; printf(%f, %en, f, f); printf(%f, %en, d, d); printf(%5.3f, %5.2f, %.2fn, d, d, d); 一共一共5位,小數(shù)位,小數(shù)3位,小數(shù)點一位位,小數(shù)點一位運行結(jié)果為:運行結(jié)果為:123.450000, 1.23450e+

12、023.141593, 3.14159e+003.142, 3.14, 3.14精選課件例2-6假定float的精度為7位,double的精度為16位 # include void main( ) float f; double d1, d2; f = 1234567890123.123456; d1 = 1234567890123.123456; d2 = 1234567890123.12; printf(f = %f n d1 = %f n d2 = %f n, f, d1, d2); 運行結(jié)果為:運行結(jié)果為: f = 1234567954432.000000 d1 = 123456789

13、0123.123540 d2 = 1234567890123.120120精選課件實型數(shù)據(jù)的輸入實型數(shù)據(jù)的輸入scanf( )float 和和double使用不同的格式控制說明使用不同的格式控制說明%f和和%e相同相同 %f : 以小數(shù)或指數(shù)形式輸入一個單精度浮點數(shù)%e%lf: 以小數(shù)或指數(shù)形式輸入一個雙精度浮點數(shù)%le 精選課件例2-7# include void main( ) float f1; double d1; scanf(%f%lf, &f1, &d1); printf(f1 = %f n d1 = %f n, f1, d1);輸入:輸入:12 1234567.12345運行結(jié)果

14、為:運行結(jié)果為:f1=12.000000d1=1234567.123450精選課件2.4 字符類型字符類型2.4.1 字符常量字符常量a A 9 + $ ASCII字符集:列出所有可用的字符每個字符:惟一的次序值( ASCII 碼)0-9A-Za-z精選課件2.4.1 字符常量字符常量字符的存儲字符的存儲在內(nèi)存中,每個字符占用一個字節(jié),存儲該字符的在內(nèi)存中,每個字符占用一個字節(jié),存儲該字符的ASCII碼碼字符字符 ASCII碼碼 內(nèi)存內(nèi)存A 65 0100 0001 B 66 0100 0010 字符的數(shù)值特征字符的數(shù)值特征字符可以當(dāng)整數(shù)用,ASCII碼A+1 =?精選課件2.4.2 字符變量

15、字符變量 char c1, c2, c3; c1=2; c2=#; c3=A; 或 c3=65; int i; i=65; 或 i=A; 整型變量和字符變量的定義和賦值可以互換 【 ASCII碼范圍】精選課件2.4.3 字符型數(shù)據(jù)輸入輸出字符型數(shù)據(jù)輸入輸出lscanf( )和printf( ) %cchar ch;scanf(%c, &ch);printf(%c, ch);lgetchar( )和putchar( )char ch;ch=getchar( );putchar(ch);輸入輸出一個字符精選課件例2-9# include void main( ) char ch1, ch2; ch

16、1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2);運行結(jié)果為:運行結(jié)果為:A#b輸入:輸入:Ab精選課件例2-10# include void main( ) char ch1, ch2, ch3; scanf(%c%c%c, &ch1, &ch2, &ch3); printf(%c%c%c%c%c, ch1, #, ch2, #, ch3);運行結(jié)果運行結(jié)果1為:為:A#b#C輸入輸入1:AbC運行結(jié)果運行結(jié)果2為:為:A# #b輸入輸入2:A bC精選課件輸入數(shù)據(jù)包括字符和數(shù)值的混合輸入數(shù)據(jù)包括字符和數(shù)值的

17、混合# include void main( ) int i; char c; float x ; scanf(%d%c%f, &i, &c, &x ); printf( %d %c %f, i, c, x );輸入:3a1.2輸出:3 a 1.200000 數(shù)據(jù)之間不能用空格等間隔,也不需要單引號精選課件例2-11已知:b的ASCII碼98# include void main( ) printf(%c,%dn, b, b); printf(%c,%dn, 98, 98); printf(%c,%dn, 97, b-1);運行結(jié)果為:運行結(jié)果為:b,98b,98a,970110 0010b9

18、8b98精選課件# include void main( ) char ch=b; printf(%c,%dn, ch, ch);0110 0010b9814262b9801420 x62 printfb %c putchar98 %d142 %o62 %x scanfb %c getchar98 %d142 %o62 %xscanf(%c, &ch);精選課件字符運算字符運算l大小寫英文字母轉(zhuǎn)換大小寫英文字母轉(zhuǎn)換 b - a = B - A z - a = Z - A m M l數(shù)字字符和數(shù)字數(shù)字字符和數(shù)字 9 - 0 = 9 - 0 9 = 9 + 08 8a-AA-a0lm - a +

19、A = MlM - A + a = ml8 - 0 = 8l8 + 0 = 8精選課件2.4.4 轉(zhuǎn)義字符轉(zhuǎn)義字符l反斜杠后跟一個字符或數(shù)字l字符常量,代表一個字符 n 101 x41 Al所有字符都可以用轉(zhuǎn)義字符表示精選課件2.5 表達式表達式2.5.1 算術(shù)表達式算術(shù)表達式l算術(shù)運算符算術(shù)運算符單目 + - + -雙目 + - * / %注意!注意!l % 模(求余) 整型數(shù)據(jù)565,941,10040l / 整數(shù)除整數(shù),得整數(shù)1/20,9/42l雙目運算符兩側(cè)操作數(shù)的類型要相同精選課件算術(shù)運算符的優(yōu)先級和結(jié)合性算術(shù)運算符的優(yōu)先級和結(jié)合性單目 + - + -雙目 * / %雙目 + -高高

20、低從右向左-5+3%2 = (-5)+(3%2) = -43*5%3 = (3*5)%3 = 0-i+ -(i+)精選課件算術(shù)表達式算術(shù)表達式例例2-15 數(shù)學(xué)式數(shù)學(xué)式 - C表達式表達式s(s-a)(s-b)(s-c)(x+2)e2xs*(s-a)*(s-b)*(s-c)(x+2)*exp(2*x)精選課件2.5.2 賦值賦值表達式表達式l賦值運算符賦值運算符 = =l賦值表達式賦值表達式變量表達式l計算賦值運算符右側(cè)表達式的值l將賦值運算符右側(cè)表達式的值賦給左側(cè)的變量l將賦值運算符左側(cè)的變量的值作為表達式的值n = 2;n = n+1;l賦值運算符的優(yōu)先級和結(jié)合性賦值運算符的優(yōu)先級和結(jié)合性

21、優(yōu)先級較低,從右向左x=y=3; x=(y=3)精選課件例例 大小寫字母轉(zhuǎn)換大小寫字母轉(zhuǎn)換輸入一個小寫字母,輸出對應(yīng)的大寫字母。輸入一個小寫字母,輸出對應(yīng)的大寫字母。# include void main( ) char ch ; scanf(%c, &ch); ch = ch - a + A; printf(%cn, ch); 精選課件2.5.3 逗號逗號表達式表達式l表達式表達式1, 表達式表達式2, ,表達式,表達式n先計算表達式,然后計算表達式,,最后計算表達式n的值,并將表達式n的值作為逗號表達式的值.l逗號運算符的優(yōu)先級最低,從左向右逗號運算符的優(yōu)先級最低,從左向右a = (3+5

22、 , 4*6 ) a = 3+5 , 4*6 a=24a=8精選課件自增運算符和自減運算符自增運算符和自減運算符l自增運算符自增運算符 + 和自減運算符和自減運算符 -int n,n+ +n n- -n (只適合變量運算)使變量的值增1或減1+n n+ n=n+1-n n- n=n-1取變量的值作為表達式的值+n:n=n+1;取n值作為表達式+n的值n+:取n值作為表達式n+的值;n=n+1精選課件自增運算和自減運算自增運算和自減運算int i, k;i=2;k=+i;i=2;k=i+;i=3i=3k=3k=2k=ii=i+1i=i+1k=i精選課件例例2-17#include void ma

23、in( ) int a, b, c; b=5; c=5; a=+b+c-; printf(%d,%d,%dn, a, b, c); a=b-c; printf(%d,%d,%dn, a, b, c); a=-b+c; printf(%d,%d,%dn, a, b, c);b=b+1, a=b+c, c=c-1a=b-c, b=b-1a=-(b+)+ca=(b-)-ca=-b+c, b=b+1精選課件復(fù)合算術(shù)賦值運算符復(fù)合算術(shù)賦值運算符l賦值運算符賦值運算符簡單賦值運算符 =復(fù)合(算術(shù))賦值運算符 += -= *= /= %=l賦值表達式賦值表達式變量 賦值運算符 表達式x += expx =

24、x + (exp) 精選課件例例2-18#include void main( ) int x, y, z; z=(x=7)+(y=3); printf(%d,%d,%dn, x, y, z); x=y=z=x+2; printf(%d,%d,%dn, x, y, z); x*=y-3; printf(%d,%d,%dn, x, y, z);x=7, y=3, z=x+yz=x+2, y=z, x=zx=x*(y-3)精選課件2.6 數(shù)據(jù)的存儲和類型轉(zhuǎn)換數(shù)據(jù)的存儲和類型轉(zhuǎn)換2.6.1 數(shù)據(jù)的存儲數(shù)據(jù)的存儲l整型數(shù)據(jù)的存儲整型數(shù)據(jù)的存儲設(shè)整數(shù)占2個字節(jié)1 000 0001 1000 00010

25、000 0001 1000 0001符號位符號位1:負數(shù):負數(shù)0:正數(shù):正數(shù)精選課件原碼原碼 反碼反碼 補碼補碼正數(shù)的原碼、反碼和補碼相同1的補碼 0 000 0000 0000 000132767的補碼 0 111 1111 1111 1111(215-1)負數(shù) -1l原碼 1 000 0000 0000 0001 l反碼 1 111 1111 1111 1110 原碼取反l補碼 1 111 1111 1111 1111 反碼1精選課件原碼原碼 反碼反碼 補碼補碼32767補碼 0 111 1111 1111 1111-32767原碼 1 111 1111 1111 1111反碼 1 000

26、 0000 0000 0000 原碼取反補碼 1 000 0000 0000 0001 反碼1-32768 = -32767-1補碼 1 000 0000 0000 0000精選課件 -32768 -1 0 1 32767 32767 0111 1111 1111 1111 1 0000 0000 0000 0001 0 0000 0000 0000 0000 -1 1111 1111 1111 1111 -2 1111 1111 1111 1110 -32767 1000 0000 0000 0001 -32768 1000 0000 0000 000032768 = 32767+11000

27、 0000 0000 0000 = -32768-32769 = -32768-10111 1111 1111 1111 = 32767精選課件實型和字符型數(shù)據(jù)的存儲實型和字符型數(shù)據(jù)的存儲l實型數(shù)據(jù)的存儲實型數(shù)據(jù)的存儲-1.2345e+02符號位 階碼 尾數(shù)l字符型數(shù)據(jù)的存儲字符型數(shù)據(jù)的存儲一個字節(jié)存儲ASCII碼精選課件2.6.2 整數(shù)類型的擴展整數(shù)類型的擴展有符號 無符號 數(shù)據(jù)長度int unsigned int 16或32short int unsigned short int 16long int unsigned long int 32無符號 unsigned設(shè)整數(shù)占2個字節(jié)0000

28、 0000 0000 0000 01111 1111 1111 1111 65535(216-1)精選課件整數(shù)類型的最小取值范圍整數(shù)類型的最小取值范圍int -3276832767 (-215215-1)short intlong int -2147483648 2147483647 (-231231-1)unsigned int 065535 (0216-1)unsigned short int unsigned long int 04294967295 (0232-1)精選課件整型常量的表示整型常量的表示l不能超出整型數(shù)據(jù)的取值范圍不能超出整型數(shù)據(jù)的取值范圍l比長整型數(shù)還要大的數(shù)只能用實數(shù)

29、來表示比長整型數(shù)還要大的數(shù)只能用實數(shù)來表示l整型常量的類型整型常量的類型整數(shù)后的字母后綴l123L longl123U unsignedl123LU unsigned long數(shù)值精選課件整型數(shù)據(jù)的輸入輸出整型數(shù)據(jù)的輸入輸出printf(格式控制格式控制, 輸出參數(shù)輸出參數(shù)1, . , 輸出參數(shù)輸出參數(shù)n);scanf(格式控制格式控制, 輸入?yún)?shù)輸入?yún)?shù)1, . , 輸入?yún)?shù)輸入?yún)?shù)n);格式控制說明 % 十進制 八進制 十六進制int %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned long %lu %lo %lx精選課件例例2-19#include void main( ) int ai; long cl; unsigned bu; unsigned long dul; ai = 32767; bu = 65535U; cl = -2147483648L; dul = 4294967295LU; printf(%d,%u,%ld,%lun,ai, bu, cl, dul); printf(%x,%x,%lx,%lxn,ai, bu, cl, dul);7fff, ffff, 8000

溫馨提示

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

評論

0/150

提交評論