C語言期末考試復(fù)習(xí)資料-完整版_第1頁
C語言期末考試復(fù)習(xí)資料-完整版_第2頁
C語言期末考試復(fù)習(xí)資料-完整版_第3頁
C語言期末考試復(fù)習(xí)資料-完整版_第4頁
C語言期末考試復(fù)習(xí)資料-完整版_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、考試的主要題型和分?jǐn)?shù)分布:1 1 單項(xiàng)選擇題單項(xiàng)選擇題( (1 10 0小題小題, ,每題每題2 2分分, ,共共2 20 0分分) )2 2 填空題填空題( (每空每空1 1分分, ,共共1 10 0分分) )3 3 閱讀程序閱讀程序( (每題每題2 2分分,共共1010分分) )4 4 程序填空程序填空( (每每空空2 2分分,共共4 40 0分分) )5 5 編寫程序編寫程序( (2 2小題小題, ,每題每題1010分分, ,共共2020分分) )第一章 第第1 1章章 C C語言概述語言概述本章包含本章包含4 4項(xiàng)目重點(diǎn)內(nèi)容項(xiàng)目重點(diǎn)內(nèi)容: :1 簡單的C語言程序#include voi

2、d main()printf (This is a C program.n); 2 VC+ 6.0 環(huán)境: 編輯C語言源程序 后綴是 .c 或 .cpp 經(jīng)過編譯產(chǎn)生目標(biāo)文件,后綴是 .obj 再經(jīng)過連接成為可執(zhí)行文件,后綴 是 .exe3 C語言是結(jié)構(gòu)化程序,有三種結(jié)構(gòu) (1)順序結(jié)構(gòu); (2)選擇結(jié)構(gòu);(1)(3)循環(huán)結(jié)構(gòu);4 C語言是由函數(shù)組成的,其中必須有一個并且只有一個主函數(shù) main,程序的執(zhí)行從main 函數(shù)開始,到main 函數(shù)結(jié)束. .第二章 C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。 常量與變量 常量和符號常量常量和符號常量 在程序運(yùn)行過程中在程序運(yùn)行過程中, ,其值不能被

3、改變的量稱為常量其值不能被改變的量稱為常量 常量區(qū)分為不同的類型:常量區(qū)分為不同的類型:整型整型 100 100,125125,-100-100,0 0實(shí)型實(shí)型 3.14 3.14 , 0.125 0.125,-3.1e3-3.1e3字符型字符型 a,057 a,057,x3cx3c字符串字符串 “a”, “ab” “a”, “ab”,”1232”1232”定義定義字符常量字符常量:#define PI 3.1415926#define PI 3.1415926#define N 20#define N 20 變量命名的規(guī)定:變量命名的規(guī)定:語言規(guī)定標(biāo)識符語言規(guī)定標(biāo)識符: :1 1 只能由字母

4、、數(shù)字和下劃線三種字符組成只能由字母、數(shù)字和下劃線三種字符組成; ; ( (注意不要混淆下劃線注意不要混淆下劃線_ _和杠號和杠號( (減號)減號)-)-)2 2 第一個字符必須為字母或下劃線第一個字符必須為字母或下劃線; ;3 3 不能使用關(guān)鍵字不能使用關(guān)鍵字. . 例:例:sumsum,_123 , m123, Student_name1_123 , m123, Student_name1 12a,Jo-hn, 12a,Jo-hn, ¥123,a#b, int123,a#b, int 整型常量的表示方法整型常量的表示方法 整型常量即整常數(shù)。在語言中,整常數(shù)整型常量即整常數(shù)。在語言中,整常數(shù)

5、可用以下三種形式表示:可用以下三種形式表示:(1)(1)十進(jìn)制整數(shù)。十進(jìn)制整數(shù)。 如:如:123, -456123, -456(2)(2)八進(jìn)制整數(shù)。以八進(jìn)制整數(shù)。以0 0開頭的數(shù)是八進(jìn)制數(shù)。開頭的數(shù)是八進(jìn)制數(shù)。 如:如:01230123表示八進(jìn)制數(shù)表示八進(jìn)制數(shù)123123,等于十進(jìn)制數(shù),等于十進(jìn)制數(shù)8383 0129 0129 非法(每位非法(每位0-70-7合法合法) )(3)(3)十六進(jìn)制整數(shù)。以十六進(jìn)制整數(shù)。以0 x0 x開頭的數(shù)是開頭的數(shù)是1616進(jìn)制數(shù)。進(jìn)制數(shù)。 如:如:0 x1230 x123,代表,代表1616進(jìn)制數(shù)進(jìn)制數(shù)123,123,等于十進(jìn)制數(shù)等于十進(jìn)制數(shù)291 291

6、而而 0 x12g 0 x12g 非法(每位非法(每位0-f0-f合法合法) 字符型數(shù)據(jù) 字符常量(1)用單引號包含的單個字符(2)用單引號包含的由開始的轉(zhuǎn)義字符a,A, a,A, 1,037,x2d1,037,x2dabcabc,“a”a”,082,x5g082,x5g 字符串常量字符串常量 字符串常量是一對字符串常量是一對雙引號雙引號括起來的字符序列括起來的字符序列. . 合法的字符串常量合法的字符串常量: :“How do you do.”, “CHINA”How do you do.”, “CHINA”, “a” a” , “ “$123.45”$123.45” 可以輸出一個字符串,如

7、可以輸出一個字符串,如printf(“How do you do.”)printf(“How do you do.”);運(yùn)算符簡介運(yùn)算符簡介 的運(yùn)算符有以下幾類:的運(yùn)算符有以下幾類:(1)(1)算術(shù)運(yùn)算符算術(shù)運(yùn)算符 (+ - + - * * / % / %)(2)(2)關(guān)系運(yùn)算符關(guān)系運(yùn)算符 ( ! !)(3)(3)邏輯運(yùn)算符邏輯運(yùn)算符 (?。?! | |)(4)(4)位運(yùn)算符位運(yùn)算符 ( | | )(5)(5)賦值運(yùn)算符賦值運(yùn)算符 (及其擴(kuò)展賦值運(yùn)算符)(及其擴(kuò)展賦值運(yùn)算符)(6)(6)條件運(yùn)算符條件運(yùn)算符 (?:)(?:)算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 基本的算術(shù)運(yùn)算符基本的算術(shù)

8、運(yùn)算符: : (加法運(yùn)算符或正值運(yùn)算符如(加法運(yùn)算符或正值運(yùn)算符如: :、)、) (減法運(yùn)算符或負(fù)值運(yùn)算符(減法運(yùn)算符或負(fù)值運(yùn)算符, ,如如: :、)、)* * (乘法運(yùn)算符。如(乘法運(yùn)算符。如: :* *) (除法運(yùn)算符(除法運(yùn)算符, ,實(shí)數(shù)相除結(jié)果是雙精度實(shí)數(shù),整實(shí)數(shù)相除結(jié)果是雙精度實(shí)數(shù),整數(shù)相除結(jié)果是整數(shù);兩數(shù)同號結(jié)果是正數(shù),兩數(shù)異數(shù)相除結(jié)果是整數(shù);兩數(shù)同號結(jié)果是正數(shù),兩數(shù)異號結(jié)果是負(fù)數(shù),且舍入得方向不固定,號結(jié)果是負(fù)數(shù),且舍入得方向不固定,Vc+Vc+是是“向向0 0取整取整) (求余運(yùn)算符,兩側(cè)必須為整型數(shù)據(jù)(求余運(yùn)算符,兩側(cè)必須為整型數(shù)據(jù), ,結(jié)果與結(jié)果與被除數(shù)一致。被除數(shù)一致。)

9、 ) 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值增或減作用是使變量的值增或減如如: ,(在使用之前,使,(在使用之前,使+1 +1 或或-1) -1) ,(在使用之后,使,(在使用之后,使+1 +1 或或-1)-1) 就是使用就是使用 i i 的原值執(zhí)行本條語句的原值執(zhí)行本條語句, , 而在執(zhí)行下條語句前將而在執(zhí)行下條語句前將 i+1 i+1 或或-1-1 int m=5,n=10; printf(%d,%dn,m+,-n);int m=5,n=10; printf(%d,%dn,m+,-n); 顯示顯示5,9 5,9 若再有:若再有: printf(“%dn”,m); printf(

10、“%dn”,m); 顯示顯示6 6賦值運(yùn)算符賦值運(yùn)算符 賦值符號賦值符號“”就是賦值運(yùn)算符,它的作用是就是賦值運(yùn)算符,它的作用是將一個數(shù)據(jù)賦給一個變量將一個數(shù)據(jù)賦給一個變量, ,如如a=5;a=5;(單等號)(單等號)而而 a=5 a=5 是判斷是判斷 a a是否等于是否等于 5; 5; (雙等號)(雙等號)如如 int a=3; if(a=2) int a=3; if(a=2) 為假,為假, 而而 if(a=5) if(a=5) 為真。為真。第三章 C語句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句 C語句概述 控制語句 完成一定

11、的控制功能1 if() else 條件條件語句語句 6 break 間斷語句間斷語句 2 for() 循環(huán)循環(huán)語句語句 7 switch() 開關(guān)語句開關(guān)語句3 while()循環(huán)循環(huán)語句語句 8 goto 轉(zhuǎn)向語句轉(zhuǎn)向語句 4 do while();循環(huán)循環(huán)語句語句 9 return 返回語句返回語句5 continue 繼續(xù)繼續(xù)語句語句 格式輸入與輸出(一).格式輸出函數(shù) 函數(shù)作用:向終端(或系統(tǒng)隱含指定的輸出設(shè)備)函數(shù)作用:向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出輸出若干個任意類型若干個任意類型的數(shù)據(jù)。的數(shù)據(jù)。 一般格式:一般格式:printfprintf(格式控制,輸出表列)(格式控制,

12、輸出表列)%d%d: :以帶符號的十進(jìn)制形式輸出整數(shù)以帶符號的十進(jìn)制形式輸出整數(shù)%o%o: :以八進(jìn)制無符號形式輸出整數(shù)以八進(jìn)制無符號形式輸出整數(shù)%x%x: :以十六進(jìn)制無符號形式輸出整數(shù)以十六進(jìn)制無符號形式輸出整數(shù) 格式輸入與輸出 %u%u: :以無符號十進(jìn)制形式輸出整數(shù)以無符號十進(jìn)制形式輸出整數(shù)%c%c: :以字符形式輸出,只輸出一個字符以字符形式輸出,只輸出一個字符%s%s: :輸出字符串輸出字符串%f%f: :以小數(shù)形式輸出單,雙精度數(shù),隱含輸出六位小數(shù)以小數(shù)形式輸出單,雙精度數(shù),隱含輸出六位小數(shù)%e%e: :以指數(shù)形式輸出實(shí)數(shù)以指數(shù)形式輸出實(shí)數(shù)%g%g: :選用選用%f%f或或%e%

13、e格式中輸出寬度較短的一種格式,不輸格式中輸出寬度較短的一種格式,不輸 出無意義的出無意義的0 0 格式輸入與輸出 用用printf printf 和和scanfscanf函數(shù)輸出和輸入數(shù)據(jù)。函數(shù)輸出和輸入數(shù)據(jù)。#include#includeintint main() main() int a,b,c;int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d,%d,%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);printf(“%d,%d,%dn”,a,b,c); 運(yùn)行情況:3,4,5 (輸入a,b,c的值)3,4,5 (輸

14、出a,b,c的值)表示表示a a在內(nèi)存中在內(nèi)存中的地址的地址其中,其中,& &是地址是地址運(yùn)算符運(yùn)算符 在格式輸入與輸出中格式控制是用雙引號包括的,其中一般帶有%d,%c,%f,%s等各種對數(shù)據(jù)類型的要求.第四章 關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符及其優(yōu)先次序 (小于) (大于)= (大于或等于)= (等于)!= (不等于)優(yōu)先級相同(高)優(yōu)先級相同(高)優(yōu)先級相同(低)優(yōu)先級相同(低)說明:說明:關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2.關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個

15、表達(dá)式(可以是算術(shù)表達(dá)式或用關(guān)系運(yùn)算符將兩個表達(dá)式(可以是算術(shù)表達(dá)式或 關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式)關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式) 接起來的式子,稱關(guān)系表達(dá)式接起來的式子,稱關(guān)系表達(dá)式例:例:ab,a+bb+c,(a=3)(b=5),ab)(bb,a+bb+c,(a=3)(b=5),ab)(bb”ab”的值為的值為“真真”,表達(dá)式的值為,表達(dá)式的值為1 1。C C語言中沒有專用語言中沒有專用的邏輯值,的邏輯值,1 1代表代表真,真,0 0代表假代表假 邏輯運(yùn)算符和邏輯表達(dá)式1.1.邏輯運(yùn)算符及其優(yōu)先次序邏輯運(yùn)算符及其優(yōu)先次序(1)& (1)& (邏輯與邏輯

16、與) ) (2)| (2)| (邏輯或邏輯或) ) (3)! (3)! (邏輯非邏輯非) ) 優(yōu)先次序:優(yōu)先次序: 邏輯非邏輯非! ! 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 邏輯與或邏輯與或 賦值運(yùn)算符賦值運(yùn)算符 或運(yùn)算中有或運(yùn)算中有1 1,值為,值為1 1,與運(yùn)算中有,與運(yùn)算中有0 0,值為,值為0 0 if語句 2.If2.If語句的嵌套語句的嵌套在在ifif語句中又包含一個或多個語句中又包含一個或多個ifif語句稱為語句稱為ifif語句的嵌套。語句的嵌套。形式:形式:if()if()if() if() 語句語句1 1else else 語句語句2 2elseelseif() if(

17、) 語句語句3 3else else 語句語句4 4內(nèi)嵌內(nèi)嵌ifif if語句 如如 int a=3,b=4,c=5;int a=3,b=4,c=5;if(ab) if(ab) if(ab) a=ba=b;b=c;c=a;b=c;c=a;第第1 1個,因?yàn)閭€,因?yàn)閍b,abmax=(ab)?)?a:b;a:b;min=(ab)min=(ab)?a:b;a:b; if語句 例: 輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。 #include void main ( ) char ch; scanf(“%c”,& ch); ch=(A=c

18、h&ch=Z)?(ch+32):ch; printf(“%cn”,ch); /注意:不能用 A=ch=Z,它永遠(yuǎn)為真如果字符變量ch的值為大寫字母,則條件表達(dá)式的值為(),即相應(yīng)的小寫字母。如果ch的值不是大寫字母,則條件表達(dá)式的值為,即不進(jìn)行轉(zhuǎn)換。 幾個典型的判斷幾個典型的判斷: :判斷大寫字母:判斷大寫字母:if(A=c & c=Z)if(A=c & c=Z)判斷小寫字母:判斷小寫字母:if(a=c & c=z)if(a=c & c=z)判斷數(shù)字:判斷數(shù)字:if(0=c & c=9)if(0=c & c=9)判斷閏年:判斷閏年:if(year%4=0&year%100!=0)|year%4

19、00=0)if(year%4=0&year%100!=0)|year%400=0)注意:例如在判斷數(shù)字中:注意:例如在判斷數(shù)字中:if(0=c & c=9)if(0=c & c=9)不可以沒有不可以沒有 & & ,也不能沒有,也不能沒有 即不能用即不能用 if(0= c=9)if(0= c=9)也不能用也不能用 if( 0=c & c=9 )if( 0=c & c=9 )但可以用但可以用 if( 48=c & c=57 )if( 48=c & c=57 )(想想為什么?(想想為什么? )用用switchswitch語句實(shí)現(xiàn)語句實(shí)現(xiàn) ( (若若a a是整數(shù)是整數(shù)) )按照考試成績輸出等級百分制分

20、數(shù)段按照考試成績輸出等級百分制分?jǐn)?shù)段switch(a/10)switch(a/10) case 10: case 10:case 9: grade=A;break;case 9: grade=A;break;case 8: grade=B;break;case 8: grade=B;break;case 7: grade=C;break;case 7: grade=C;break;case 6: grade=D;break;case 6: grade=D;break;default: grade=E;default: grade=E; 第五章 用while語句實(shí)現(xiàn)循環(huán)whilewhile語句用

21、來實(shí)現(xiàn)語句用來實(shí)現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。一般形式:一般形式: while (while (表達(dá)式表達(dá)式) ) 語句語句 當(dāng)表達(dá)式為非當(dāng)表達(dá)式為非0 0值時(shí),執(zhí)行值時(shí),執(zhí)行whilewhile語句中的語句中的內(nèi)嵌語句。其特點(diǎn)是內(nèi)嵌語句。其特點(diǎn)是: :先判斷表達(dá)式,后執(zhí)先判斷表達(dá)式,后執(zhí)行語句。行語句。 求正整數(shù)求正整數(shù)m m和和n n的最大公約數(shù)和最小公倍數(shù):的最大公約數(shù)和最小公倍數(shù):#include #include void main()void main() int p,r,n,m; int p,r,n,m; printf( printf(請輸入兩個正整數(shù)請輸入兩個正整數(shù)n,m:

22、);n,m:); scanf(%d,%d,&n,&m); scanf(%d,%d,&n,&m); p=n p=n* *m;m; while(m!=0)while(m!=0) r=n%m; n=m; m=r; r=n%m; n=m; m=r; printf( printf(它們的最大公約數(shù)為它們的最大公約數(shù)為:%dn,n);:%dn,n); printf( printf(它們的最小公倍數(shù)為它們的最小公倍數(shù)為:%dn,p/n);:%dn,p/n);其中用下面的輾轉(zhuǎn)相除法求出最大公約數(shù)其中用下面的輾轉(zhuǎn)相除法求出最大公約數(shù)n n while(m!=0) while(m!=0)r=n%m; n=m; m

23、=r; r=n%m; n=m; m=r; 把它獨(dú)立出來就是一個函數(shù)把它獨(dú)立出來就是一個函數(shù)int hcf(int m,int n)int hcf(int m,int n) int r; int r;while(m!=0)while(m!=0)r=n%m; n=m; m=r; return (n);r=n%m; n=m; m=r; return (n);用用 p/n p/n 得到最小公倍數(shù)得到最小公倍數(shù) 用do-while語句實(shí)現(xiàn)循環(huán) do-whiledo-while語句的特點(diǎn)語句的特點(diǎn): :先執(zhí)行循環(huán)體,然后判斷先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。循環(huán)條件是否成立。 一般形式一般形式: :

24、 do do 循環(huán)體語句循環(huán)體語句 while ( while (表達(dá)式表達(dá)式) );執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”) 時(shí),返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。例如例如: :為了保證輸入成績的正確為了保證輸入成績的正確, ,可以使用語句可以使用語句: : printf(printf(請輸入學(xué)生成績請輸入學(xué)生成績a(0-100):);a(0-100):); scanf(%d,&a); scanf(%d,&a);while (a100)while (a100) printf(n printf(n 輸入有誤輸入有

25、誤, ,請重輸請重輸: );: );scanf(%d,&a);scanf(%d,&a); 我們更簡潔地用我們更簡潔地用do-whiledo-while語句語句do do printf(“ printf(“請輸入成績請輸入成績 a a(0-1000-100):”);:”); scanf(“%d”,&a); scanf(“%d”,&a); while(a100);while(a100); 注意注意 while(a100);while(a100);的含義和的含義和; ;號號 用用do-whiledo-while語句計(jì)算語句計(jì)算 1010!i=1;s=1; do s=si=1;s=1; do s=s*

26、 *i;i+;while(i=10);i;i+;while(i=10);不是:不是:i=1;s=0; do s=si=1;s=0; do s=s* *i;i+;while(i=10);i;i+;while(i=10);也不是:也不是:doi=1;s=1; s=sdoi=1;s=1; s=s* *i;i+;while(i=10);i;i+;while(i=10);doi=1;s=0; s=sdoi=1;s=0; s=s* *i;i+;while(i=10); i;i+;while(i=10); whilewhile語句和用語句和用do-whiledo-while語句的比較語句的比較: :whil

27、e while 是先判斷條件,再決定是否執(zhí)行是先判斷條件,再決定是否執(zhí)行, ,所以可所以可能一次也不執(zhí)行能一次也不執(zhí)行; ; do-while do-while 是先執(zhí)行再判斷條件,決定是否還執(zhí)是先執(zhí)行再判斷條件,決定是否還執(zhí)行行, ,所以至少執(zhí)行一次所以至少執(zhí)行一次. . 用for 語句實(shí)現(xiàn)循環(huán) C C語言中的語言中的forfor語句使用最為靈活,不僅可以語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替情況,它完全可以代替whilewhile語

28、句。語句。 一般形式一般形式: : for(for(表達(dá)式表達(dá)式1 1;表達(dá)式;表達(dá)式2 2;表達(dá)式;表達(dá)式3) 3) 語句語句注意注意: : forfor中用兩個分號隔開中用兩個分號隔開, ,不能省略不能省略; ; forfor只對其后只對其后第一個語句第一個語句有效有效, ,如果要求對如果要求對多條語句有效多條語句有效, ,必須用必須用花括號花括號括之成為復(fù)合括之成為復(fù)合語語; ; for( )for( )后通常沒有分號后通常沒有分號, ,有分號將不執(zhí)行任有分號將不執(zhí)行任何語句何語句, ,只執(zhí)行自己的循環(huán)只執(zhí)行自己的循環(huán); ; 下面是下面是用用forfor語句語句顯示數(shù)組顯示數(shù)組a a中的

29、最小值的程序中的最小值的程序 #include #include void main( )void main( ) int a5=4,2,8,9,5,i,min; int a5=4,2,8,9,5,i,min;min=a0;min=a0;for(i=1;i5;i+)for(i=1;iai) min=ai; if(minai) min=ai; printf(%dn,min);printf(%dn,min); break語句和continue語句 breakbreak語句語句 breakbreak語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體, 即提前結(jié)束循環(huán)即提前結(jié)束循環(huán).

30、. 一般形式:一般形式: break;break;注意注意: :breakbreak語句只能用于循環(huán)語句或語句只能用于循環(huán)語句或switchswitch語句中。語句中。 continue語句 作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)行下一次循環(huán)的判定.一般形式: continue;例 把100200之間的不能被3整除的數(shù)輸出。 #include void main() int n; for (n=100;n=200;n+) if (n%3=0) continue; printf(%d,n); 注意是把能被注意是把能被3 3整除的跳過整除的跳過. .不能用不能用 n%3!=0

31、n%3!=01001nn 判斷m是否素?cái)?shù)。 #include #include void main() int m,i,k; scanf(%d,&m); k=sqrt(m); for (i=2;ik) printf(%d is a prime numbern,m);else printf(%d is not a prime numbern,m); 也可以是:#include #include void main() int m,I,k,flag=1; scanf(%d,&m); k=sqrt(m); for (i=2;i1字符串字符串2 2,函數(shù)值為,函數(shù)值為1 1。(3)(3) 如果字符串如

32、果字符串11str2) if(str1str2) 只能用只能用if(strcmp(str1if(strcmp(str1,str2)0) str2)0) 6. strlen6. strlen函數(shù)函數(shù) 其一般形式為:其一般形式為:strlen (strlen (字符數(shù)組字符數(shù)組) ) strlenstrlen是測試字符串長度的函數(shù)。函數(shù)的值為字符是測試字符串長度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長度串中的實(shí)際長度( (不包括不包括00在內(nèi)在內(nèi)) )。例如:例如:char strchar str1010=China;=China; printf(%d printf(%d,strlen(str);str

33、len(str);輸出結(jié)果不是輸出結(jié)果不是1010,也不是,也不是6 6,而是,而是5,5,即有效字符數(shù)即有效字符數(shù). .strlwr (strlwr (字符串字符串) ) strlwrstrlwr函數(shù)函數(shù)7. strlwr7. strlwr函數(shù)函數(shù) 其一般形式為:的作用是將字符串中大寫字其一般形式為:的作用是將字符串中大寫字母換成小寫字母。母換成小寫字母。 8. strupr8. strupr函數(shù)函數(shù) 其一般形式為:其一般形式為:strupr (strupr (字符串字符串) ) struprstrupr函數(shù)的作用是將字符串中小寫字母換函數(shù)的作用是將字符串中小寫字母換成大寫字母。成大寫字母。

34、 使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫:使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫:#include #include 我們可以不使用字符串函數(shù)編寫程序:我們可以不使用字符串函數(shù)編寫程序:例如例如: :不使用不使用strcat strcat 連接兩個字符串;連接兩個字符串;不使用不使用strcpy strcpy 拷貝字符串;拷貝字符串;不使用不使用strcmp strcmp 比較字符串;比較字符串;不使用不使用strcpy strcpy 拷貝字符串拷貝字符串: :1 1 用數(shù)組用數(shù)組: :For(i=0;i=strlen(s2);i+) S1i=s2i;For(i=0;i=strlen(s2);

35、i+) S1i=s2i;2 2 用指針用指針:p1=s1;p2=s2;:p1=s1;p2=s2;while(while(* *p1+=p1+=* *p2+); p2+); 尋找字符串尾:尋找字符串尾:while(s1i) i+;while(s1i) i+; i i 就是字符串尾的下標(biāo),再拷貝就是連接。就是字符串尾的下標(biāo),再拷貝就是連接。第七章 簡單的C語言函數(shù)#include #include / /* *文件包含文件包含* */ /void void main( ) main( ) / /* *主函數(shù)主函數(shù) * */ / / /* *函數(shù)體開始函數(shù)體開始* */ / printf (“Thi

36、s is a C program.n”);printf (“This is a C program.n”);/ /* *函數(shù)體語句函數(shù)體語句* */ / / /* *函數(shù)體結(jié)束函數(shù)體結(jié)束* */ / mainmain是主函數(shù)名是主函數(shù)名,void,void 是是函數(shù)類型函數(shù)類型 每個每個C C程序是由若干函數(shù)組成的程序是由若干函數(shù)組成的, ,其中必其中必有一個并且只能有一個有一個并且只能有一個主函數(shù)主函數(shù) main( ) main( ) 每個每個C C程序從程序從mainmain函數(shù)開始執(zhí)行函數(shù)開始執(zhí)行, ,到到mainmain函數(shù)函數(shù)結(jié)束結(jié)束, ,即執(zhí)行的是主函數(shù)的函數(shù)體即執(zhí)行的是主函數(shù)的函

37、數(shù)體, ,與主函數(shù)與主函數(shù)mainmain在程序中的位置無關(guān)在程序中的位置無關(guān); ; 是函數(shù)開始和結(jié)束的標(biāo)志是函數(shù)開始和結(jié)束的標(biāo)志, ,不可省略不可省略; ; 每個每個C C語句以分號結(jié)束語句以分號結(jié)束; ; 在主函數(shù)中直接或間接調(diào)用其他函數(shù)在主函數(shù)中直接或間接調(diào)用其他函數(shù); ; 使用標(biāo)準(zhǔn)輸入出庫使用標(biāo)準(zhǔn)輸入出庫函數(shù)時(shí)函數(shù)時(shí)應(yīng)寫:應(yīng)寫: #include #include 使用數(shù)學(xué)庫使用數(shù)學(xué)庫函數(shù)和字符串函數(shù)時(shí)函數(shù)和字符串函數(shù)時(shí)應(yīng)寫:應(yīng)寫:#include #include #include #include 一個函數(shù)由兩部分組成一個函數(shù)由兩部分組成: : 函數(shù)的首部:函數(shù)的首部:例例1.31

38、.3中的中的maxmax函數(shù)首部函數(shù)首部 int max(int x,int y ) int max(int x,int y ) 函數(shù)體:函數(shù)體:花括號內(nèi)的部分。若一個函數(shù)有多個花括號內(nèi)的部分。若一個函數(shù)有多個花括號花括號, ,則最外層的一對花括號為函數(shù)體的范則最外層的一對花括號為函數(shù)體的范圍。圍。 函數(shù)定義的一般形式函數(shù)定義的一般形式 類型標(biāo)識符類型標(biāo)識符函數(shù)名函數(shù)名(形式參數(shù)表列)(形式參數(shù)表列) 聲明部分聲明部分 語句部分語句部分 其中類型標(biāo)識符是函數(shù)返回值的數(shù)據(jù)類型其中類型標(biāo)識符是函數(shù)返回值的數(shù)據(jù)類型, ,如如:int,char:int,charfloat,double float,d

39、ouble 等等, ,也可以是無返回值也可以是無返回值, ,寫為寫為void.void.也可以沒有形式參數(shù)表列也可以沒有形式參數(shù)表列, ,稱為無參函數(shù)稱為無參函數(shù). .例如:例如:int maxint max(int int ,int int )int int ; / /* *函數(shù)體中聲明部分函數(shù)體中聲明部分* *?; / ; / * *函數(shù)體中語句部分函數(shù)體中語句部分* * returnreturn();(); / /* *返回值返回值 * */ / 函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值形式參數(shù)和實(shí)際參數(shù)形式參數(shù)和實(shí)際參數(shù) 形式參數(shù):形式參數(shù):函數(shù)名后面括弧中的變量名稱為函數(shù)名后面括弧中的變

40、量名稱為 “形式參數(shù)形式參數(shù)”(簡稱(簡稱“形參形參”); ;實(shí)際參數(shù):實(shí)際參數(shù):主調(diào)函數(shù)中調(diào)用一個函數(shù)時(shí),函主調(diào)函數(shù)中調(diào)用一個函數(shù)時(shí),函數(shù)名后面括弧中的參數(shù)數(shù)名后面括弧中的參數(shù)( (可以是一個表達(dá)式可以是一個表達(dá)式) )稱為稱為“實(shí)際參數(shù)實(shí)際參數(shù)”(簡稱(簡稱“實(shí)參實(shí)參”); ;函數(shù)返回值:函數(shù)返回值:returnreturn后面的括弧中的值作為后面的括弧中的值作為函數(shù)帶回的值(稱函數(shù)帶回的值(稱函數(shù)返回值函數(shù)返回值)。)。 說明:說明: 1.1.函數(shù)的返回值是通過函數(shù)中的函數(shù)的返回值是通過函數(shù)中的returnreturn語句獲語句獲得的。得的。一個函數(shù)中可以有一個以上的一個函數(shù)中可以有一個

41、以上的returnreturn語句,執(zhí)語句,執(zhí)行到哪一個行到哪一個returnreturn語句,哪一個語句起作用。語句,哪一個語句起作用。 函數(shù)的調(diào)用函數(shù)的調(diào)用 對被調(diào)用函數(shù)的聲明和函數(shù)原型對被調(diào)用函數(shù)的聲明和函數(shù)原型1.1.首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫函首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù))。數(shù)或用戶自己定義的函數(shù))。3.3.如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面,應(yīng)該在主調(diào)函調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面,應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作聲明數(shù)中對被調(diào)用的函數(shù)作聲

42、明, ,即寫上函數(shù)的原型。即寫上函數(shù)的原型。用函數(shù)首部加上用函數(shù)首部加上 ; ;號表示函數(shù)聲明號表示函數(shù)聲明. .2.2.如果使用庫函數(shù),還應(yīng)該在本文件開頭用如果使用庫函數(shù),還應(yīng)該在本文件開頭用#include #include 命令將調(diào)用有關(guān)庫函數(shù)時(shí)所需用到的信息命令將調(diào)用有關(guān)庫函數(shù)時(shí)所需用到的信息“包含包含”到到本文件中來。本文件中來。 如如 #include #include #include #include #include #include 函數(shù)調(diào)用的實(shí)例(求兩整數(shù)的最大公約數(shù)):函數(shù)調(diào)用的實(shí)例(求兩整數(shù)的最大公約數(shù)):#include #include void main()vo

43、id main() int hcf(int u,int v);int hcf(int u,int v); / /函數(shù)聲明函數(shù)聲明 int u,v,h; int u,v,h; scanf(%d,%d,&u,&v); scanf(%d,%d,&u,&v); h=hcf(u,v); h=hcf(u,v); printf(%d,%d printf(%d,%d的最大公約數(shù)是:的最大公約數(shù)是:%dn,u,v,h);%dn,u,v,h); / /函數(shù)定義函數(shù)定義int hcf(int u,int v)int hcf(int u,int v) / /函數(shù)首部函數(shù)首部 int r; int r; while (

44、v!=0) while (v!=0) r=u%v;u=v;v=r; r=u%v;u=v;v=r; return(u); return(u); 局部變量和全局變量局部變量和全局變量 局部變量局部變量在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的。這稱為些變量的。這稱為“局部變量局部變量”。 在函內(nèi)定義的變量是在函內(nèi)定義的變量是局部變量局部變量, ,而在函數(shù)外定義的而在函數(shù)外定義的變量稱為外部變量變

45、量稱為外部變量, ,也稱全局變量也稱全局變量. . 考察靜態(tài)局部變量的值考察靜態(tài)局部變量的值#include #include void mainvoid main()()int int (int aint a); ; ,;,; (;(;) ) ( ,();,();int int (int int ) int int ; ; 3 3; 2 2; ();();3 3次調(diào)用函數(shù)次調(diào)用函數(shù)f f 后,后,c c 的值是的值是 9 9第八章 地址和指針的概念內(nèi)存區(qū)的每一個字節(jié)有一個編號,這就是內(nèi)存區(qū)的每一個字節(jié)有一個編號,這就是“地址地址”。如果在程序中定義了一個變量,在對程序如果在程序中定義了一個變

46、量,在對程序進(jìn)行編譯時(shí),系統(tǒng)就會給這個變量分配內(nèi)進(jìn)行編譯時(shí),系統(tǒng)就會給這個變量分配內(nèi)存單元。存單元。 一個變量的地址稱為該變量的一個變量的地址稱為該變量的“指針指針”。例如,地址例如,地址20002000是變量的指針。如果有是變量的指針。如果有一個變量專門用來存放另一變量的地址一個變量專門用來存放另一變量的地址(即指針),則它稱為(即指針),則它稱為“指針變量指針變量”。指針和指針變量的定義:指針和指針變量的定義: 指針變量的引用指針變量的引用 注意:指針變量中只能存放地址(指針),不要將一個整數(shù)(或任何其他非地址類型的數(shù)據(jù))賦給一個指針變量。 例例 通過指針變量訪問整型變量通過指針變量訪問整

47、型變量#include #include voidvoidmain ( )main ( ) int int ; int int * *p p; ; p p; / /* *把變量的地址賦給把變量的地址賦給 p p * */ / printf(“%d,%dn”,a, printf(“%d,%dn”,a,* *p);p); 對對“”和和“* *”運(yùn)算符說明:運(yùn)算符說明:如果已執(zhí)行了語句如果已執(zhí)行了語句 p p 那么:那么:那么那么 a a 和和 * *p p 是相同的值是相同的值所以,如果所以,如果 a=3a=3; ;Printf(“%d,%d”,a,Printf(“%d,%d”,a,* *p);

48、p); 顯示是顯示是 3 3,3 3 所以,如果所以,如果 * *p=6p=6; ;Printf(“%d,%d”,a,Printf(“%d,%d”,a,* *p); p); 顯示是顯示是 6 6,6 6 指針變量作為函數(shù)參數(shù)指針變量作為函數(shù)參數(shù)例例10 . 3 對輸入的兩個整數(shù)按大小順序輸出對輸入的兩個整數(shù)按大小順序輸出 #include #include void mainvoid main()()void swapvoid swap(int int * *,int int * *); ;int int ,;,;int int * *p p,* *p p; scanfscanf(,);,);

49、p p ; p2 p2 ; ifif() ) swapswap( p p , p2 p2 ););printfprintf(, ,);,); void swapvoid swap(int int * *,int int * *) int tempint temp; temptemp* *1 1; * * *; * *temptemp; 下面的函數(shù)下面的函數(shù): :void swapvoid swap(int aint a,int bint b) int tempint temp; temptempa a; a=ba=b; b=tempb=temp; / /* * 只在函數(shù)中交換了局部變量只在函數(shù)

50、中交換了局部變量 * */ / 同樣不可用函數(shù):同樣不可用函數(shù): void swapvoid swap(int int * *p p,int bint b)或或 void swapvoid swap(int aint a,int int * *p p)只能用函數(shù)只能用函數(shù) void swapvoid swap(int int * *p1p1,int int * *p2p2)處理主調(diào)用函數(shù)中的變量處理主調(diào)用函數(shù)中的變量定義一個指向數(shù)組元素的指針變量的方法定義一個指向數(shù)組元素的指針變量的方法例如:例如:int aint a1010, ,* *p p; p=a; (ap=a; (a是數(shù)組的首地址是數(shù)

51、組的首地址, ,注意注意a a前沒有地址符前沒有地址符) ) 或或 p=&a0; p=&a0; 雖然雖然a a和和p p都是地址都是地址, ,它們是不同的它們是不同的: :a a 是數(shù)組的首地址是數(shù)組的首地址, ,一旦由系統(tǒng)分配一旦由系統(tǒng)分配, ,就是一個固定的值就是一個固定的值; ;而而p p是指針變量是指針變量, ,是可以改變的是可以改變的. .所以所以 a+a+是錯誤的是錯誤的, ,而而p+p+是正確的是正確的. . 指向數(shù)組元素的指針指向數(shù)組元素的指針10.10. .通過指針引用數(shù)組元素通過指針引用數(shù)組元素如果如果 int a6,int a6,* *p=a;p=a;引用一個數(shù)組元素,可

52、以用:引用一個數(shù)組元素,可以用:()() 下標(biāo)法,如下標(biāo)法,如aiai形式;形式;()() 地址或指針法,如地址或指針法,如* *(a+i)(a+i)或或* *(p+i)(p+i)注意注意: a0-a5: a0-a5合法合法,a6,a6非法非法; ; * *(a)-(a)-* *(a+5)(a+5)合法合法, ,* *(a+6)(a+6)非法非法; ; * *(p)-(p)-* *(p+5)(p+5)合法合法, ,* *(p+6)(p+6)非法非法; ; 字符串與指針字符串的表示形式字符串的表示形式 例例 定義一個字符數(shù)組,對它初始化,定義一個字符數(shù)組,對它初始化, 然后輸出該字符串然后輸出該

53、字符串 #include #include void mainvoid main()()char char * *s sabcdefgabcdefg; printfprintf(%nn,s s);); 輸出輸出 abcdefgabcdefg(1) 用字符數(shù)組存放一個字符串,然后輸出該字符串。用字符數(shù)組存放一個字符串,然后輸出該字符串。輸出輸出 cdefg cdefg 的語句是:的語句是:printfprintf(%nn,s+2s+2);); s+2 s+2 是指針是指針輸出輸出 efg efg 的語句是:的語句是:printfprintf(%nn,s+4s+4);); s+4s+4是指針是指針

54、輸出字符輸出字符 f f 的語句是:的語句是:printfprintf(%cn%cn,* *(s+5)(s+5));); * *(s+5)(s+5)是字符是字符注意:輸出字符串用注意:輸出字符串用%s %s 和指針;和指針; 輸出字符用輸出字符用%c %c 和和* *( (指針指針) )指針運(yùn)算與數(shù)據(jù):指針運(yùn)算與數(shù)據(jù):#include #include void main( ) void main( ) int a5=2,4,6,8,10, int a5=2,4,6,8,10,* *p; p=a;p; p=a;printf(%d,printf(%d,* *(p+2);(p+2);printf(

55、%d,printf(%d,* *+p);+p);printf(%d,printf(%d,* *p+);p+);printf(%dn,printf(%dn,* *+p);+p);顯示顯示 6,4,4,86,4,4,8注意注意 1 p+2 1 p+2 沒有改變沒有改變p p 的值的值; ;注意注意 2 +p,2 +p,和和 p+p+的區(qū)別的區(qū)別. .調(diào)用函數(shù)實(shí)現(xiàn)數(shù)組的相反順序存放:調(diào)用函數(shù)實(shí)現(xiàn)數(shù)組的相反順序存放:#include #include void main()void main()void inv(int x ,int n); void inv(int x ,int n); /函數(shù)聲明函

56、數(shù)聲明 int i,a10=3,7,9,11,0,6,7,5,4,2;int i,a10=3,7,9,11,0,6,7,5,4,2; printf(The original array:n); printf(The original array:n); for(i=0;i10;i+) for(i=0;i10;i+) printf(%d ,ai); printf(%d ,ai); printf(n); printf(n); inv(a,10); inv(a,10); /調(diào)用函數(shù)調(diào)用函數(shù) printf(The array has been inverted:n);printf(The array

57、has been inverted:n); for(i=0;i10;i+) for(i=0;i10;i+) printf(%d ,ai); printf(%d ,ai); printf(n); printf(n); / / 用數(shù)組元素:用數(shù)組元素:void inv(int x ,int n) void inv(int x ,int n) int temp,i,j,m=(n-1)/2; int temp,i,j,m=(n-1)/2; for(i=0;i=m;i+) for(i=0;i=m;i+) j=n-1-i; j=n-1-i; temp=xi;xi=xj;xj=temp; temp=xi;x

58、i=xj;xj=temp; /或用指針:或用指針:void inv(int void inv(int * *x,int n) x,int n) int int * *p,temp,p,temp,* *i,i,* *j,m=(n-1)/2;j,m=(n-1)/2; i=x;j=x+n-1;p=x+m; i=x;j=x+n-1;p=x+m; for(;i=p;i+,j-) for(;i=p;i+,j-) temp= temp=* *i;i;* *i=i=* *j;j;* *j=temp;j=temp; 這時(shí)函數(shù)聲明要改成:這時(shí)函數(shù)聲明要改成:void inv(int void inv(int *

59、*x,int n); x,int n); 用選擇法實(shí)現(xiàn)數(shù)組從大到小排序的函數(shù):用選擇法實(shí)現(xiàn)數(shù)組從大到小排序的函數(shù):void sort(int x ,int n)void sort(int x ,int n) int i,j,k,t; int i,j,k,t; for(i=0;in-1;i+) for(i=0;in-1;i+) k=i; k=i; for(j=i+1;jn;j+) for(j=i+1;jxk) k=j; if(xjxk) k=j; if(k!=i) if(k!=i)t=xi;xi=xk;xk=t;t=xi;xi=xk;xk=t; 第九章n問題定義:問題定義: 有時(shí)需要將不同類型的

60、數(shù)據(jù)組合成一個有機(jī)有時(shí)需要將不同類型的數(shù)據(jù)組合成一個有機(jī)的整體,以便于引用。的整體,以便于引用。如:如:一個學(xué)生有學(xué)號一個學(xué)生有學(xué)號/ /姓名姓名/ /性別性別/ /年齡年齡/ /地址等地址等int num; int num; char name20;char name20; char sex; char sex; int age; int age; char addr30;char addr30; n 聲明一個結(jié)構(gòu)體類型的一般形式為:聲明一個結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名 成員表列;如:如:struct student int num;char name20;char se

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論