版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言補習(xí),60分攻略,基本概念,匯編語言編寫的程序必須經(jīng)匯編為目標(biāo)程序。 高級語言編寫的程序必須經(jīng)編譯為目標(biāo)程序。 C語言程序總是從main()函數(shù)開始執(zhí)行 ,到main()函數(shù)結(jié)束。因此, C語言程序至少有一個main()函數(shù)。,一、C語言的數(shù)據(jù)表示,1. 1 常量和變量 1. 2 表達式 1. 3 數(shù)據(jù)類型 簡單類型、結(jié)構(gòu)類型、指針類型 1.4 輸入、輸出,1.1 常量和變量,1.常量 常量是在程序執(zhí)行中,值不發(fā)生改變的數(shù)據(jù)。其值預(yù)先決定,之后不變。有不同的數(shù)據(jù)類型。,(1)常數(shù)(有的稱直接常量、頁面常量) 例如的: 整數(shù):+5 、-3、017(八進制)、0 x1f(16進制) 實數(shù)(浮
2、點數(shù)):3.14 、-1.2E-3 、1E10 單個字符: A,占一個字節(jié) ,轉(zhuǎn)義字符 非法 77 (八進制ASCII碼63,?),78非法 x3f (十六進制ASCII碼63,?) x3g非法 字符串: “A” 后面有0,占兩個字節(jié),E3,2E3.0不合法,不是整型量,占一個字節(jié),字符串“*077x7fn”的長度是: 下列是整型常量的是: 0.0 0L 0 x7f 057 058 2/2.0 下列是實型常量的是: -1E-3 E10 1E2 3.14 1.2E2.3 “x7F”和 x7F的字節(jié)數(shù)分別為:,5,2 1,(2)符號常量 給常量起標(biāo)識符名字。 C語言的符號常量(用宏定義): #de
3、fine PI 3.14159265 注意: 1.一般用大寫字母。 2, #define M 3 不是C語句,后面沒有“;”。 3.可以做M+1,不能做M+.,(3)地址常量 當(dāng)數(shù)組在定義時,其變量名為其首地址,是地址常量。 int a10;可以做a+1,不能做a+.,1.1 常量和變量,2 變量 用各種操作來改變值數(shù)據(jù)。 從“名”和“值”兩個角度認識變量,(1)變量名 每個變量,要在使用前定義變量的名字,遵循標(biāo)識符命名規(guī)則。 只能用字母、數(shù)字和下劃線組成。 不能以數(shù)字開頭。 不能用保留字(int,printf,main.)。,合法 a12 a_3 _abc,非法 12a a# int,變量定
4、義就是申請數(shù)據(jù)的存儲空間,登記數(shù)據(jù)的各種存儲特性。 例如: int m ;2個字節(jié) long n; 4個字節(jié) char ch; 1 個字節(jié) float x; 4個字節(jié) double y; 8個字節(jié) 可以用sizeof獲得字長 sizeof(char)=1 sizeof(int)=2 sizeof(double)=8,(2)變量的值 變量值就是由變量名所指定空間上的存儲數(shù)據(jù)內(nèi)容。即變量的當(dāng)前值。 數(shù)據(jù)內(nèi)容用語言的操作語句來改變。 賦值語句;鍵盤輸入語句; char chx; int m; /* 變量的定義 */ chx=A; m=12*3; /* 賦值語句 */ scanf(“%d”, /* 鍵
5、盤輸入語句 */,變量初始化:定義變量時同時確定變量初值。 例如: char chy=a; int weight=2;,1.2 C語言的表達式,1、算術(shù)表達式 2、關(guān)系表達式 3、邏輯表達式 4、賦值表達式 5、逗號表達式 6、條件表達式 7、其他表達式,C語言的表達式: 使用規(guī)定的運算符, 將常量、變量、函數(shù)(調(diào)用)連結(jié)的一個有意義的式子。,1、算術(shù)表達式,用算術(shù)運算符來表示對數(shù)據(jù)的算術(shù)運算求值過程。 算術(shù)運算符: + - * / % 2/3結(jié)果是0,2%3結(jié)果是2,5/2結(jié)果是,5%2結(jié)果是,2、關(guān)系表達式,關(guān)系運算符: = = (優(yōu)先級較高) != = (優(yōu)先級較低) 關(guān)系表達式的結(jié)果:
6、1(非0,真) ,0(假) 分析:10=a=15 a=9 是假,10=a=15,10=a 假 0,0=15 真,所以要寫成10=a,n*=m+2 相當(dāng)于 n=n*(m+2) k=i+; 先k=i,再i=i+1 k=+i; 先i=i+1,再k=i,c賦值給b,b=2 b賦值給a,a=2,i+,+i,k=i+ 作賦值運算,使用就是賦值. 先做k=i,再做i=i+1,i+先使用,后加1, + i先加1,后使用要充分理解中”使用”的實際意義,k=i+ 作比較判斷運算,使用就是比較判斷先做k=i,是真還是假,再做i=i+1,printf(“%d”,i+) 作輸出結(jié)果,使用就是輸出結(jié)果.先輸出i,再做i=
7、i+1,a=5-(i+) 作減法,使用就是減.先做5-i,并賦給a,再做i=i+1,5、條件表達式 e1?e2:e3 若e1為真,表達式的值為e2,否則為e3. a=3,b=2 ; (- -a=b+)? -a : b +,5?10:3,表達式的值為10,0?10:3,表達式的值為3,-5?10:3,表達式的值為10,b=3; a=b5?10:3; a=?,賦值運算符優(yōu)先僅高于逗號運算符 a=(b5?10:3);,3,k=(- -a=b+)? -a : b +;,k=?,1,1,非0 真,6、逗號表達式 表達式的值等于最后一個表達式的值,運算等級最低! a=5,b=2,c=3 a=7+b+c,
8、b+ a=(7+b+c, b+),a=12,a=2,7、強制類型轉(zhuǎn)換表達式(單目) int m; sqrt(float) m);,a=5,a+5,a+=a,a=10,理解記憶運算符表,右結(jié)合 單目運算符 賦值運算符,b=2 a=5-(-b),()優(yōu)先級最高, -b右結(jié)合,-優(yōu)先級其次,=優(yōu)先級最低,-b,b=b-1,b為1,再做5-b,即5-1等于4,最后將4賦給a,1.3 數(shù)據(jù)類型,簡單類型,構(gòu)造類型,指針類型,整型,實型,字符型,數(shù)組,結(jié)構(gòu)體,共用體,數(shù)值型,枚舉型,空類型,int 2個字節(jié),long 4個字節(jié),float 4個字節(jié),double 8個字節(jié),char 1個字節(jié),成員類型字節(jié)
9、數(shù)個數(shù),struct 各成員字節(jié)數(shù)之和,union 各成員字節(jié)數(shù)之最大者,存放地址,與所指數(shù)據(jù)類型無關(guān),2個字節(jié),不要求,不要求,1. 3 數(shù)據(jù)類型,(1)整型 類型名 字節(jié)數(shù) 輸入、輸出格式 int 2 %d short 2 %d long 4 %ld (2) 實型,1.簡單類型,類型名 字節(jié)數(shù) 輸入、輸出格式 有效數(shù)字位 float 4 %f 7 doubule 8 %lf 16 long doubule 16 %lf 19,(3) 字符型(輸入、輸出格式 “%c”) ASCII碼,一個字符占1字節(jié); char型數(shù)據(jù)與int型數(shù)據(jù)之間的關(guān)系 char型對應(yīng)其ASCII碼,只不過是占一個字節(jié)
10、 。大寫字母與小寫字母之差為32. char型變量既能以%c字符格式輸出,也能以%d整型格式輸出。能象int量一樣進行算術(shù)運算。 注意轉(zhuǎn)義字符 的使用。 n * 101 (A,8進制) x41(A,16進制),char ch=k; printf(“%d,%c”,ch-32, ch-32);,107,K,(4)字符串(輸入、輸出格式 “%s”) 所謂“字符串”是指若干有效字符的序列。語言字符串可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。 字符串常量:使用雙引號 China BASIC a+b=c Li-Li “39.4” “%dn” “解放軍“ “*077x7fn” 字符型的一維數(shù)組(相當(dāng)于字符串
11、變量) char st8, str10; strcpy(st,12345); strcpy(str,st); 不能st=“12345”; str=st;這是賦值. 可以char st= “12345”; 這是初始化.,2. 結(jié)構(gòu)類型 “結(jié)構(gòu)”一般可以稱為數(shù)據(jù)元素,在不同的結(jié)構(gòu)類型中,數(shù)據(jù)元素會有特定的名稱。 結(jié)構(gòu)類型的數(shù)據(jù)由更加基本的成分組成。 這些成分稱為“數(shù)據(jù)項”,結(jié)構(gòu)的子成員。,1. 3 數(shù)據(jù)類型,(1) 數(shù)組 a0 a1 a2 a3 a4 a5 a6 a7 10 20 30 40 50 60 70 80 一個數(shù)組(array )是由相同類型的若干數(shù)組元素構(gòu)成的有限序列。 C 語言的數(shù)定
12、義 : int b8 , a8 ; char c10;,2. 結(jié)構(gòu)類型,元素下標(biāo)從0開始,例 日期類型的定義,(2) 結(jié)構(gòu)體,C語言中實現(xiàn): struct Date int month ; /*月*/ int day; /*日*/ int year; /*年*/ ; struct Date myd=12,16, 1978; 系統(tǒng)分配給它的內(nèi)存是各成員所需內(nèi)存量的總和。本例是6.,(1)指針:變量名的在內(nèi)存中的存儲地址。 (2)指針變量 int i=12, *p; P= 把存放變量i 的地址的變量p 稱作指針變量。 指針變量的存放內(nèi)容是數(shù)據(jù)的地址。,3. 指針類型(放棄),(3)指針引用變量 指
13、針變量可以指向各種不同的數(shù)據(jù)類型,因此指針變量也要有不同的指針類型。如: int m, *p; float x,*q; int a,*r m=12; p=,注意:是否用 main() . printf(“max=%cnmax_i%d=”,max,max_i);,max=,原樣輸出,換行,g,3,原樣輸出,max_i=,注意輸出格式,1.4 輸入、輸出,輸入: scanf(“.”, .) %d, %ld 對應(yīng)int long %c, %s 對應(yīng)char char str %f , %lf 對應(yīng)flaot double,常見錯誤 int a,b;char d,e20; scanf(%d,%fn”,
14、n要多輸入一個值 缺 int m; 編譯預(yù)處理 宏定義 #define PI 3.14159 文件包含處理 #include ,二、C語言的程序結(jié)構(gòu)與相關(guān)語句,帶參宏定義,以文本按原樣展開 #define MUL(x) x*x,5/MUL(5+3)=5/5+3*5+3=19,#define MUL(x) (x)*(x),5/MUL(5+3)=5/(5+3)*(5+3)=5,#define MUL(x) (x)*(x),5/MUL(5+3)=5/(5+3)*(5+3)=5/64,1. 表達式語句的組成: 由一個表達式后接一個分號組成的。,一組語句括在一對花括號之中,稱復(fù)合語句。 c=getcha
15、r(); putchar(c); 注意,一個復(fù)合語句的后花括號之后不應(yīng)再寫分號。 在語法上是一個整體,相當(dāng)于一個語句。 凡是能夠使用簡單語句的地方,都可以使用復(fù)合語句。一個復(fù)合語句中又可以包含另一個或多個復(fù)合語句。,從鍵盤輸入一個字符,并賦給c,以字符形式輸出字符變量的值c,完成一定的控制功能。9種控制語句: 判斷語句 條件判斷語句 if()else 多分支選擇語句 switch()case 循環(huán)語句 循環(huán)次數(shù)控制語句 for() 先判斷后執(zhí)行循環(huán)控制語句while() 先執(zhí)行后判斷循環(huán)控制語句dowhile() 轉(zhuǎn)移控制語句 直接轉(zhuǎn)移語句 goto 終止語句 break(用在循環(huán)結(jié)構(gòu)、swi
16、cth) 跳轉(zhuǎn)語句 continue (僅用在循環(huán)結(jié)構(gòu)) 返回語句 return,流程控制語句,二、C語言的程序結(jié)構(gòu)與相關(guān)語句,程序的三種基本結(jié)構(gòu): 順序結(jié)構(gòu) 選擇結(jié)構(gòu) if()else switch()case 循環(huán)結(jié)構(gòu) for().; while(); do ; while(),選擇結(jié)構(gòu),單分支結(jié)構(gòu) if(a=b)printf(“yes”); 雙分支結(jié)構(gòu) if(a=b) printf(“yes”); else printf(“no”); 多分支結(jié)構(gòu) switch_case,不能寫成a=b,多分支選擇語句,switch(表達式) case 常量表達式1: 語句序列1; break; case
17、 常量表達式2: 語句序列2; break; case 常量表達式n: 語句序列n; break; default:語句序列n+1; ,根據(jù)“表達式”的值從上至下去尋找與表達式的值相匹配的“case常量表達式”,執(zhí)行一個分支后,再執(zhí)行下一個分支,直到break結(jié)束,然后執(zhí)行switch結(jié)構(gòu)后面的程序。 找不到匹配的入口標(biāo)號時,執(zhí)行“語句序列n+1”,然后結(jié)束。順序向下執(zhí)行程序。,main() int a=1,b=1; switch (a) case 1: switch (b) case 0:printf(“$”);break; case 1:printf(“#”);break; case 2:
18、printf(“*”); case 2:printf(“”); case 3:printf(“”); break; case 4:printf(“ ,a=1 case 1:swtch(1) b=1 printf #, break 跳出switch(b)結(jié)構(gòu) 進入switch(a)結(jié)構(gòu) case 2:printf case 2:printf break 跳出switch(a)結(jié)構(gòu),#,for,while,do-while三種結(jié)構(gòu),循環(huán)變量初始化,繼續(xù)循環(huán)條件,改變循環(huán)變量是不可缺少的三個環(huán)節(jié)。 for常用于循環(huán)次數(shù)已知的問題中。括號中的兩個“;”不可省。 while與do-while常用于循環(huán)次
19、數(shù)未知的問題中。,注意,在for和while語句之后一般沒有分號 有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體) while (i 100);i+; for (i = 0; i 100; i+);printf(%d, i); if,swtich,while,for后面的語句只能是一句,因此,多句時別忘了。,在while( e )和for( ;e ;)中的e是循環(huán)繼續(xù)的條件,不能寫其它條件!如果缺省,就是死循環(huán)!,在if(e),while( e )和for( ;e ;)中e的值是邏輯值(0或非0)e一般是關(guān)系表達式,邏輯表達式或變量。,if(x=1),if(x=1),main() int i=1
20、; doi-;while(i+); printf(“%d”,i-); A) -1 B) 0 C) 1 D)陷入死循環(huán),i=1 i-,i=0,while(i)終止循環(huán) i+,i=1,輸出i=1 i-,i=0,break,coutinue,break只能用于switch和循環(huán)語句中,作用提前終止本層次switch和循環(huán)。 coutinue是跳過循環(huán)體內(nèi)尚未執(zhí)行的語句,接著執(zhí)行下次循環(huán)。,常用的循環(huán)算法,求素數(shù)、水仙花數(shù)、最小公倍數(shù)、最大公約數(shù)、分解多位數(shù)的數(shù)字,累加,累乘,分解質(zhì)因數(shù)等。 各種有規(guī)律的圖案。,while( m) k = m%10 ; /*求最低位的數(shù)字*/ m=m/10; /*除去
21、最低位的數(shù)字*/ ,分解多位數(shù)的數(shù)字,判斷素數(shù),main() int i,x,flag=0; scanf(“%d”, ,求階乘x!,long facto (int x ) long y; for ( y=1; x0; -x ) y *= x; return(y);,main() long y; for ( y=1; x0; -x ) y *= x; printf(“%ld”,y);,main( ) int m, n; long cmn, facto( ); scanf (%d%d, ,求C(m,n) = m!/(n!*(m-n)!),數(shù)組的定義 類型標(biāo)識符 數(shù)組名常量表達式,錯誤的定義是: 或
22、 int n; int n=10; scanf(%d,定義int a5時, a0,a1.=?,隨機數(shù)!,只有int a5=3后,后面幾項自動賦0,三 數(shù)組,數(shù)組的初始化,合法: int a=1,2,3,4,5; int i 3=1,2,3,4,5,6; int a5=1,2,3; char a4=“boy” char a3=b,o,y,不合法: int a5=,2, ,4,5; int i2 =1,2,3,4,5,6; int a5= ; char a4=boy,用數(shù)組元素下標(biāo)法訪問數(shù)組元素。,#include void main() int a5=1,3,5,7,9, i, *p; for(
23、i=0;i5;i+)printf(%d , ai ); printf(n);,從0開始,或 i=4,寫程序框架(用函數(shù)),函數(shù)說明語句; mian() 定義變量; 輸入數(shù)組; 調(diào)函數(shù)處理數(shù)組; 輸出結(jié)果 ; ,函數(shù)首部 定義函數(shù)內(nèi)部變量; 處理數(shù)組; 返回(非void用); ,用函數(shù)實現(xiàn)數(shù)組操作,數(shù)值數(shù)組 void inv(int x,int n); main() int i,j,a10; for(i=0;i10;i+) scanf(“%d”,ai); inv(a,10); for(i=0;iM;i+) printf(“%d”,ai); ,字符數(shù)組 void inv(char x) main(
24、) int i,j;char a50; gets(a); inv(a); puts(a); ,多一個參數(shù),表示元素個數(shù),可以整體輸入,輸出,必須單個輸入,輸出,數(shù)組的操作往往用循環(huán)結(jié)構(gòu).,數(shù)值數(shù)組 int a10; for(i=0;i10;i+),字符數(shù)組 char a50; for(i=0;ai!=0;i+),數(shù)值數(shù)組倒序 for(i=0,j=M;ij;i+,i-) 交換ai,aj,字符數(shù)組倒序 for(i=0,j=strlen(a);ij;i+,i-) 交換ai,aj,數(shù)值數(shù)組 void inv(int x,int m) int i,j,k; j=m; for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k; ,字符數(shù)組 void inv(int x ) int i,j,k; j=strlen(x); for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k; ,main( ) int i,j,s=0,a33; for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) scanf(%d, ,主對角線 i=j 副對角線 i+j=2,累加(積),# define M 10 main() int
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年湖南有色金屬職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 2026年河北機電職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 2026年福建商學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題帶答案解析
- 2026年合肥濱湖職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題帶答案解析
- 2026年廣西交通職業(yè)技術(shù)學(xué)院單招職業(yè)技能筆試備考題庫帶答案解析
- 2026年合肥信息技術(shù)職業(yè)學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 2026年保山中醫(yī)藥高等??茖W(xué)校單招綜合素質(zhì)考試備考題庫帶答案解析
- 2026年廣東江門中醫(yī)藥職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫有答案解析
- 數(shù)字廣告投放合同協(xié)議2025年
- 2026年黑龍江職業(yè)學(xué)院單招職業(yè)技能考試參考題庫帶答案解析
- 2026貴州黔南州長順縣醫(yī)療集團中心醫(yī)院招聘備案編制人員21人筆試參考題庫及答案解析
- 中國兒童原發(fā)性免疫性血小板減少癥診斷與治療改編指南(2025版)
- 2026年遼寧生態(tài)工程職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案詳解
- 基坑回填質(zhì)量控制措施
- 合作購車位協(xié)議書
- 2025重慶城口縣國有企業(yè)公開招聘26人參考題庫附答案
- 咨政類課題申報書
- 應(yīng)力性骨折課件
- 產(chǎn)科護士長2025年度述職報告
- 2026五個帶頭發(fā)言材料三
- 醫(yī)?;鸨O(jiān)管培訓(xùn)課件
評論
0/150
提交評論