全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程64總復(fù)習(xí)完整_第1頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程64總復(fù)習(xí)完整_第2頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程64總復(fù)習(xí)完整_第3頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程64總復(fù)習(xí)完整_第4頁(yè)
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程64總復(fù)習(xí)完整_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1C語(yǔ)言總復(fù)習(xí)(64學(xué)時(shí))以考試難度為限2一、一、C語(yǔ)言的數(shù)據(jù)表示語(yǔ)言的數(shù)據(jù)表示 1. 1 常量常量和和變量變量 1. 2 表達(dá)式表達(dá)式 1. 3 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)型、指針類(lèi)型 1.4 輸入、輸出輸入、輸出31.1 常量和變量常量和變量 1.常量常量 常量是在程序執(zhí)行中,值不發(fā)生改變的數(shù)據(jù)。其值預(yù)先決定,之后不變。有不同的數(shù)據(jù)類(lèi)型。 (1)常數(shù)(有的稱(chēng)直接常量、頁(yè)面常量) 例如的: 整數(shù):+5 、-3、017(八進(jìn)制)、0 x1f(16進(jìn)制) 實(shí)數(shù)(浮點(diǎn)數(shù)):3.14 、-1.2E-3 、1E10 單個(gè)字符: A,占一個(gè)字節(jié) ,轉(zhuǎn)義字符 非法 77 (八進(jìn)制ASCII碼63,

2、?),78非法 x3f (十六進(jìn)制ASCII碼63,?) x3g非法 字符串: “A” 后面有0,占兩個(gè)字節(jié)E3,2E3.0不合法不是整型量占一個(gè)字節(jié)4 (2)符號(hào)常量 給常量起標(biāo)識(shí)符名字。 C語(yǔ)言的符號(hào)常量(用宏定義): #define PI 3.14159265 好處:提高程序易讀性;方便修改常量的值;注意:1.一般用大寫(xiě)字母。2, #define M 3 不是C語(yǔ)句,后面沒(méi)有“;”。3.可以做M+1,不能做M+. (3)地址常量 當(dāng)數(shù)組在定義時(shí),其變量名為其首地址,是地址常量。 int a10;可以做a+1,不能做a+. 51.1 常量和變量常量和變量 2 變量變量 用各種操作來(lái)改變值數(shù)

3、據(jù)。 從“名名”和“值值”兩個(gè)角度認(rèn)識(shí)變量 (1)變量名 每個(gè)變量,要在使用前定義變量的名字,遵循標(biāo)識(shí)符命名規(guī)則。 只能用字母、數(shù)字和下劃線組成。 不能以數(shù)字開(kāi)頭。 不能用保留字(int,printf,main.)。6 變量定義就是申請(qǐng)數(shù)據(jù)的存儲(chǔ)空間,登記數(shù)據(jù)的各種存儲(chǔ)特性。 例如: int m ;2個(gè)字節(jié) -215215-1(-3276832767) long n; 4個(gè)字節(jié) -231231-1 char ch; 1 個(gè)字節(jié) 0255 float x; 4個(gè)字節(jié) 3.4 (10-38 1038) double y; 8個(gè)字節(jié) 1.7(10-308 10308) 可以用sizeof獲得字長(zhǎng) s

4、izeof(char)=1 sizeof(int)=2 sizeof(double)=87 (2)變量的值)變量的值 變量值就是由變量名所指定空間上的存儲(chǔ)數(shù)據(jù)內(nèi)容。即變量的當(dāng)前值。 數(shù)據(jù)內(nèi)容用語(yǔ)言的操作語(yǔ)句來(lái)改變。 賦值語(yǔ)句;鍵盤(pán)輸入語(yǔ)句; char chx; int m; /* 變量的定義 */ chx=A; m=12*3; /* 賦值語(yǔ)句 */ scanf(“%d”,&m); /* 鍵盤(pán)輸入語(yǔ)句 */ 在程序運(yùn)行時(shí),將數(shù)據(jù)存入制定內(nèi)存空間。 變量初始化:變量初始化:定義變量時(shí)同時(shí)確定變量初值。 例如: char chy=a; int weight=2; 81.2 C語(yǔ)言的語(yǔ)言的表達(dá)

5、式表達(dá)式 1 1、算術(shù)表達(dá)式、算術(shù)表達(dá)式 2 2、關(guān)系表達(dá)式、關(guān)系表達(dá)式 3 3、邏輯表達(dá)式、邏輯表達(dá)式 4 4、賦值表達(dá)式、賦值表達(dá)式 5 5、逗號(hào)表達(dá)式、逗號(hào)表達(dá)式 6 6、條件表達(dá)式、條件表達(dá)式 7 7、其他表達(dá)式、其他表達(dá)式C語(yǔ)言的語(yǔ)言的表達(dá)式表達(dá)式:使用規(guī)定的運(yùn)算符運(yùn)算符,將常量、變量、函數(shù)(調(diào)用)連結(jié)的一個(gè)有意義的式子。 91、算術(shù)表達(dá)式、算術(shù)表達(dá)式 用算術(shù)運(yùn)算符來(lái)表示對(duì)數(shù)據(jù)的算術(shù)運(yùn)算求值過(guò)程。 算術(shù)運(yùn)算符: + - * / % 2/3結(jié)果是0,2%3結(jié)果是2 注意不同類(lèi)型運(yùn)算問(wèn)題:doublelongunsignedint floatchar short高低102 2、關(guān)系表達(dá)式

6、、關(guān)系表達(dá)式 關(guān)系運(yùn)算符: = 0 , sin(x)=0.5, (a+b)=(c*d) 注意語(yǔ)法合理與數(shù)學(xué)邏輯錯(cuò)誤問(wèn)題: 分析:10=a=15 a=9 是假 10=a=1510=a 假 00=15 真所以要寫(xiě)成10=a&a=15113、邏輯表達(dá)式 用邏輯表達(dá)式來(lái)表示對(duì)數(shù)據(jù)的邏輯關(guān)系判斷,運(yùn)算結(jié)果是邏輯值“真”1或者“假”0。 C邏輯運(yùn)算符包括: ! & | 參加邏輯運(yùn)算的數(shù)據(jù)必須是邏輯量,可以是邏輯類(lèi)型的變量、常量,關(guān)系表達(dá)式或邏輯表達(dá)式。 C語(yǔ)言中,沒(méi)有專(zhuān)門(mén)的邏輯量,語(yǔ)言中,沒(méi)有專(zhuān)門(mén)的邏輯量,1是真值,是真值,0是是假值。也認(rèn)為假值。也認(rèn)為非零非零的值為真值。的值為真值。 如

7、:int a=3, b=4, c=-5; (1) ! (ab) & ! c | 1) (2) if(a)printf(“n yes”);a,c均按非0(即真)處理12邏輯運(yùn)算規(guī)律 在&(與)表達(dá)式中,若&的左端為假, 則不再計(jì)算另一端,該表達(dá)式值肯定為 0(假)。 在|(或)表達(dá)式中,若|的左端為真,則不再計(jì)算另一端,表達(dá)式的值必定為 1(真)。 nint a=5,b=1nk=a0nk?b?假,后面不算了k=0,b=113 判斷閏年的條件是:能被4整除但不能被100整除,或能被400整除。(x4= =0&x100!=0) 水仙花數(shù)是指一個(gè)三位正整數(shù),其各位數(shù)字的

8、立方和等于該數(shù)本身 (k*100+m*10+n= =k*k*k+m*m*m+n*n*n) 三角形的基本條件 (a+b)c)&(c+b)a)&(c+a)b) 14 4、賦值表達(dá)式=,+=,-=,*=,/=,+(單目),- (單目)級(jí)別僅高于逗號(hào)表達(dá)式,右結(jié)合int a=3,c=2,ba=b=c;n*=m+2 相當(dāng)于 n=n*(m+2)k=i+; 先k=i,再i=i+1k=+i; 先i=i+1,再k=ic賦值給b,b=2b賦值給a,a=215 5、條件表達(dá)式 e1?e2:e3若e1為真,表達(dá)式的值為e2,否則為e3. (- -a=b+)? -a : b +5-1=4 T a=4-a

9、 a=3 表達(dá)式的值為3a=5,b=44-1=5 F b=6b + b=7表達(dá)式的值為6a=4,b=5條件表達(dá)式的值的類(lèi)型為e2,e3二者中類(lèi)型較高者。如果y=5; y3?-1.0:2 其值為2.016 6、逗號(hào)表達(dá)式 表達(dá)式的值等于最后一個(gè)表達(dá)式的值,運(yùn)算等級(jí)最低! a=5,b=2,c=3 a=7+b+c, a+ a=(7+b+c, a+) a=12a=57、強(qiáng)制類(lèi)型轉(zhuǎn)換表達(dá)式(單目) int m; sqrt(float) m);并沒(méi)有改變m的類(lèi)型和數(shù)值17理解記憶運(yùn)算符表 (高高)(低低)!+,-,等算數(shù)運(yùn)算符算數(shù)運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 邏輯運(yùn)算符邏輯運(yùn)算符 & |條件運(yùn)算符

10、條件運(yùn)算符 賦值運(yùn)算符賦值運(yùn)算符 逗號(hào)運(yùn)算符 右結(jié)合單目運(yùn)算符賦值運(yùn)算符181.3 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型:在高級(jí)語(yǔ)言的數(shù)據(jù)表示機(jī)制中,數(shù)據(jù)類(lèi)型(data tyPe )是個(gè)核心概念。簡(jiǎn)單類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型整型實(shí)型字符型數(shù)組結(jié)構(gòu)體共用體數(shù)值型枚舉型空類(lèi)型191. 3 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型(輸入、輸出格式輸入、輸出格式 “ “%d”%d”) 類(lèi)型名 字節(jié)數(shù) 數(shù)值范圍 int 2 -32768 32767 shortshort 2 -32768 32767 long long 4 -2147483648 2147483647還有無(wú)符號(hào)整型(輸入、輸出格式輸入、輸出格式 “ “%u”%u”

11、)Unsigned int 2 0 65535Unsigned short 2 0 65535 Unsigned long 4 0 42949672951.簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型20 (2) 實(shí)型實(shí)型 實(shí)型(float )數(shù)據(jù)的值集是實(shí)數(shù)集的一個(gè)有限子集. -3.4e38, -3.4e-39, 3.4E-38, 3.4E381.簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型 類(lèi)型名類(lèi)型名 字節(jié)數(shù)字節(jié)數(shù) 輸入、輸出格式輸入、輸出格式 有效數(shù)字位有效數(shù)字位 float 4 %f%f 7 doubule 8 %lf%lf 16 long doubule 16 %lf%lf 19不要以為是長(zhǎng)整型E38非法21n(3) (輸入、輸出格式輸

12、入、輸出格式 “%c”)n ASCII碼,一個(gè)字符占1字節(jié);nchar ca; ca=#;n注意轉(zhuǎn)義字符 的使用。 (4)字符串(輸入、輸出格式輸入、輸出格式 “ “%s”%s”) 所謂“字符串字符串”是指若干有效字符的序列。語(yǔ)言字符串可以包括字母、數(shù)字、專(zhuān)用字符、轉(zhuǎn)義字符等。 字符串常量:使用雙引號(hào)使用雙引號(hào) China BASIC a+b=c Li-Li 39.4 %dn 解放軍“ 字符型的一維數(shù)組(相當(dāng)于字符串變量) char st8, str10; strcpy(st,12345); strcpy(str,st); 不能st=“12345”; str=st;22 2. 結(jié)構(gòu)類(lèi)型 “結(jié)構(gòu)

13、”一般可以稱(chēng)為數(shù)據(jù)元素?cái)?shù)據(jù)元素,在不同的結(jié)構(gòu)類(lèi)型中,數(shù)據(jù)元素會(huì)有特定的名稱(chēng)。 結(jié)構(gòu)類(lèi)型的數(shù)據(jù)由更加基本的成分組成。 這些成分稱(chēng)為“數(shù)據(jù)項(xiàng)”,結(jié)構(gòu)的子成員子成員。1. 3 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型23 (1) 數(shù)組 A0 A1 A2 A3 A4 A5 A6 A7 10 20 30 40 50 60 70 80 一個(gè)數(shù)組(array )是由相同類(lèi)型的若干數(shù)組元素構(gòu)成的有限序列。 C 語(yǔ)言的數(shù)定義 : int B8 , A8 ; char C10; 2. 結(jié)構(gòu)類(lèi)型24例 日期類(lèi)型的定義(2) 結(jié)構(gòu)體 C語(yǔ)言中實(shí)現(xiàn): struct Date int month ; /*月*/ int day; /*日*/ i

14、nt year; /*年*/ ; struct Date myd=12,16, 1978; 系統(tǒng)分配給它的內(nèi)存是各成員所需內(nèi)存量的總和。本例是6. 25 (1)指針:)指針:變量名的在內(nèi)存中的存儲(chǔ)地址。 (2)指針變量)指針變量 int i=12, *p; P=&i; 把存放變量i 的地址的變量p 稱(chēng)作指針變量。 指針變量的存放內(nèi)容是數(shù)據(jù)的地址。3. 指針類(lèi)型 (3)指針引用變量)指針引用變量 指針變量可以指向各種不同的數(shù)據(jù)類(lèi)型,因此指針變量也要有不同的指針類(lèi)型。如: int m, *p; float x,*q; int a,*r m=12; p=&m; x=3.14; q=&

15、amp;x; r=a;注意:是否用&261.4 輸入、輸出輸入、輸出 輸出: printf(“.”, .) %d, %6d, %ld %c, %s %f , %10.2f , %lf, %20.8lf n=3; printf(“n %d,%d,%d”, n,+n,n+); 計(jì)算從右到左,輸出從左到右。 %s是輸出以指定首地址到第一個(gè)0或空格之間的字符串。char a=“abcd efg”,*p=a;printf(“%s”,*+p); bcd5,5,3271.4 輸入、輸出輸入、輸出 輸入: scanf(“.”, .) %d, %ld 對(duì)應(yīng)int long %c, %s 對(duì)應(yīng)char c

16、har str %f , %lf 對(duì)應(yīng)flaot double 常見(jiàn)錯(cuò)誤 int a,b;char d,e20; scanf(%d,%fn”,&a,&b); scanf(%d,%f”,a,b); scanf(%7.2f,&a); scanf(%s,&e); scanf(%c,d);28 (1)表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句 (2)流程控制語(yǔ)句流程控制語(yǔ)句 (3)復(fù)合語(yǔ)句復(fù)合語(yǔ)句C語(yǔ)語(yǔ)言言語(yǔ)語(yǔ)句句 指令語(yǔ)句指令語(yǔ)句 非指令語(yǔ)句非指令語(yǔ)句 數(shù)據(jù)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句 float x; int m; 編譯預(yù)處理編譯預(yù)處理宏定義 #define PI 3.14159文件包含處理 #

17、include 二、C語(yǔ)言的程序結(jié)構(gòu)與相關(guān)語(yǔ)句29表達(dá)式語(yǔ)句 1. 表達(dá)式語(yǔ)句的組成: 由一個(gè)表達(dá)式后接一個(gè)分號(hào)組成的由一個(gè)表達(dá)式后接一個(gè)分號(hào)組成的。 i=i+1 (是表達(dá)式,沒(méi)有構(gòu)成語(yǔ)句) i=i+1; (是語(yǔ)句) x+y; (是合法語(yǔ)句,但沒(méi)有實(shí)際意義) 表達(dá)式語(yǔ)句的分類(lèi): 賦值語(yǔ)句: i=1; c=getchar(); 函數(shù)調(diào)用語(yǔ)句: printf(n Hello,world !); 空語(yǔ)句。其形式為: 逗號(hào)表達(dá)式語(yǔ)句: +a,-b;30 完成一定的控制功能。9種控制語(yǔ)句: 判斷語(yǔ)句判斷語(yǔ)句 條件判斷語(yǔ)句 if()else 多分支選擇語(yǔ)句 switch()case 循環(huán)語(yǔ)句循環(huán)語(yǔ)句 循環(huán)

18、次數(shù)控制語(yǔ)句 for() 先判斷后執(zhí)行循環(huán)控制語(yǔ)句while() 先執(zhí)行后判斷循環(huán)控制語(yǔ)句dowhile() 轉(zhuǎn)移控制語(yǔ)句轉(zhuǎn)移控制語(yǔ)句 直接轉(zhuǎn)移語(yǔ)句 goto 終止語(yǔ)句 break(用在循環(huán)結(jié)構(gòu)、swicth) 跳轉(zhuǎn)語(yǔ)句 continue (僅用在循環(huán)結(jié)構(gòu)) 返回語(yǔ)句 return流程控制語(yǔ)句流程控制語(yǔ)句31復(fù)合語(yǔ)句復(fù)合語(yǔ)句 一組語(yǔ)句括在一對(duì)花括號(hào)一對(duì)花括號(hào)之中,稱(chēng)復(fù)合語(yǔ)句復(fù)合語(yǔ)句。 c=getchar(); putchar(c); 注意,一個(gè)復(fù)合語(yǔ)句的后花括號(hào)之后一個(gè)復(fù)合語(yǔ)句的后花括號(hào)之后不應(yīng)再寫(xiě)分號(hào)不應(yīng)再寫(xiě)分號(hào)。 在語(yǔ)法上是一個(gè)整體,相當(dāng)于一個(gè)語(yǔ)句。 凡是能夠使用簡(jiǎn)單語(yǔ)句的地方,都可以使用

19、復(fù)合語(yǔ)句凡是能夠使用簡(jiǎn)單語(yǔ)句的地方,都可以使用復(fù)合語(yǔ)句。一個(gè)復(fù)合語(yǔ)句中又可以包含另一個(gè)或多個(gè)復(fù)合語(yǔ)句。 32二、C語(yǔ)言的程序結(jié)構(gòu)與相關(guān)語(yǔ)句 程序的三種基本結(jié)構(gòu): 順序結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu)選擇結(jié)構(gòu) if()else switch()case 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) for().; while(); do ; while()33選擇結(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 34多分支選擇語(yǔ)句 switch(表達(dá)式)(表達(dá)式) case 常量表達(dá)式常量表

20、達(dá)式1: 語(yǔ)句序列語(yǔ)句序列1; break;case 常量表達(dá)式常量表達(dá)式2: 語(yǔ)句序列語(yǔ)句序列2; break;case 常量表達(dá)式常量表達(dá)式n: 語(yǔ)句序列語(yǔ)句序列n; break;default:語(yǔ)句序列:語(yǔ)句序列n+1; 根據(jù)“表達(dá)式”的值從上至下去尋找與表達(dá)式的值相匹配的“case常量表達(dá)式”,執(zhí)行一個(gè)分支后,再執(zhí)行下一個(gè)分支,直到break結(jié)束,然后執(zhí)行switch結(jié)構(gòu)后面的程序。 找不到匹配的入口標(biāo)號(hào)時(shí),執(zhí)行“語(yǔ)句序列n+1”,然后結(jié)束。順序向下執(zhí)行程序。35main() int a=1,b=1;switch (a)case 1: switch (b) case 0:printf(

21、“$”);break; case 1:printf(“#”);break; case 2:printf(“*”); case 2:printf(“”); case 3:printf(“”); break; case 4:printf(“&”);a=1case 1:swtch(1)b=1printf #,break跳出switch(b)結(jié)構(gòu)進(jìn)入switch(a)結(jié)構(gòu)case 2:printf case 2:printf break 跳出switch(a)結(jié)構(gòu)# 36for,while,do-while三種結(jié)構(gòu) 循環(huán)變量初始化,繼續(xù)循環(huán)條件,改變循環(huán)變量是不可缺少的三個(gè)環(huán)節(jié)。 for常用于

22、循環(huán)次數(shù)已知的問(wèn)題中。括號(hào)中的兩個(gè)“;”不可省。 while與do-while常用于循環(huán)次數(shù)未知的問(wèn)題中。37注意 在for和while語(yǔ)句之后一般沒(méi)有分號(hào) 有分號(hào)表示循環(huán)體就是分號(hào)之前的內(nèi)容(空循環(huán)體) while (i 100);i+; for (i = 0; i 100; i+);printf(%d, i); if,swtich,while,for后面的語(yǔ)句只能是一句,因此,多句時(shí)別忘了。38在while( e )和for( ;e ;)中的e是循環(huán)繼續(xù)的條件,不能寫(xiě)其它條件!如果缺省,就是死循環(huán)!在if(e),while( e )和for( ;e ;)中e的值是邏輯值(0或非0)e一般是

23、關(guān)系表達(dá)式,邏輯表達(dá)式或變量。if(x=1)if(x=1)main() int i=1; doi-;while(i+); printf(“%d”,i-); A) -1 B) 0 C) 1 D)陷入死循環(huán)i=1i-,i=0while(i)終止循環(huán)i+,i=1輸出i=1i-,i=039break,coutinue break只能用于switch和循環(huán)語(yǔ)句中,作用提前終止本層次switch和循環(huán)。 coutinue是跳過(guò)循環(huán)體內(nèi)尚未執(zhí)行的語(yǔ)句,接著執(zhí)行下次循環(huán)。40常用的循環(huán)算法 求素?cái)?shù)、水仙花數(shù)、最小公倍數(shù)、最大公約數(shù)、分解多位數(shù)的數(shù)字,累加,累乘,分解質(zhì)因數(shù)等。 各種有規(guī)律的圖案。while(

24、m) k = m%10 ; /*求最低位的數(shù)字*/ m=m/10; /*除去最低位的數(shù)字*/ 分解多位數(shù)的數(shù)字41判斷素?cái)?shù)main() int i,x,flag=0; scanf(“%d”,&x); for(i=2;i0; -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, &m, &n); cmn = facto(m) / (facto(n) * fact

25、o(m-n); printf (%ldn, cmn); 求求C(m,n) = m!/(n!*(m-n)!) 43 數(shù)組的定義類(lèi)型標(biāo)識(shí)符 數(shù)組名常量表達(dá)式 錯(cuò)誤的定義是: 或 int n; int n=10; scanf(%d,&n); int an; int an; 定義int a5時(shí), a0,a1.=?隨機(jī)數(shù)!只有int a5=3后,后面幾項(xiàng)自動(dòng)賦0三三 數(shù)組數(shù)組44數(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;

26、 int i2 =1,2,3,4,5,6; int a5= ;char a4=boy45分別用三種方法(數(shù)組元素下標(biāo)法、數(shù)組名地址法、指針變量法)訪問(wèn)數(shù)組元素。 #include void main() int a5=1,3,5,7,9, i, *p; for(i=0;i5;i+)printf(%d , ai ); /*下標(biāo)法*/ printf(n); for(i=0;i5;i+)printf(%d , *(a+i) ); /*地址法*/ printf(n); for(p=a;pa+5;p+)printf(%d , *p ); /*指針變量*/ 46數(shù)組的操作往往用循環(huán)結(jié)構(gòu).數(shù)值數(shù)組#defi

27、ne M 10int aM;for(i=0;iM;i+)字符數(shù)組#define M 10char aM;for(i=0;ai!=0;i+)數(shù)值數(shù)組倒序#define M 10main()int i,j,aM;for(i=0;iM;i+) scanf(“%d”,ai);for(i=0,j=M;ij;i+,i-) 交換ai,aj字符數(shù)組倒序main()int i,j;char a50;gets(a);for(i=0,j=strlen(a);ij;i+,i-) 交換ai,aj47用函數(shù)實(shí)現(xiàn)倒序數(shù)值數(shù)組void inv(int x,int n);#define M 10main()int i,j,aM

28、;for(i=0;iM;i+) scanf(“%d”,ai);inv(a,M);for(i=0;iM;i+) printf(“%d”,ai);字符數(shù)組void inv(char x)main()int i,j;char a50;gets(a);inv(a);puts(a);多一個(gè)參多一個(gè)參數(shù),表示數(shù),表示元素個(gè)數(shù)元素個(gè)數(shù)可以整可以整體輸入,體輸入,輸出輸出必須單必須單個(gè)輸入,個(gè)輸入,輸出輸出48數(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 ) in

29、t i,j,k; j=strlen(x); for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k;49main( ) int i,j,s=0,a33; for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) scanf(%d,&aij); for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) if ( i=j | i+j=2 ) s+=aij; printf(s=%dn,s);主對(duì)角線i=j副對(duì)角線i+j=250累加(積)# define M 10main() int i,aM,s=0; for (i=0;iM;i+)

30、 scanf(“%d”,&ai); for (i=0;iM;i+) s+=ai; printf(“s=%d”,s);# define M 10main() int i,aM,s=1; for (i=0;iM;i+) scanf(“%d”,&ai); for (i=0;iM;i+) s*=ai; printf(“s=%d”,s);51求最大(?。┲?define M 30main() int i,k,k_i,aM; for(i=0;iM;i+) scanf(“%d”,&ai); k=a0; k_i=0; for(i=1;iM;i+) if(kai) k=ai; k_i=i

31、; printf(“max=%d,maxi=%d”,k, k_i);最小值 if(kai)最大值52字符數(shù)組char str50;int i;for (i=0;stri!=0,i+)構(gòu)造新的字符數(shù)組(刪除,插入,復(fù)制,連接,倒序)。 1.用和不用字符串函數(shù)實(shí)現(xiàn)上述功能。 2.用指針實(shí)現(xiàn)。 3.必須注意最后一項(xiàng)一定是: stri =0;或 *p=0;53二維字符數(shù)組二維數(shù)組在內(nèi)存中的排列順序是“按行優(yōu)先存放”二維數(shù)組amn可以視為由n個(gè)一維數(shù)組am組成的。二維字符數(shù)組中m由其中最長(zhǎng)的字符串決定。char stu56= “Tom,“Anne,“Mary,“Peter; 其中stu0= “Tom“

32、stu1=“Anne54字符串函數(shù) 要用#include 字符串拷貝函數(shù)strcpy 字符串連接函數(shù)strcat 字符串比較函數(shù)strcmp 測(cè)字符串長(zhǎng)度函數(shù)strlen 函數(shù)函數(shù)strlen的值為的值為0之前的全部字符個(gè)數(shù)之前的全部字符個(gè)數(shù).它它與數(shù)組長(zhǎng)度不是一個(gè)概念與數(shù)組長(zhǎng)度不是一個(gè)概念.char s6=H,o,w,0,o,kstrlen (s) =355字符串函數(shù)的應(yīng)用字符串賦值字符串比較s1=s2strcpy(s1,s2)s1=s2strcmp(s1,s2)=0s1s2strcmp(s1,s2)0s1s2strcmp(s1,s2)056一 函數(shù)定義的形式: 存儲(chǔ)類(lèi)型存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型數(shù)

33、據(jù)類(lèi)型 函數(shù)名函數(shù)名(形式參數(shù)表形式參數(shù)表) 變量數(shù)據(jù)定義語(yǔ)句序列;變量數(shù)據(jù)定義語(yǔ)句序列; 可執(zhí)行語(yǔ)句序列;可執(zhí)行語(yǔ)句序列; int fun(int x,int y) int z; z=x+y; return z;函函數(shù)數(shù)首首部部 函函數(shù)數(shù)體體四四 函數(shù)函數(shù)57非非void型型int fun(int x,int y);main() int a,b; scanf(“%d,%d”,&a,&b); printf(“%d”,fun(a,b);int fun(int x,int y) int z; z=x+y; return z;作為框架記住作為框架記住void型型void fun(in

34、t x,int y);main() int a,b; scanf(“%d,%d”,&a,&b); fun(a,b); printf(“%d,%d”,a,b);void fun(int x,int y) int z; z=x;x=y;y=z; printf(“%d,%d”,x,y);58填main()char fun(int x,int y) int z; z=x+y; return z;main()int a,b; 函數(shù)實(shí)參函數(shù)實(shí)參char c; 函數(shù)返回值函數(shù)返回值scanf(“%d,%d”, a,b); 實(shí)參賦值實(shí)參賦值c=fun(a,b); 調(diào)用函數(shù)調(diào)用函數(shù)printf(

35、“%c”, c); 輸出結(jié)果輸出結(jié)果注意變量數(shù)據(jù)類(lèi)型的對(duì)應(yīng)注意變量數(shù)據(jù)類(lèi)型的對(duì)應(yīng)int %d long %ldfloat %f double %lfchar %c或或%s59遞歸調(diào)用的概念遞歸調(diào)用的概念 在語(yǔ)言中,一個(gè)函數(shù)直接或間接地調(diào)在語(yǔ)言中,一個(gè)函數(shù)直接或間接地調(diào)用自身,便構(gòu)成了函數(shù)的遞歸調(diào)用。用自身,便構(gòu)成了函數(shù)的遞歸調(diào)用。 前者為直接遞歸調(diào)用前者為直接遞歸調(diào)用,后者稱(chēng)間接遞歸調(diào)用。后者稱(chēng)間接遞歸調(diào)用。計(jì)算n!的函數(shù)rfact() long fac(int n) long p; if (n=0 |n=1) p=1; else p= n*fac(n-1); /*自己調(diào)自己*/ return

36、 p; void main() printf(“%ld”, fac(5); 記住遞歸調(diào)用的框架記住遞歸調(diào)用的框架60數(shù)組名作函數(shù)實(shí)參void fun(int a ,int n);main() int arr10,i; for(i=0;i10;i+) scanf(“%d”,&arri); fun(arr,10); for(i=0;i10;i+) printf(“%d”,arri);61main( ) int i,a=2; for(i=1;i=5;i+) f( i ); printf( “%dn”,a); f( j ) int j; static int a=100; auto k=1;

37、+k; printf( “%d+%d+%d=%dn”,a,k,j,a+k+j); a+=10; 函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)定義函數(shù)定義函數(shù)內(nèi)定義函數(shù)內(nèi)定義,值不保留。值不保留。運(yùn)行結(jié)果:運(yùn)行結(jié)果:100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=1472兩個(gè)函數(shù)變兩個(gè)函數(shù)變量同名量同名,互互不影響。不影響。靜態(tài)變量靜態(tài)變量62 五五 指針指針(1)指針指針: 某變量的某變量的地址地址值稱(chēng)為該變量的指針?lè)Q為該變量的指針。(2)指針變量:指針變量: 指針變量是存放普通變量地址的變量。 指針變量指向這個(gè)普通變量。1112ab地址101010121010

38、1012pq地址100220042006指針變量指針變量 整型變量整型變量63指針變量的定義 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 *指針變量名指針變量名1; double *pd,d1,d2; /*pd為指向double型變量的指針*/ char *pc,c1,c2; /*pc為指向char型變量的指針*/ float *pf,f1,f2; /*pf為指向float型變量的指針*/ 定義指針變量必須在變量名前加指針說(shuō)明符“*”。指針變量名本身不含“*”號(hào)。 定義指針變量后,系統(tǒng)為這個(gè)指針變量也分配一個(gè)存儲(chǔ)單元,這個(gè)存貯單元一般都占有固定的字節(jié)(如16位計(jì)算機(jī)是2個(gè)字節(jié))。該存貯單元用于存放普通變量的地址。64指針變量的初始化 char

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論