Chap2基本數(shù)據(jù)類型_第1頁
Chap2基本數(shù)據(jù)類型_第2頁
Chap2基本數(shù)據(jù)類型_第3頁
Chap2基本數(shù)據(jù)類型_第4頁
Chap2基本數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言程序設計語言程序設計 南通大學地科院南通大學地科院C語言程序設計語言程序設計 南通大學地科院南通大學地科院第二章C語言程序設計語言程序設計 南通大學地科院南通大學地科院本章要點本章要點C語言程序設計語言程序設計 南通大學地科院南通大學地科院4計算機中數(shù)的表示及進制轉換 數(shù)碼、基與權數(shù)碼:表示數(shù)的符號基:數(shù)碼的個數(shù)權:每一位所具有的值 數(shù)制2.0 預備知識C語言程序設計語言程序設計 南通大學地科院南通大學地科院各種進制之間的轉換n二進制、八進制、十六進制轉換成十進制 方法:按權相加10012345259212120212121111011)()(例10012894868381136)()(

2、例1001231679781610162161516121)()(例AFC語言程序設計語言程序設計 南通大學地科院南通大學地科院6各種進制之間的轉換(整數(shù))n 二進制、八進制、十六進制轉換成十進制n 十進制轉換成二進制、八進制、十六進制方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例 把十進制數(shù)459轉換成十六進制數(shù)4591628161160(459)10=(1CB)161 C B 余11余12余 1方法:按權相加C語言程序設計語言程序設計 南通大學地科院南通大學地科院n 二進制與八進制之間的轉換二進制與八進制之間的轉換l 二進制轉換成八進制: 從右向左,每3位一組(不足3位左補0),轉換成八

3、進制l 八進制轉換成二進制: 用3位二進制數(shù)代替每一位八進制數(shù)例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 7C語言程序設計語言程序設計 南通大學地科院南通大學地科院8n二進制與十六進制之間的轉換二進制與十六進制之間的轉換l 二進制轉換成十六進制: 從右向左,每4位一組(不足4位左補0),轉換成十六進制l 十六進制轉換成二進制: 用4位二進制數(shù)代替每一位十六進制數(shù)例 (11010101111101)2=(0011,0101,0

4、111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 FC語言程序設計語言程序設計 南通大學地科院南通大學地科院字節(jié)和位字節(jié)和位 內存以字節(jié)為單元組成 每個字節(jié)有一個地址 一個字節(jié)一般由8個二進制位組成 每個二進位的值是0或101234567012345678910.7643251C語言程序設計語言程序設計 南通大學地科

5、院南通大學地科院數(shù)值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值 反碼: 正數(shù):反碼與原碼相同 負數(shù):符號位為1,其余位對原碼取反 補碼: 正數(shù):原碼、反碼、補碼相同 負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加13126912457810119-5=49+7=16=(14)12C語言程序設計語言程序設計 南通大學地科院南通大學地科院11(用一字節(jié)表示數(shù))原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-010000000111111110

6、0000000數(shù)的范圍0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)負數(shù)補碼轉換成十進制數(shù):最高位不動,其余位取反加1例 補碼:11111001 取反:10000110 加1: 10000111=-7C語言程序設計語言程序設計 南通大學地科院南通大學地科院1201 11 11 11 11 11 11 11int型:最大:3276710 00 00 00 00 00 00 00最小:-3276811 11 11 11 11 11 11 11unsigned int型:最大:6553500

7、 00 00 00 00 00 00 00最小:0C語言程序設計語言程序設計 南通大學地科院南通大學地科院13數(shù)制基權表示數(shù)碼特點10,10,10,十進制數(shù)0910逢十進一二進制數(shù)0122,2,2,逢二進一八進制數(shù)0788,8,8,逢八進一十六進制數(shù)09,AF,af1616,16,16,逢十六進一十進制:4956= 410+910 +510+610二進制:1011=12+02 +12+12十六進制:81AE=816+116 +1016+1416八進制:4275=48+28 +78+58C語言程序設計語言程序設計 南通大學地科院南通大學地科院2.1 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型總表C數(shù)據(jù)類型基本類型

8、構造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整 型實型單精度型float雙精度型double數(shù)組結構體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進行的操作C語言程序設計語言程序設計 南通大學地科院南通大學地科院15基本數(shù)據(jù)類型基本數(shù)據(jù)類型類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716un

9、signed int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127無unsigned char80255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBM PC機為例:請看int和unsigned intC語言程序設計語言程序設計 南通大學地科院南通大學地科院 2.2 常量與變量2.2.1 常量和符號常量常量和符號常量 在程序運行過程中,其值不能被改變的量稱為常量 常量區(qū)分為不同的類型:整型 100,125,-

10、100,0實型 3.14 , 0.125,-3.789字符型 a , b , 2字符串 a, b , abC語言程序設計語言程序設計 南通大學地科院南通大學地科院例2.1 符號常量的使用#include #define PRICE 30 void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); 用一個標識符代表一個常量。一般用大寫字母。符號常量的值在其作用域內不能改變,也不能再被賦值。 運行結果:運行結果: total=300total=300如再用賦值語句給PRICE賦值是錯的 PRIC

11、E=40;/* 錯誤,不能給符號常量賦值是宏定義預處理命令,不是是宏定義預處理命令,不是C語句語句C語言程序設計語言程序設計 南通大學地科院南通大學地科院18整型常量(整常數(shù))整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字09和正負號表示.如 123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011十六進制整數(shù):由0 x開頭,后跟09,af,AF表示. 如0 x123,0Xff例 12 與 12L例 30000 為int型 65536 為long int 型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認為它是long int 型常量問題:012

12、3 = ( )100 x123 = ( )100Xff = ( )1083291255問題:0123 = ( )100 x123 = ( )100Xff = ( )10C語言程序設計語言程序設計 南通大學地科院南通大學地科院19實型常量(實數(shù)或浮點數(shù))實型常量(實數(shù)或浮點數(shù))表示形式:十進制數(shù)形式:(必須有小數(shù)點必須有小數(shù)點) 如0.123, .123, 123.0, 0.0, 123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 實型常量的類型默認默認double型型在實型常量后加字母f或F,認為它是floa

13、t 型C語言程序設計語言程序設計 南通大學地科院南通大學地科院20aaa字符常量字符常量20定義:用單撇號單撇號括起來的單個普通字符或轉義字符字符常量的值:該字符的ASCII碼值b C語言程序設計語言程序設計 南通大學地科院南通大學地科院 編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。 建議變量名的長度最好不要超過8個字符。 在選擇變量名和其它標識符時,應注意做到“見名知意”,即選有含意的英文單詞 (或其縮寫)作標識符。 要求對所有用到的變量作強制定義,也就是“先定義,后使用” 。C語言程序設計語言程序設計 南通大學地科院南通大學地科院25 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,

14、變量n;編譯程序根據(jù)變量定義為其分配指定字節(jié)的內存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內存1-3隨機數(shù)變量初始化:定義時賦初值 例: int a,b,c; float data;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符變量的使用:先定義,后使用例1 int student; stadent=19; /Undefined symbol stadent in function main 例2 float a,b,c; c=a%b; /Illegal use of floating point in function main 變量定義位置:一般放在函數(shù)開頭ma

15、in() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data); 變量定義可執(zhí)行語句例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1; C語言程序設計語言程序設計 南通大學地科院南通大學地科院26 占字節(jié)數(shù)隨機器不同而不同,一般占2B shortintlong 可用sizeof(類型標識符)測量整型變量整型變量 實型變量實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供1516位有效數(shù)字字符

16、型變量字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術運算例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */沒有字符串變量,用字符數(shù)組存放C語言程序設計語言程序設計 南通大學地科院南通大學地科院字符數(shù)據(jù)在內存中的存儲形式及其使用方法字符數(shù)據(jù)在內存中的存儲形式及其使用方法 一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意: 一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。字符型數(shù)

17、據(jù)字符型數(shù)據(jù) C語言程序設計語言程序設計 南通大學地科院南通大學地科院例:大小寫字母的轉換#include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c c,c1,c2); 程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。語言允許字符數(shù)據(jù)與整數(shù)直接進行算術運算。 運行結果:運行結果: C語言程序設計語言程序設計 南通大學地科院南通大學地科院29隱式轉換什么情況下發(fā)生運算轉換運算轉換-不同類型數(shù)據(jù)混合運算時不同類型數(shù)據(jù)混合運

18、算時賦值轉換賦值轉換-把一個值賦給與其類型不同的變量時把一個值賦給與其類型不同的變量時輸出轉換輸出轉換-輸出時轉換成指定的輸出格式輸出時轉換成指定的輸出格式函數(shù)調用轉換函數(shù)調用轉換-實參與形參類型不一致時轉換實參與形參類型不一致時轉換運算轉換規(guī)則:不同類型數(shù)據(jù)運算時先自動自動轉換成同一類型2.3 不同類型數(shù)據(jù)間的轉換不同類型數(shù)據(jù)間的轉換C語言程序設計語言程序設計 南通大學地科院南通大學地科院30例1doublefloatlongunsignedintchar,short低高說明:必定的轉換運算對象類型不同時轉換 char ch; int i; float f; double d;ch/i +

19、f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +I * f - d / l例2 int i; float f; double d; long l;C語言程序設計語言程序設計 南通大學地科院南通大學地科院31一般形式:一般形式:(類型名類型名)(表達式)表達式) 例例: (int)(x+y): (int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 說

20、明:強制轉換得到所需類型的中間變量,原說明:強制轉換得到所需類型的中間變量,原變量類型不變變量類型不變 顯式轉換(強制轉換)顯式轉換(強制轉換)例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結果:x=3.600000,i=3較高類型向較低類型轉換時可能發(fā)生精度損失問題C語言程序設計語言程序設計 南通大學地科院南通大學地科院322.4 運算符和表達式C運算符算術運算符:(+ - * / % + -)關系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及

21、其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節(jié)數(shù) :(sizeof)強制類型轉換:(類型)分量運算符:(. -)下標運算符:()其它 :(( ) -)C語言程序設計語言程序設計 南通大學地科院南通大學地科院33 運算符功能 與運算量關系要求運算量個數(shù)要求運算量類型 運算符優(yōu)先級別 語言規(guī)定了運算符的優(yōu)先級。語言規(guī)定了運算符的優(yōu)先級。 在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行。 例如先乘除后加減。 結合方向 規(guī)定了各種運算符的結合方向規(guī)定了各種運算符的結合方向( (結合性結合性) ) 例如算術運算符的結合方向為“自左至右”,即先左后右 。 結果的類型學

22、習運算符應注意學習運算符應注意: :C語言程序設計語言程序設計 南通大學地科院南通大學地科院34 基本算術運算符: + - * / %結合方向:從左向右優(yōu)先級: - -* / % - + - (2) (3) (4)說明: “-”可為單目運算符時,右結合性兩整數(shù)相除,結果為整數(shù)兩整數(shù)相除,結果為整數(shù)%要求兩側均為整型數(shù)據(jù)算術運算符和表達式算術運算符和表達式例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%22-2.51-110()C語言程序設計語言程序設計 南通大學地科院南通大學地科院35自增、自減運算符自增、自減運算符+ -+ -35作用:使變量值

23、加作用:使變量值加1 1或減或減1 1種類:種類:前置前置 +i, -i (+i, -i (先執(zhí)行先執(zhí)行i+1i+1或或i-1i-1,再使用,再使用i i值)值)后置后置 i+, i- (i+, i- (先使用先使用i i值值, , 再執(zhí)行再執(zhí)行i+1i+1或或i-1i-1)說明:說明:+ - + - 不能用于常量和表達式不能用于常量和表達式, ,如如5+5+,(a+b)+(a+b)+ -+ -結合方向:結合方向: 自右向左自右向左優(yōu)先級:優(yōu)先級:- + - - + - -* * / % -+ - / % -+ - (2) (3) (4) 例 -i+ -(i+) i=3; printf(“%d

24、”,-i+); /-3 例 j+k; (j+)+k;例例 -i+-i+ i=3; printf( i=3; printf(“%d%d”,-i+);,-i+); C語言程序設計語言程序設計 南通大學地科院南通大學地科院36 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+, i- (先使用i值,再執(zhí)行i+1或i-1)36例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,

25、a=4/c=15,a=4C語言程序設計語言程序設計 南通大學地科院南通大學地科院37 簡單賦值運算符符號: =格式: 變量標識符=表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量賦值運算符和表達式賦值運算符和表達式37復合賦值運算符種類:+= -= *= /= %= = = &= = |=為便于記憶,可以這樣理解:為便于記憶,可以這樣理解: a += b (其中a為變量,b為表達式) a += b(將有下劃線的“a+”移到“=”右側) |_ a = a + b (在“=”左側補上變量名a) a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(

26、); c=d+2;C語言程序設計語言程序設計 南通大學地科院南通大學地科院38說明(說明(1 1):):38賦值表達式的值與變量值相等,且可嵌套賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;則 f=10.0例 int i; i=2.56; /結果i=2;例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表達式值為5,a,b,c值為5/ b=5;a=5/表達式值11,c=6,a=11/表達式值10,a=10,b=4,c=6/表達

27、式值5,a=5,b=10,c=2 結合方向:結合方向:自右向左自右向左 優(yōu)先級: 12 左側必須是變量,不能是常量或表達式C語言程序設計語言程序設計 南通大學地科院南通大學地科院3939例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等價于a=a+(a=a-(a*a)/a=0 等價于a=a+(a=a*(a=a-(a=a*3)C語言程序設計語言程序設計 南通大學地科院南通大學地科院 將賦值表達式作為表達式的一種,使賦值操將賦值表達式作為表達式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而且可以以表作不僅可以出現(xiàn)在賦值語句中

28、,而且可以以表達式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)達式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)語句等)中。語句等)中。 如:如:printf(%d,a=b); 分析分析: :如果b的值為3, 則輸出a的值(也是表達式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。C語言程序設計語言程序設計 南通大學地科院南通大學地科院41 形式:表達式1,表達式2,表達式n 結合性:從左向右 優(yōu)先級:逗號運算符是所有運算符中級別最低最低的 逗號表達式的值:等于表達式n的值 用途:常用于循環(huán)for語句中逗號運算符和表達式逗號運算符和表達式41例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a

29、=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表達式值60/a=15,表達式值20/賦值表達式,表達式值18,x=18/逗號表達式,表達式值18,x=3/1,2,3/3,2,3例:#include Void main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);運行結果:x=3C語言程序設計語言程序設計 南通大學地科院南通大學地科院注意注意: :并不是任何地方出現(xiàn)的逗號都是作為逗號運算

30、符。例如函數(shù)參數(shù)也是用逗號來間隔的。 如如: printf(“%d,%d,%d”,a,b,c);“,”并不是一個逗號表達式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c) “(,)”是一個逗號表達式,它的值等于的值。 C語言程序設計語言程序設計 南通大學地科院南通大學地科院43 關系運算符 種類: = != 結合方向:自左向右 優(yōu)先級別:關系運算符和表達式關系運算符和表達式=!=優(yōu)先級6(高)優(yōu)先級7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)關系表達式的值:是邏輯值“真”或“假”,用1和0

31、表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達式值1/表達式值1/表達式值0/d=1/f=0C語言程序設計語言程序設計 南通大學地科院南通大學地科院關系運算注意(關系運算注意(1)例 若a=0; b=0.5; x=0.3; 則 a=x278在C中是允許的, 值為0例 int i=1, j=7,a; a=i+(j%4!=0); 則a=2例 a0 結果為 A100 結果為10C語言程序設計語言程序設計 南通大學地科院南通大學地科院45關系運算注意(關系運算注意(2)例 注意區(qū)分“=”與“=” int a=0,b=1; if(a=b) printf(

32、“a equal to b”); else printf(“a not equal to b”);例 應避免對實數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結果為可改寫為:fabs(1.0/3.0*3.0-1.0)1e-60 C語言程序設計語言程序設計 南通大學地科院南通大學地科院46 邏輯運算符 種類: ! & | 邏輯運算真值表邏輯運算符和表達式(邏輯運算符和表達式(1)ab!a!ba&ba|b真假真假假假真真C語言中,運算量: 0表示“假”, 非0表示“真”, 運算結果: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真C語言程序設計語言程序設計

33、 南通大學地科院南通大學地科院47邏輯運算符和表達式(邏輯運算符和表達式(2)! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|abl優(yōu)先級:l結合方向:! :從右向左& :從左向右| :從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)C語言程序設計語言程序設計 南通大學地科院南通大學地科院48邏輯運算符和表達式(邏輯運算符和表達式(3)! (2)& (11)| (12)高低l優(yōu)先級:l結合方向:! :從右向左& :從左向右| :從左向右例 a=4;b

34、=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)/結果m=0,n=1C語言程序設計語言程序設計 南通大學地科院南通大學地科院條件運算符與表達式 一般形式: expr1 ? expr2 : expr3 執(zhí)行過程 功能:相當于條件語句,但不能取代一般if語句50例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取expr2值取expr3值非

35、0=0例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d)expr1、expr2、expr3類型可不同,表達式值取較高的類型例 x?a:b /x=0,表達式值為b; x0,表達式值為a xy?1:1.5 /xy ,值為1.0; xy ,值為1.5C語言程序設計語言程序設計 南通大學地科院南通大學地科院51#include Void main() int a,b,c; a=30; b=40; c=a; a=b; b=c; printf(a=%d,b=%d,a,b);總結:通過本例理解總結:通過本

36、例理解變量是可變的量,可以不變量是可變的量,可以不斷的被賦以新值,只保留斷的被賦以新值,只保留最新值。最新值。例題:定義變量,為它們賦值,互換例題:定義變量,為它們賦值,互換兩個變量的值。兩個變量的值。C語言程序設計語言程序設計 南通大學地科院南通大學地科院52常量后綴常量后綴 L或l 長整型 U或u 無符號數(shù) F或f 浮點數(shù)常量類型常量類型 整數(shù),長整數(shù),無符號數(shù),浮點數(shù),字符,字符串,符號常數(shù),轉義字符。數(shù)據(jù)類型轉換數(shù)據(jù)類型轉換 自動轉換:在不同類型數(shù)據(jù)的混合運算中,由系統(tǒng)自動實現(xiàn)轉換,由少字節(jié)類型向多字節(jié)類型轉換。不同類型的量相互賦值時也由系統(tǒng)自動進行轉換,把賦值號右邊的類型轉換為左邊的

37、類型。強制轉換:由強制轉換運算符完成轉換。小結小結C語言程序設計語言程序設計 南通大學地科院南通大學地科院53運算符優(yōu)先級和結合性運算符優(yōu)先級和結合性 一般,單目運算符優(yōu)先級較高,賦值運算符優(yōu)先級低。算術運算符優(yōu)先級較高,關系和邏輯運算符優(yōu)先級較低。多數(shù)運算符具有左結合性,單目運算符、三目運算符、賦值運算符具有右結合性。表達式表達式 表達式是由運算符連接常量、變量、函數(shù)所組成的式子。每個表達式都有一個值和類型。表達式求值按運算符的優(yōu)先級和結合性所規(guī)定的順序進行。C語言程序設計語言程序設計 南通大學地科院南通大學地科院54格式: putchar( c )參數(shù): c為字符常量、變量或表達式功能:把

38、字符c輸出到顯示器上返值:正常,為顯示的代碼值;出錯,為EOF(-1)2.5 數(shù)據(jù)輸入與輸出5C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)5 #include 2.5.1 數(shù)據(jù)輸出 字符輸出函數(shù)C語言程序設計語言程序設計 南通大學地科院南通大學地科院55#include Void main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a);運行結果:A B例C語言程序設計語言程序設計 南通大學地科院南通大學地科院56格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)返值:正常,返回輸出字節(jié)數(shù);出錯

39、,返回EOF(-1) 格式輸出函數(shù)v輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)v格式控制串:包含兩種信息l格式說明: %修飾符格式字符 ,用于指定輸出格式l普通字符或轉義序列:原樣輸出v格式字符C語言程序設計語言程序設計 南通大學地科院南通大學地科院57d,ix,Xoucse,Efg%格式字符格式字符:十六進制無符號整數(shù)不帶符號十進制整數(shù)十進制整數(shù)指數(shù)形式浮點小數(shù)單一字符字符串八進制無符號整數(shù)小數(shù)形式浮點小數(shù)e和f中較短一種百分號本身int a=567;printf ( “%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);

40、int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.789%l說明u格式字符要用小寫u格式字符與輸出項個數(shù)應相同,按先后順序一一對應u輸出轉換:格式字符與輸出項類型不一致,自動按指定格式輸出例 main() unsigne

41、d int u=65535; printf(”u=%dn,u); 輸出結果:u=-1例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); 例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);輸出結果: 3 4 a=3, b=4C語言程序設計語言程序設計 南通大學地科院南通大學地科院58 附加格式說明符(修飾符).n對實數(shù),指定小數(shù)點后位數(shù)(四舍五入)對字符串,指定實際輸出位數(shù)修飾符功 能m輸出數(shù)據(jù)域寬,數(shù)據(jù)長度m,左補空格;否則按實際輸出輸出數(shù)

42、據(jù)在域內左對齊(缺省右對齊)-指定在有符號數(shù)的正數(shù)前顯示正號(+)+輸出數(shù)值時指定左面不使用的空位置自動填00在八進制和十六進制數(shù)前顯示前導0,0 x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型lC語言程序設計語言程序設計 南通大學地科院南通大學地科院59例 int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f); printf(“%3cn”,ch);運行 1234,1234結果: 123.

43、456000,123.456000, 123.5,123.46,1.23e+02 a例 static char a=“Hello,world!” printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);運行結果:Hello,world! Hello,world! Hello Hello Hel C語言程序設計語言程序設計 南通大學地科院南通大學地科院60例 int a=1234; float f=123.456; static char c=“Hello,world!”; printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-

44、10.1fn”,f,f); printf(“%10.5s,%-10.3sn”,c,c);運行結果: 1234,1234 123.46,123.5 Hello,Hel 例 -C語言程序設計語言程序設計 南通大學地科院南通大學地科院61例 int a=1234; float f=123.456; printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%0+8dn”,a); printf(“0+10.2fn”,f); 例 int a=123; printf(“%o,%#o,%X,%#Xn”,a,a,a,a); 例 #例 long a=65536; prin

45、tf(“%d,%8ldn”,a, a); 例 l/00001234/0000123.46/000+1234/000+123.56/173,0173,7B,0X7B/0, 65536C語言程序設計語言程序設計 南通大學地科院南通大學地科院62格式:getchar( )功能:從鍵盤讀一字符返值:正常,返回讀取的代碼值;出錯,返回EOF(-1) 數(shù)據(jù)輸入數(shù)據(jù)輸入 字符輸入函數(shù) 例 #include Void main() int c; printf(Enter a character:); c=getchar(); printf(%c-hex%xn,c,c);運行結果:Enter a charact

46、er:AA-hex41C語言程序設計語言程序設計 南通大學地科院南通大學地科院 格式輸入函數(shù)格式: scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲單元中,并按回車鍵結束返值:正常,返回輸入數(shù)據(jù)個數(shù)v地址表:變量的地址,常用取地址運算符&v格式字符:d,i,o,x,u,c,s,f,e例 scanf(“%d”,&a); 輸入:10 則 a=10例 scanf(“%x”,&a); 輸入:11 則 a=17C語言程序設計語言程序設計 南通大學地科院南通大學地科院64 附加格式說明符(修飾符)l修飾符功 能hm*用于d,o,x前,指定輸

47、入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉換字符則結束抑制符,指定輸入項讀入后不賦給變量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 輸入 19991015 則1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 輸入 12345678765.43 則123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 輸入 1234567 則12a, 67b例 sc

48、anf(“%3c%2c”,&c1,&c2); 輸入 abcde 則ac1, d c2C語言程序設計語言程序設計 南通大學地科院南通大學地科院 輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符例 scanf(“%d %o %x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c); 輸入 123 123 123 輸出 a=123,b=83,c=291例 scanf(“%d:%d:%d”,&h,&m,&s); 輸入 12:30:45 則12 h, 30 m

49、, 45 s例 scanf(“%d,%d”,&a,&b) 輸入 3,4 則3a, 4 b例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 輸入 a=12,b=24,c=36 不能企圖用格式控制符來規(guī)定輸入數(shù)據(jù)的精度不能企圖用格式控制符來規(guī)定輸入數(shù)據(jù)的精度scanf(“%7.2f”,&a)C語言程序設計語言程序設計 南通大學地科院南通大學地科院 說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入如 scanf(“%c%c%c”,&c1,&c2,&c3); 若輸入abc 則ac1, c2, b c3

50、l輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)結束:u遇空格、TAB、或回車u遇寬度結束u遇非法輸入如 scanf(“%d%c%f”,&a,&b,&c); 若輸入1234a123o.26 則 1234 a, a b, 123 cl輸入函數(shù)留下的“垃圾”:例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10例 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x

51、=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10解決方法:或“%*c”來“吃掉”例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch);或 scanf(“%*c%c”,&ch); C語言程序設計語言程序設計 南通大學地科院南通大學地科院67 3.3 程序舉例#include #include Void main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)

52、*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area);例 輸入三角形邊長,求面積輸入:3,4,6 輸出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33)()()()(21csbsassareacbas文件包含預處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)兩整數(shù)相除,兩整數(shù)相除,結果為整數(shù)結果為整數(shù)C語言程序設計語言程序設計 南通大學地科院南通大學地科院68例 從鍵盤輸入大寫字母,用小寫字母輸出#include Void main() char c1,c2;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論