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

下載本文檔

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

文檔簡(jiǎn)介

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 編寫(xiě)程序編寫(xiě)程序( (2 2小題小題, ,每題每題1010分分, ,共共2020分分) )第一章 第第1 1章章 C C語(yǔ)言概述語(yǔ)言概述本章包含本章包含4 4項(xiàng)目重點(diǎn)內(nèi)容項(xiàng)目重點(diǎn)內(nèi)容: :1 簡(jiǎn)單的C語(yǔ)言程序#include voi

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

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ī)定:語(yǔ)言規(guī)定標(biāo)識(shí)符語(yǔ)言規(guī)定標(biāo)識(shí)符: :1 1 只能由字母

4、、數(shù)字和下劃線三種字符組成只能由字母、數(shù)字和下劃線三種字符組成; ; ( (注意不要混淆下劃線注意不要混淆下劃線_ _和杠號(hào)和杠號(hào)( (減號(hào))減號(hào))-)-)2 2 第一個(gè)字符必須為字母或下劃線第一個(gè)字符必須為字母或下劃線; ;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ù)。在語(yǔ)言中,整常數(shù)整型常量即整常數(shù)。在語(yǔ)言中,整常數(shù)

5、可用以下三種形式表示:可用以下三種形式表示:(1)(1)十進(jìn)制整數(shù)。十進(jìn)制整數(shù)。 如:如:123, -456123, -456(2)(2)八進(jìn)制整數(shù)。以八進(jìn)制整數(shù)。以0 0開(kāi)頭的數(shù)是八進(jìn)制數(shù)。開(kāi)頭的數(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開(kāi)頭的數(shù)是開(kāi)頭的數(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)用單引號(hào)包含的單個(gè)字符(2)用單引號(hào)包含的由開(kāi)始的轉(zhuǎn)義字符a,A, a,A, 1,037,x2d1,037,x2dabcabc,“a”a”,082,x5g082,x5g 字符串常量字符串常量 字符串常量是一對(duì)字符串常量是一對(duì)雙引號(hào)雙引號(hào)括起來(lái)的字符序列括起來(lái)的字符序列. . 合法的字符串常量合法的字符串常量: :“How do you do.”, “CHINA”How do you do.”, “CHINA”, “a” a” , “ “$123.45”$123.45” 可以輸出一個(gè)字符串,如

7、可以輸出一個(gè)字符串,如printf(“How do you do.”)printf(“How do you do.”);運(yùn)算符簡(jiǎn)介運(yùn)算符簡(jiǎ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ù)同號(hào)結(jié)果是正數(shù),兩數(shù)異數(shù)相除結(jié)果是整數(shù);兩數(shù)同號(hào)結(jié)果是正數(shù),兩數(shù)異號(hào)結(jié)果是負(fù)數(shù),且舍入得方向不固定,號(hào)結(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í)行本條語(yǔ)句的原值執(zhí)行本條語(yǔ)句, , 而在執(zhí)行下條語(yǔ)句前將而在執(zhí)行下條語(yǔ)句前將 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)算符 賦值符號(hào)賦值符號(hào)“”就是賦值運(yùn)算符,它的作用是就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量將一個(gè)數(shù)據(jù)賦給一個(gè)變量, ,如如a=5;a=5;(單等號(hào))(單等號(hào))而而 a=5 a=5 是判斷是判斷 a a是否等于是否等于 5; 5; (雙等號(hào))(雙等號(hào))如如 int a=3; if(a=2) int a=3; if(a=2) 為假,為假, 而而 if(a=5) if(a=5) 為真。為真。第三章 C語(yǔ)句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語(yǔ)句 C語(yǔ)句概述 控制語(yǔ)句 完成一定

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

12、輸出表列)%d%d: :以帶符號(hào)的十進(jìn)制形式輸出整數(shù)以帶符號(hào)的十進(jìn)制形式輸出整數(shù)%o%o: :以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)%x%x: :以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù) 格式輸入與輸出 %u%u: :以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)%c%c: :以字符形式輸出,只輸出一個(gè)字符以字符形式輸出,只輸出一個(gè)字符%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格式中輸出寬度較短的一種格式,不輸格式中輸出寬度較短的一種格式,不輸 出無(wú)意義的出無(wú)意義的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)算符 在格式輸入與輸出中格式控制是用雙引號(hào)包括的,其中一般帶有%d,%c,%f,%s等各種對(duì)數(shù)據(jù)類型的要求.第四章 關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符及其優(yōu)先次序 (小于) (大于)= (大于或等于)= (等于)!= (不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)優(yōu)先級(jí)相同(低)說(shuō)明:說(shuō)明:關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2.關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)

15、表達(dá)式(可以是算術(shù)表達(dá)式或用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或 關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式)關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式) 接起來(lái)的式子,稱關(guān)系表達(dá)式接起來(lái)的式子,稱關(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語(yǔ)言中沒(méi)有專用語(yǔ)言中沒(méi)有專用的邏輯值,的邏輯值,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語(yǔ)句 2.If2.If語(yǔ)句的嵌套語(yǔ)句的嵌套在在ifif語(yǔ)句中又包含一個(gè)或多個(gè)語(yǔ)句中又包含一個(gè)或多個(gè)ifif語(yǔ)句稱為語(yǔ)句稱為ifif語(yǔ)句的嵌套。語(yǔ)句的嵌套。形式:形式:if()if()if() if() 語(yǔ)句語(yǔ)句1 1else else 語(yǔ)句語(yǔ)句2 2elseelseif() if(

17、) 語(yǔ)句語(yǔ)句3 3else else 語(yǔ)句語(yǔ)句4 4內(nèi)嵌內(nèi)嵌ifif if語(yǔ)句 如如 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個(gè),因?yàn)閭€(gè),因?yàn)閍b,abmax=(ab)?)?a:b;a:b;min=(ab)min=(ab)?a:b;a:b; if語(yǔ)句 例: 輸入一個(gè)字符,判別它是否大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(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的值為大寫(xiě)字母,則條件表達(dá)式的值為(),即相應(yīng)的小寫(xiě)字母。如果ch的值不是大寫(xiě)字母,則條件表達(dá)式的值為,即不進(jìn)行轉(zhuǎn)換。 幾個(gè)典型的判斷幾個(gè)典型的判斷: :判斷大寫(xiě)字母:判斷大寫(xiě)字母:if(A=c & c=Z)if(A=c & c=Z)判斷小寫(xiě)字母:判斷小寫(xiě)字母: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)不可以沒(méi)有不可以沒(méi)有 & & ,也不能沒(méi)有,也不能沒(méi)有 即不能用即不能用 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語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn) ( (若若a a是整數(shù)是整數(shù)) )按照考試成績(jī)輸出等級(jí)百分制分

20、數(shù)段按照考試成績(jī)輸出等級(jí)百分制分?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語(yǔ)句實(shí)現(xiàn)循環(huán)whilewhile語(yǔ)句用

21、來(lái)實(shí)現(xiàn)語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。一般形式:一般形式: while (while (表達(dá)式表達(dá)式) ) 語(yǔ)句語(yǔ)句 當(dāng)表達(dá)式為非當(dāng)表達(dá)式為非0 0值時(shí),執(zhí)行值時(shí),執(zhí)行whilewhile語(yǔ)句中的語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是內(nèi)嵌語(yǔ)句。其特點(diǎn)是: :先判斷表達(dá)式,后執(zhí)先判斷表達(dá)式,后執(zhí)行語(yǔ)句。行語(yǔ)句。 求正整數(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(請(qǐng)輸入兩個(gè)正整數(shù)請(qǐng)輸入兩個(gè)正整數(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ú)立出來(lái)就是一個(gè)函數(shù)把它獨(dú)立出來(lái)就是一個(gè)函數(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語(yǔ)句實(shí)現(xiàn)循環(huán) do-whiledo-while語(yǔ)句的特點(diǎn)語(yǔ)句的特點(diǎn): :先執(zhí)行循環(huán)體,然后判斷先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。循環(huán)條件是否成立。 一般形式一般形式: :

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

25、誤, ,請(qǐng)重輸請(qǐng)重輸: );: );scanf(%d,&a);scanf(%d,&a); 我們更簡(jiǎn)潔地用我們更簡(jiǎn)潔地用do-whiledo-while語(yǔ)句語(yǔ)句do do printf(“ printf(“請(qǐng)輸入成績(jī)請(qǐng)輸入成績(jī) a a(0-1000-100):”);:”); scanf(“%d”,&a); scanf(“%d”,&a); while(a100);while(a100); 注意注意 while(a100);while(a100);的含義和的含義和; ;號(hào)號(hào) 用用do-whiledo-while語(yǔ)句計(jì)算語(yǔ)句計(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語(yǔ)句和用語(yǔ)句和用do-whiledo-while語(yǔ)句的比較語(yǔ)句的比較: :whil

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

28、句。語(yǔ)句。 一般形式一般形式: : for(for(表達(dá)式表達(dá)式1 1;表達(dá)式;表達(dá)式2 2;表達(dá)式;表達(dá)式3) 3) 語(yǔ)句語(yǔ)句注意注意: : forfor中用兩個(gè)分號(hào)隔開(kāi)中用兩個(gè)分號(hào)隔開(kāi), ,不能省略不能省略; ; forfor只對(duì)其后只對(duì)其后第一個(gè)語(yǔ)句第一個(gè)語(yǔ)句有效有效, ,如果要求對(duì)如果要求對(duì)多條語(yǔ)句有效多條語(yǔ)句有效, ,必須用必須用花括號(hào)花括號(hào)括之成為復(fù)合括之成為復(fù)合語(yǔ)語(yǔ); ; for( )for( )后通常沒(méi)有分號(hào)后通常沒(méi)有分號(hào), ,有分號(hào)將不執(zhí)行任有分號(hào)將不執(zhí)行任何語(yǔ)句何語(yǔ)句, ,只執(zhí)行自己的循環(huán)只執(zhí)行自己的循環(huán); ; 下面是下面是用用forfor語(yǔ)句語(yǔ)句顯示數(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語(yǔ)句和continue語(yǔ)句 breakbreak語(yǔ)句語(yǔ)句 breakbreak語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體, 即提前結(jié)束循環(huán)即提前結(jié)束循環(huán).

30、. 一般形式:一般形式: break;break;注意注意: :breakbreak語(yǔ)句只能用于循環(huán)語(yǔ)句或語(yǔ)句只能用于循環(huán)語(yǔ)句或switchswitch語(yǔ)句中。語(yǔ)句中。 continue語(yǔ)句 作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(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整除的跳過(guò)整除的跳過(guò). .不能用不能用 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是測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符是測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長(zhǎng)度串中的實(shí)際長(zhǎng)度( (不包括不包括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ù) 其一般形式為:的作用是將字符串中大寫(xiě)字其一般形式為:的作用是將字符串中大寫(xiě)字母換成小寫(xiě)字母。母換成小寫(xiě)字母。 8. strupr8. strupr函數(shù)函數(shù) 其一般形式為:其一般形式為:strupr (strupr (字符串字符串) ) struprstrupr函數(shù)的作用是將字符串中小寫(xiě)字母換函數(shù)的作用是將字符串中小寫(xiě)字母換成大寫(xiě)字母。成大寫(xiě)字母。

34、 使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫(kù):使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫(kù):#include #include 我們可以不使用字符串函數(shù)編寫(xiě)程序:我們可以不使用字符串函數(shù)編寫(xiě)程序:例如例如: :不使用不使用strcat strcat 連接兩個(gè)字符串;連接兩個(gè)字符串;不使用不使用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),再拷貝就是連接。第七章 簡(jiǎn)單的C語(yǔ)言函數(shù)#include #include / /* *文件包含文件包含* */ /void void main( ) main( ) / /* *主函數(shù)主函數(shù) * */ / / /* *函數(shù)體開(kāi)始函數(shù)體開(kāi)始* */ / printf (“Thi

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

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

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

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

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

41、以上的returnreturn語(yǔ)句,執(zhí)語(yǔ)句,執(zhí)行到哪一個(gè)行到哪一個(gè)returnreturn語(yǔ)句,哪一個(gè)語(yǔ)句起作用。語(yǔ)句,哪一個(gè)語(yǔ)句起作用。 函數(shù)的調(diào)用函數(shù)的調(diào)用 對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型1.1.首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫(kù)函首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫(kù)函數(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ù)中對(duì)被調(diào)用的函數(shù)作聲明數(shù)中對(duì)被調(diào)用的函數(shù)作聲

42、明, ,即寫(xiě)上函數(shù)的原型。即寫(xiě)上函數(shù)的原型。用函數(shù)首部加上用函數(shù)首部加上 ; ;號(hào)表示函數(shù)聲明號(hào)表示函數(shù)聲明. .2.2.如果使用庫(kù)函數(shù),還應(yīng)該在本文件開(kāi)頭用如果使用庫(kù)函數(shù),還應(yīng)該在本文件開(kāi)頭用#include #include 命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息“包含包含”到到本文件中來(lái)。本文件中來(lái)。 如如 #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); 局部變量和全局變量局部變量和全局變量 局部變量局部變量在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說(shuō)只有在本函數(shù)在本函數(shù)范圍內(nèi)有效,也就是說(shuō)只有在本函數(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ū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址地址”。如果在程序中定義了一個(gè)變量,在對(duì)程序如果在程序中定義了一個(gè)變

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

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); 對(duì)對(duì)“”和和“* *”運(yùn)算符說(shuō)明:運(yùn)算符說(shuō)明:如果已執(zhí)行了語(yǔ)句如果已執(zhí)行了語(yǔ)句 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 對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出對(duì)輸入的兩個(gè)整數(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ù)中的變量定義一個(gè)指向數(shù)組元素的指針變量的方法定義一個(gè)指向數(shù)組元素的指針變量的方法例如:例如:int aint a1010, ,* *p p; p=a; (ap=a; (a是數(shù)組的首地址是數(shù)

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

52、以用:引用一個(gè)數(shù)組元素,可以用:()() 下標(biāo)法,如下標(biāo)法,如aiai形式;形式;()() 地址或指針?lè)?,如地址或指針?lè)ǎ? *(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)非法非法; ; 字符串與指針字符串的表示形式字符串的表示形式 例例 定義一個(gè)字符數(shù)組,對(duì)它初始化,定義一個(gè)字符數(shù)組,對(duì)它初始化, 然后輸出該字符串然后輸出該

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

54、輸出字符輸出字符 f f 的語(yǔ)句是:的語(yǔ)句是: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 沒(méi)有改變沒(méi)有改變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問(wèn)題定義:?jiǎn)栴}定義: 有時(shí)需要將不同類型的

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論