《C語(yǔ)言程序設(shè)計(jì)》教案6-1_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》教案6-1_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》教案6-1_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》教案6-1_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》教案6-1_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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、C語(yǔ)言程序設(shè)計(jì)教案編號(hào):C程序設(shè)計(jì) 6 制訂日期:2011-1-25課程名稱第6章 數(shù)組授課形式講授授課班級(jí)2010級(jí)軟件工程授課時(shí)數(shù) 6學(xué)時(shí)授課日期2011.03.20-04.10 第5、6周授課地點(diǎn)公1#512、#513教學(xué)目標(biāo)與要求:1. 了解什么是數(shù)組 2. 掌握3.教學(xué)重點(diǎn)、難點(diǎn):1. ;2. ;3. ;4. (重點(diǎn))教學(xué)準(zhǔn)備: 1采用多媒體教學(xué)。2教學(xué)材料教材:C語(yǔ)言程序設(shè)計(jì)(第四版)譚浩強(qiáng)著 清華大學(xué)出版社參考資料:C+語(yǔ)言程序設(shè)計(jì)與實(shí)踐張思民著 清華大學(xué)出版社3制作多媒體課件,講稿。教學(xué)過(guò)程與時(shí)間分配備注授課內(nèi)容(補(bǔ)充內(nèi)容)隨機(jī)函數(shù)1、 隨機(jī)函數(shù)隨機(jī)函數(shù)是數(shù)學(xué)庫(kù)函數(shù)中描述隨機(jī)數(shù)

2、的一個(gè)常用函數(shù)。隨機(jī)數(shù)是一種隨機(jī)產(chǎn)生、事先無(wú)法預(yù)測(cè)的數(shù)值。在設(shè)計(jì)程序時(shí),有時(shí)候會(huì)需要用到隨機(jī)數(shù)。C+ 在系統(tǒng)頭文件 cstdlib中內(nèi)建了一個(gè)隨機(jī)數(shù)產(chǎn)生器隨機(jī)函數(shù) rand( ),這是用來(lái)產(chǎn)生隨機(jī)數(shù)的函數(shù)。隨機(jī)函數(shù) rand( )可以產(chǎn)生032767之間的一個(gè)偽隨機(jī)整數(shù)。之所以用“偽”字來(lái)形容它,是因?yàn)楫a(chǎn)生的隨機(jī)數(shù)依賴于一個(gè)特殊的輸入值,這個(gè)輸入值稱為“種子”。有兩個(gè)用于產(chǎn)生隨機(jī)數(shù)種子的函數(shù):和time( )。srand( )函數(shù)在系統(tǒng)頭文件 cstdlib中定義,由于頭文件 cstdlib是系統(tǒng)默認(rèn)的,因此可以省略。time( ) 函數(shù)在系統(tǒng)頭文件 ctime中定義,time( )函數(shù)的返回

3、值實(shí)際上是以秒為計(jì)數(shù)單位的計(jì)算機(jī)內(nèi)部時(shí)鐘的當(dāng)前時(shí)間。由于每次執(zhí)行的時(shí)候,時(shí)間的數(shù)值都不相同,因此產(chǎn)生的隨機(jī)數(shù)不會(huì)重復(fù)。如果事先沒(méi)有調(diào)用srand( )和time( )這兩個(gè)函數(shù),將產(chǎn)生同一序列的隨機(jī)數(shù)。2、產(chǎn)生隨機(jī)數(shù)為了在運(yùn)行程序時(shí),每次都獲得不同的隨機(jī)數(shù),需要rand( )、srand( )和time( )三個(gè)函數(shù)結(jié)合起來(lái)使用。例如:srand(time(0);int n = rand();則每次產(chǎn)生的隨機(jī)數(shù)n都是不重復(fù)的?!狙a(bǔ)充例1】產(chǎn)生三個(gè)每次運(yùn)行都各不相同的隨機(jī)數(shù)。源程序如下:1 #include rand( )和srand( )需要用到此頭文件2 #include time( )需要

4、用到此頭文件3 #include 4 5 void main()6 7 int a, b, c; 用于產(chǎn)生每次運(yùn)行程序獲得不重復(fù)的隨機(jī)數(shù)的種子8 srand(time(0);9 a = rand();產(chǎn)生三個(gè)隨機(jī)數(shù),若沒(méi)有種子,每次會(huì)產(chǎn)生重復(fù)的數(shù)10 b = rand();11 c = rand();12 printf( a = %d t , a);13 printf( b = %d t , b);14 printf( c = %d n , c);15 在本程序中,使用了產(chǎn)生種子的語(yǔ)句,每次運(yùn)行程序所得到的三個(gè)隨機(jī)數(shù)都不是重復(fù)的。例如,第一次運(yùn)行程序所得到的三個(gè)隨機(jī)數(shù)為:a = 26921 b

5、 = 28173 c = 574有種子,產(chǎn)生的隨機(jī)數(shù)不重復(fù)再運(yùn)行一次程序,其運(yùn)行結(jié)果為:a = 27087 b = 19285 c = 26911在程序中,若沒(méi)有產(chǎn)生種子的語(yǔ)句“srand(time(0); ”,則每次運(yùn)行程序所得到的三個(gè)隨機(jī)數(shù)都會(huì)重復(fù)。例如,第一次運(yùn)行程序所得到的三個(gè)隨機(jī)數(shù)為:a = 41 b = 18467 c = 6334沒(méi)有種子,產(chǎn)生的隨機(jī)數(shù)是重復(fù)的再運(yùn)行一次程序,其運(yùn)行結(jié)果仍是:a = 41 b = 18467 c = 6334 實(shí)際編程中,經(jīng)常需要產(chǎn)生在一個(gè)指定的范圍內(nèi)的隨機(jī)數(shù)。為了控制隨機(jī)數(shù)在一個(gè)指定的范圍內(nèi)產(chǎn)生,需要用到取模運(yùn)算符“%”。例如要獲得一個(gè)0 N-1

6、之間的隨機(jī)整數(shù),可以使用 “rand( ) % N”來(lái)產(chǎn)生。 【補(bǔ)充例2】產(chǎn)生三個(gè)100以內(nèi)的隨機(jī)數(shù)。 源程序如下:1 #include rand( )和srand( )需要用到此頭文件2 #include time( )需要用到此頭文件3 #include 4 5 void main()6 7 int a, b, c; 8 int N = 100;9 srand(time(0);10 a = rand() % N +1;由于產(chǎn)生隨機(jī)數(shù)的范圍是0 99,故需要再加111 b = rand() % N +1;12 c = rand() % N +1;13 printf( a = %d t , a

7、);14 printf( b = %d t , b);15 printf( c = %d n , c);16 程序運(yùn)行結(jié)果為:a = 76 b = 94 c = 56.1.1一維數(shù)組數(shù)組是具有相同類型變量的集合。在數(shù)組中,各個(gè)變量稱之為元素。其中,同一數(shù)組中的所有元素都有相同的名字,只是下標(biāo)不同。只有一個(gè)下標(biāo)的數(shù)組稱之為一維數(shù)組,有多個(gè)下標(biāo)的數(shù)組稱之為多維數(shù)組。1.一維數(shù)組的定義一維數(shù)組定義的一般形式為:數(shù)據(jù)類型 數(shù)組名 常量表達(dá)式;說(shuō)明:(1) 數(shù)據(jù)類型表示數(shù)組元素的類型。(2) 數(shù)組名的命名規(guī)則跟變量名一樣。(3) 方括號(hào)中的常量表達(dá)式是數(shù)組的容量,即包含元素的個(gè)數(shù)。例如:定義數(shù)組int

8、a10;表示定義了一個(gè)整型的數(shù)組a,含有10個(gè)元素(每個(gè)元素都是整型)。其說(shuō)明如圖6.1所示。圖6.1 數(shù)組定義的說(shuō)明數(shù)組一旦定義,各數(shù)組元素名就確定了。數(shù)組元素的一般形式為: 數(shù)組名下標(biāo)數(shù)組的第一個(gè)元素的下標(biāo)總是從0開始的。對(duì)于上面所定義的數(shù)組a10,其元素依次為a0, a1, a2, a3, a4, a5, a6, a7, a8, a9。其實(shí),數(shù)組名代表的是數(shù)組的首地址,下標(biāo)則是數(shù)組元素到數(shù)組開始的偏移量。系統(tǒng)為數(shù)組在內(nèi)存分配的是一片連續(xù)的存儲(chǔ)的單元,如定義了“int a10;”,則它的10個(gè)元素在內(nèi)存中的排列情況如圖6.2所示:圖6.2 一維數(shù)組元素在內(nèi)存中的排列情況2.一維數(shù)組的初始化

9、數(shù)組初始化是指在數(shù)組定義時(shí)給數(shù)組元素賦予初值。數(shù)組初始化是在編譯階段進(jìn)行的。這樣將減少運(yùn)行時(shí)間,提高效率。數(shù)組初始化賦值的一般形式為:數(shù)據(jù)類型 數(shù)組名常量表達(dá)式 = 值,值,值;其中在 中的各數(shù)據(jù)值依次為各元素的初值,各值之間用逗號(hào)間隔。例如: int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;相當(dāng)于a0 = 0; a1 = 1; .; a9 = 9;數(shù)組初始化賦值的幾點(diǎn)說(shuō)明:(1)可以只給部分元素賦初值。當(dāng) 中數(shù)據(jù)值的個(gè)數(shù)少于元素個(gè)數(shù)時(shí),只給前面部分元素賦值。例如: int a10 = 0, 1, 2, 3, 4;表示只給a0a4這5個(gè)元素賦值,而后5個(gè)元素將被

10、編譯器自動(dòng)賦0值。如圖6.3所示。圖6.3 未賦值的元素自動(dòng)被0填充(2)只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。例如:給十個(gè)元素全部賦1值,只能寫為: int a10 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;而不能寫為: int a10=1;(3)如在定義數(shù)組時(shí)給全部元素賦初值,則在數(shù)組定義的說(shuō)明中,可以不顯式的指出數(shù)組容量,系統(tǒng)會(huì)以給出的數(shù)值個(gè)數(shù)默認(rèn)為數(shù)組容量。例如: int a5 = 1, 2, 3, 4, 5;可寫為: int a = 1, 2, 3, 4, 5;注意,C+ 數(shù)組元素以0開頭而不是以1開頭,經(jīng)常會(huì)有初學(xué)者搞錯(cuò)。例如,聲明了數(shù)組int a5;這表示數(shù)

11、組a 有5個(gè)元素:a0、a1、a2、a3、a4。這個(gè)數(shù)組中沒(méi)有a5這個(gè)元素。需要指出的是,這時(shí)如果在程序中使用了a5,運(yùn)行程序時(shí)C+ 系統(tǒng)并不會(huì)報(bào)錯(cuò)。C+ 不會(huì)檢查訪問(wèn)數(shù)組是否越界,系統(tǒng)會(huì)把緊接著a4后面的存儲(chǔ)單元中的值取出來(lái)當(dāng)作a5,程序能夠使用這個(gè)值繼續(xù)運(yùn)行,并得出結(jié)果,盡管這個(gè)結(jié)果是錯(cuò)誤的。如圖6.4所示。圖6.4 當(dāng)使用數(shù)組中并沒(méi)有的元素a5時(shí),其取值情況(4)對(duì)于分布有規(guī)律、能用表達(dá)式表示元素的數(shù)組,經(jīng)常采用循環(huán)結(jié)構(gòu)來(lái)給數(shù)組元素進(jìn)行初始化,先聲明一個(gè)數(shù)組,然后在循環(huán)中使用賦值語(yǔ)句逐個(gè)初始化數(shù)組元素。例如: int a5; for(i = 0; i 5; i+) ai = i + 1;

12、 通過(guò)循環(huán),數(shù)組下標(biāo) i 從 0逐個(gè)遞增到4(因?yàn)楫?dāng) i=5時(shí),條件i5為假,不能進(jìn)入循環(huán)體)?!纠?-1】隨機(jī)產(chǎn)生10個(gè)100以內(nèi)的整數(shù),并找出其中的最大數(shù)。 源程序如下:/ 隨機(jī)產(chǎn)生10個(gè)100以內(nèi)的整數(shù),并找出其中的最大數(shù)。 #include #include void main()聲明數(shù)組a 有10個(gè)元素int i, max, a10;int N = 100;循環(huán)變量i的取值從0到9,與數(shù)組a 的下標(biāo)值相同srand(time(0);for(i = 0; i 10; i+)每循環(huán)一次,數(shù)組a 的下標(biāo)值都會(huì)變化采用循環(huán),產(chǎn)生10個(gè)100以內(nèi)的隨機(jī)整數(shù),為數(shù)組賦值,并輸出這10個(gè)數(shù)ai = rand() % N

溫馨提示

  • 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)論