語言程序設(shè)計基礎(chǔ).ppt_第1頁
語言程序設(shè)計基礎(chǔ).ppt_第2頁
語言程序設(shè)計基礎(chǔ).ppt_第3頁
語言程序設(shè)計基礎(chǔ).ppt_第4頁
語言程序設(shè)計基礎(chǔ).ppt_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言基本符號”字母,2,C語言使用的全部字符是ASCII碼字符集: 前32個及第127個為控制字符完成規(guī)定的功能操作 序號從32到126是文字字符,它們用于顯示和打?。?4857數(shù)字:0、1、2 6590大寫英文字母:A 、B 、C 97122小寫英文字母:a、b、c 其他可打印的字符:!、 空白字符:空格符、換行符、制表符(跳格)等,C語言基本符號,3,專用符號:+= 變量初始化:定義時賦初值 數(shù)據(jù)類型 變量1=常量1,變量2 =常量2 ,變量n =常量n,16,int a; int m,n; float x,y,z; char ch,int a=1; int m=3,n=2; float

2、 x=0.3,y=.36,z=123; char ch=a,先定義 后使用,整型變量,整型數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,比如,17,實際上,數(shù)值是以補(bǔ)碼(complement)表示的。一個正數(shù)的補(bǔ)碼和其原碼的形式相同。下圖就是用補(bǔ)碼形式表示的。如果數(shù)值是負(fù)的,在內(nèi)存中如何用補(bǔ)碼形式表示呢?求負(fù)數(shù)補(bǔ)碼的方法是:將該數(shù)的絕對值的二進(jìn)制形式,按位取反再加1,整型變量,18,誰能說出為什么整型數(shù)的范圍是,整數(shù)10如何表示,實型數(shù)據(jù),在內(nèi)存中的存放形式: 常用的微機(jī)系統(tǒng)中一個實型數(shù)據(jù)(float)在內(nèi)存占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,實型數(shù)據(jù)是按照指數(shù)形式存儲

3、的。 例如:123.5678在內(nèi)在中存儲為,19,實型數(shù)據(jù),實型數(shù)據(jù)的舍入誤差: 由于實型變量是用有限的存儲單元存儲的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差。 單精度保證7位有效數(shù)學(xué);雙精度15位,20,不要試圖用一個實數(shù)去精確表示一個大整數(shù) 一般不要進(jìn)行“相等”判斷,而是判斷兩數(shù)差的絕對值小于某一個很小的數(shù)時則認(rèn)為兩者相等 避免直接將一個很大的實數(shù)與一個很小的實數(shù)相加或相減,否則會“丟失”這個很小的實數(shù) 根據(jù)實際要求選擇單精度或雙精度,字符變量,字符型變量用來存放字符常量,且只能存放一個字符 將一個字符常量放到一個字符變量中,實際上并不是把該字符

4、本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中,21,例如:字符a的ASCII代碼為97,b為98,在內(nèi)存中變量c1、c2的值,見右圖(a)所示;實際上是以二進(jìn)制形式存放的,見右圖(b)所示,字符變量,在C語言中沒有專門的字符串變量,字符串常量如果要存放在字符串變量中是通過字符數(shù)組的方式實現(xiàn)的,22,char c1,c2,c3,c4,c5,c; c1=a; c2=”a”; c3=abc ; c4=107; c5=6; c6=97,23,例:向字符變量賦以整數(shù)。 main ( ) char c1 , c2; c 1 = 97; c 2 = 98 ; printf (“ %

5、c %c n ”,c1,c2); printf (“ %d %d n ”,c1,c2 );,程序運行的結(jié)果: a b 97 98 可以看到:字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。它們既可以用字符形式輸出(用%c),也可以用整數(shù)形式輸出(%d)。 注意:字符數(shù)據(jù)只占一個字節(jié),它只能存放0 255范圍內(nèi)的一個整數(shù),例 :大小寫字母的轉(zhuǎn)換。 main ( ) char c1,c2; c1 = a ; c2 = b ; c1 = c1- 32; c2 = c2 - 32; printf (“ %c %c “,c1,c2);,運行結(jié)果為: A B 該程序的作用:將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。(從AS

6、CII代碼表中可以看到一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。) 注意:字符型數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值,舉例,25,重點與難點: 優(yōu)先級 結(jié)合性,算術(shù)運算符和算術(shù)表達(dá)式,基本的算術(shù)運算符: (加法運算符,或正值運算符。如:3+5、+3) (需要說明的是:兩個整數(shù)減法運算符,或負(fù)值運算符。如:5-2、-3) * (乘法運算符。如:3*5) / (除法運算符。如:5/3) % (模運算符,或稱求余運算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3) 除法運算符“/”的運算結(jié)果與運算對象有關(guān)。當(dāng)除數(shù)和被除數(shù)均為整數(shù)時,除的結(jié)果也是整數(shù);如果除數(shù)或被除數(shù)中有一個為負(fù)值,則舍入的方向是不固定

7、的。多數(shù)機(jī)器采取“向零取整”的方法,如:-5/3=-1,取整后向零靠攏,26,算術(shù)運算符和算術(shù)表達(dá)式,算術(shù)表達(dá)式和運算符的優(yōu)先級與結(jié)合性: 算術(shù)表達(dá)式:用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子。 運算對象包括常量、變量、函數(shù)等。 例如,a -b * c 是一個合法的C算術(shù)表達(dá)式,27,算術(shù)運算符和算術(shù)表達(dá)式,C規(guī)定了各種運算符的優(yōu)先級,上述表達(dá)式中,乘號優(yōu)先于減號,因此,相當(dāng)于a -( b*c )。如果在一個運算對象兩側(cè)的運算符的優(yōu)先級別相同,如:a - b + c ,則按規(guī)定的“結(jié)合方向”處理。 C規(guī)定了各種運算符的結(jié)合方向(結(jié)合性),算術(shù)運算符的結(jié)合方向為

8、“自左至右”,即先左后右,因此b先與減號結(jié)合,執(zhí)行a-b的運算,再執(zhí)行加c的運算,28,算術(shù)運算符和算術(shù)表達(dá)式,自增、自減運算符: 作用是使變量的值增1或減1。 + i ; - i ; (在使用i之前,先使i的值加(減)1) i+ ; i- ; (在使用i之后,使i的值加(減)1) 如果i的原值等于3,則執(zhí)行下面的賦值語句: j=+i;j的值為4 j=i+; j的值為3,29,算術(shù)運算符和算術(shù)表達(dá)式,自增、自減運算符: 注意: 自增運算符(+)和自減運算符(-),只能用于變量,而不能用于常量或表達(dá)式。如5+或(a+b)+都是不合法的。 +和-結(jié)合方向是“自右至左”。需知:符號運算符和“+”運算

9、符同優(yōu)先級,其結(jié)合方向也為“自右至左”。 例: -(i+)是先用i的原值3加上負(fù)號輸出-3,再對i加1,不要認(rèn)為先加完1后再加負(fù)號,輸出-4,這是不對的,30,算術(shù)運算符和算術(shù)表達(dá)式,有關(guān)表達(dá)式使用中的問題說明: 如果i的原值等于3,則: 避免出現(xiàn)歧義。如:i+i+i+應(yīng)該寫成:i=3 ; a=i+; b=i+; c=i+; d=a+b+c; 不要寫成:i+j, 而應(yīng)寫成: (i+)+j的形式。 不要寫成:printf (“ %d,%d”,i,i+); 其結(jié)果為:4,3而應(yīng)寫成:j=i+; printf (“ %d,%d”, j , i) 其結(jié)果為:3,4,31,32,include void

10、 main() int i=3; printf(%dn,i+); printf(%dn,i); i=3; printf(%dn,+i); printf(%dn,i);,運行結(jié)果: 3 4 4 4,include void main() int i=5; printf(%dn,(i+)+(i+)+(i+); printf(%dn,i); i=5; printf(%dn,(+i)+(+i)+(+i); printf(%dn,i);,運行結(jié)果: 15 8 22 8,舉例,關(guān)系運算符和表達(dá)式,關(guān)系運算符 種類:= != 結(jié)合方向:自左向右 優(yōu)先級別:低于算術(shù)運算符,高于賦值運算符,33,例 ca+b

11、c(a+b) ab!=c (ab)!=c a=bc a=(bc) x=a=bx=(a=b) x=yz x=(yz,關(guān)系運算符和表達(dá)式,關(guān)系表達(dá)式 用關(guān)系運算符將2個表達(dá)式連接起來的式子稱為關(guān)系表達(dá)式。這2個表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式或字符表達(dá)式。 關(guān)系表達(dá)式的值是一個邏輯值,即真1或假0。 (注意,在判斷時只要非0就表示真) 正確的關(guān)系表達(dá)式如,34,a+bc+d ab=cd x!=d (x=2)=(b=a,邏輯運算符和邏輯表達(dá)式,邏輯運算符 種類: ! b=5; !a a b=a; c=.59;a=b=12,37,復(fù)合賦值運算符 種類:+= -= *= /=

12、%= = = b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c,a=15,表達(dá)式值60,a=15,表達(dá)式值20,賦值表達(dá)式,表達(dá)式值18,x=18,逗號表達(dá)式,表達(dá)式值18,x=3,1,2,3,3,2,3,注意: 并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。 如:printf (“%d,%d,%d”,a,b,c); “a,b,c”并不是一個逗號表達(dá)式,條件運算符與表達(dá)式,一般形式: expr1 ? expr2 : expr3 執(zhí)行過程: 功能:相當(dāng)于條件語句,但不能取代一般if語句 條件運算符可嵌套 如 x0?1:

13、(xb?a:cd?c:d ab?a:(cd?c:d,40,表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換,C語言規(guī)定: 相同類型的數(shù)據(jù)可以直接進(jìn)行運算,其運算結(jié)果還是原來的數(shù)據(jù)類型; 而不同類型的數(shù)據(jù)運算,則需先將這些數(shù)據(jù)轉(zhuǎn)換成同一類型,然后再進(jìn)行運算。 轉(zhuǎn)換的方法有兩種: 自動轉(zhuǎn)換(隱式轉(zhuǎn)換) 強(qiáng)制轉(zhuǎn)換,41,前面學(xué)習(xí)了數(shù)據(jù)類型和數(shù)據(jù)之間的運算(表達(dá)式),那么不同類型的數(shù)據(jù)可以進(jìn)行運算嗎,自動轉(zhuǎn)換(隱式轉(zhuǎn)換,由編譯系統(tǒng)自動完成,遵循以下規(guī)則: 參與運算的數(shù)據(jù)類型不同時,則先轉(zhuǎn)換成同一類型,然后再進(jìn)行運算 轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不至于降低 所有的實數(shù)運算都是以雙精度(double型)進(jìn)行的 char

14、型和short型參與運算時必須先轉(zhuǎn)換成int型 如果賦值號兩邊的數(shù)據(jù)類型不同,賦值號“=”右邊表達(dá)式值的類型將轉(zhuǎn)換為左邊變量的類型,42,int x; float y=5.718; x=y,x5,數(shù)據(jù)丟失,慎用,強(qiáng)制轉(zhuǎn)換,其一般形式為: (類型名)(表達(dá)式) 如:(int)3.98; (float)5/7; (double)6 表達(dá)式應(yīng)該用括號括起來。如果寫成:(int)x+y則只將x轉(zhuǎn)換成整型,然后與y相加。 在強(qiáng)制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化,43,例 main ( ) float x ; int i; x = 3.6; i = (int)x; prin

15、tf (“ x = %f , i = %d ” , x, i );,運行結(jié)果: x = 3.600000 , i = 3 x類型仍為float型,值仍等于3.6,數(shù)據(jù)的輸入/輸出,輸出:從計算機(jī)向外部輸出設(shè)備輸出數(shù)據(jù); 輸入:從外部向輸入設(shè)備輸入數(shù)據(jù); C語言本身不提供輸入輸出語句,輸入輸出操作是由C語言的庫函數(shù)來實現(xiàn)的。在使用C語言庫函數(shù)時,要用預(yù)處理命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。 例如,調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)用以下命令: #include 或 #include “stdio.h,45,有沒有問題,數(shù)據(jù)的輸入/輸出,四個函數(shù): 字符輸出函數(shù):pu

16、tchar() 字符輸入函數(shù):getchar() 格式輸出函數(shù):printf() 格式輸入函數(shù):scanf(,46,字符輸出函數(shù):putchar(,作用:向終端輸出一個字符。 例如: putchar(c) ; c可以是字符型變量或整型變量、相應(yīng)常量或者轉(zhuǎn)義字符,47,include main( ) char a,b,c; a= B;b=O;c=Y; putchar(a); putchar(b); putchar(c); 運行結(jié)果: BOY,char a=A; int k=65; putchar(a); putchar(A); putchar(k); putchar(65); putchar(1

17、01); 以上都輸出大寫字母A,字符輸入函數(shù):getchar(,作用:從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符。getchar函數(shù)沒有參數(shù)。 函數(shù)的值就是從輸入設(shè)備得到的字符,48,include main( ) char c; c=getchar( ); putchar(c);,注意: getchar( )只能接受一個字符。getchar函數(shù)得到的字符可以賦給一個字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分,putchar(getchar(,格式輸出函數(shù):printf(,作用:向終端輸出若干個任意類型的數(shù)據(jù)。 一般格式為:printf(格式控制,輸出表列) “格式控制”

18、:是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串” 它包含兩種信息: 格式說明,由“%”和格式字符組成,如%d,%8.3f等。 普通字符,即需要原樣輸出的字符。 轉(zhuǎn)義字符:按轉(zhuǎn)義字符的含義輸出。例如,n表示換行,b表示退格 輸出表列”:是需要輸出的一些數(shù)據(jù),可以是表達(dá)式,49,格式輸出函數(shù):printf(,由于printf是函數(shù),因此,“格式控制”字符串和“輸出表列”實際上都是函數(shù)的參數(shù)。 printf(參數(shù)1,參數(shù)2,參數(shù)3參數(shù)n) printf函數(shù)的功能是將參數(shù)2參數(shù)n按參數(shù)1給定的格式輸出,50,格式字符:對不同類型的數(shù)據(jù)用不同的格式字符。常用的有以下幾種格式字符(個): d或i、o、x

19、或X、u、c、s、f、e或E、g或G 另外,在”%”和格式字符之間可以有修飾符: -、+、#、l或L、m、.n、m.n (m和n表示大于0反整數(shù),格式字符有哪些,格式字符1,d或i:用來輸出十進(jìn)制整數(shù)。有以下幾種用法: %d,按整型數(shù)據(jù)的實際長度輸出。 %md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實際位數(shù)輸出。 如:printf(”%4d%4d”,a,b);( a=123,b=12345) 則輸出結(jié)果為:_123,12345 %ld,輸出長整型數(shù)據(jù)。 如:long a=135790;printf(“%ld”,a); 注意:在TC中,如果用%d輸出,就會

20、發(fā)生錯誤,因為TC中整形數(shù)據(jù)的范圍為-3276832767。 對長整形數(shù)據(jù)也可以指定字段寬度, 如:printf(”%8ld”,a); 則輸出為: _ _135790,51,這里用”_”表示空格,格式字符2,o:以八進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值(0或1)按八進(jìn)制形式輸出,因此輸出得數(shù)值不帶符號。 例如: int a=-1,b=12; printf(%ld,%lo,%o,%+dn%#+d,%+#d,%u,a,a,b,b,b,b); 輸出為: -1,37777777777,014,+12 +12,+12,2367460 同樣可以指定字段寬度, 如: printf(“%13o”,

21、a);/* _ _37777777777 *,52,誰能知道為什么,格式字符3、4,x(X):以十六進(jìn)制數(shù)形式輸出整數(shù)。同樣也不 會出現(xiàn)負(fù)的十六進(jìn)制數(shù)。例如: int a=-1; printf(%X,%d,%#x,a,a,a); 輸出結(jié)果是: FFFFFFFF,-1,0 xffffffff 同樣可以指定輸出字段的寬度,如“%l8x”。 u:用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。 一個有符號整數(shù)(int型)也可以用%u格式輸出; 反之,一個unsigned型數(shù)據(jù)也可以用%d格式輸出。unsigned也可以用%o或%d格式輸出,53,格式字符5,c:用來輸出一個字符。 一個

22、整數(shù),只要它的值在-128127范圍內(nèi),也可以用字符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為SCII碼轉(zhuǎn)換成相應(yīng)的字符;反之,一個字符數(shù)據(jù)也可以用整數(shù)形式輸出。 main( )運行結(jié)果: char c=a; a,97 int i=97; a,97 printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i); 當(dāng)然,也可以指定輸出字符寬度:%15c,54,格式字符6,s:用來輸出一個字符串。有以下幾種方法: %s:例如: printf(”%s”,”CHINA”); /*輸出:CHINA*/ %ms:輸出的字符串占m列,如字符串本身長度大于 m,則突破m的界限,將字符串全部

23、輸出。若串長小于m, 則左補(bǔ)空格。 %-ms:如果串長小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。 %m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右 側(cè),左補(bǔ)空格。 %-m.ns:其中m,n含義同上,n個字符輸出在m列范圍的左側(cè),右補(bǔ)空格。 如果nm,則m自動取n值,即保證n個字符正常輸出,55,格式字符6,main( ) printf(”%3s,%7.2s,%.4s,%-5.3sn”,”CHINA”, ”CHINA”,”CHINA”,”CHINA”); 輸出如下: CHINA,_ _ _ _ _CH,CHIN,CHI_ _ 其中第3個輸出項,格式說明為“%.4

24、s”,即只指定了n,沒指定m,自動使m=n=4,故占4列,56,格式字符7,f:用來輸出實數(shù),以小數(shù)形式輸出。方法: %f,不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。應(yīng)當(dāng)注意:并非全部數(shù)字都是有效數(shù)字。單精度實數(shù)的有效位數(shù)一般為7位。 (雙精度一般為16位) main() float a=111111.111,b=222222.222; printf(%f,%f,%f,a,b,a+b); 運行結(jié)果:111111.109375,222222.218750,333333.328125,57,類似字符串,也可以用”(-)m.n”r 修飾,格式字符8,e:以指數(shù)形式輸出實

25、數(shù)。可用以下形式: %e 不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動指定給出6位小數(shù),指數(shù)部分占5位(如e+002)數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點前必須有而且只有1位非零數(shù)字)。例如: printf(”%e”,123.456);輸出:1.234560e+002 %m.ne和%-m.ne,m和“-” 與我們以前學(xué)習(xí)的意思相同。此處n指的是輸出數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。例:若f=123.456, printf(%e,%10e,%10.2e,%.2e,%-10.2e,f,f,f,f,f); 輸出如下: 1.234560e+002,1.234560e+002,_1.23e+002,1.23e+002,1.23e+002_ _,58,格式字符9,g:用來輸出實數(shù),它根據(jù)數(shù)值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。 例如:float f=1.23,g=123456789; printf(%e,%f,%g,%G,f,f,f,g); 輸出如下: 1.230000e+000,1.230000,1.23,1.23457E+008,59,格式字符總結(jié),60,修飾符總結(jié),61,格式輸出函數(shù):printf

溫馨提示

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

評論

0/150

提交評論