C語言程序設(shè)計(jì)教程 第6章.ppt_第1頁
C語言程序設(shè)計(jì)教程 第6章.ppt_第2頁
C語言程序設(shè)計(jì)教程 第6章.ppt_第3頁
C語言程序設(shè)計(jì)教程 第6章.ppt_第4頁
C語言程序設(shè)計(jì)教程 第6章.ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 數(shù) 組,6.1 一維數(shù)組 6.2 二維數(shù)組 6.3 字符數(shù)組與字符串 6.4 數(shù)組作為函數(shù)參數(shù) 6.5 程序舉例,6.1 一維數(shù)組 6.1.1 一維數(shù)組的定義與引用 定義一維數(shù)組的一般形式如下: 類型說明符 數(shù)組名常量表達(dá)式; 其中類型說明符是定義數(shù)組中各元素的數(shù)據(jù)類型,常量表達(dá)式是說明數(shù)組的大?。磾?shù)組中元素的個(gè)數(shù)。 數(shù)組的說明與變量的說明一樣,其作用是為數(shù)組分配存儲空間。,返回目錄,關(guān)于數(shù)組的說明要注意以下幾個(gè)問題: (1)數(shù)組名的命名規(guī)則與變量名相同。 (2)說明數(shù)組大小的常量表達(dá)式必須為整型,并且用方括號括起來(不能用圓括號)。 (3)說明數(shù)組大小的常量表達(dá)式中可以包含符號常量

2、,但不能是變量。,例6.1 下面的程序說明了如何對數(shù)組定義和引用數(shù)組元素: #include stdio.h #define N 5 main() int i, aN; for (i0; iN; ii1) aii; for (i0; iN; ii1) printf(%5d,ai); printf(n); ,在這個(gè)程序中,首先定義了一個(gè)長度為5的整型一維數(shù)組a,然后利用for循環(huán)對其中的每一個(gè)元素(a0a4)進(jìn)行賦值,最后利用for循環(huán)輸出這5個(gè)元素值。 在C語言中,凡是一般簡單變量可以使用的地方都可以使用數(shù)組元素。,6.1.2 一維數(shù)組的初始化 在C語言中,給數(shù)組元素提供數(shù)據(jù)的方法有以下3種。

3、 (1)利用賦值語句逐個(gè)對數(shù)組中的元素進(jìn)行賦值。 (2)利用輸入函數(shù)逐個(gè)輸入數(shù)組中的各個(gè)元素。例如, #include stdio.h main() int i, a5; for (i0; i5; ii1) scanf(%d,&ai); 其中&ai表示取數(shù)組元素ai的地址。 (3)初始化。,下面對靜態(tài)一維數(shù)組的初始化作三點(diǎn)說明: (1)可以只給數(shù)組的前若干個(gè)元素賦初值,此時(shí)后面的元素均將自動賦以初值0。 (2)在對全部元素賦初值時(shí),說明語句中可以不指定數(shù)組長度,其長度默認(rèn)為與初值表中數(shù)據(jù)的個(gè)數(shù)相同。 (3)雖然標(biāo)準(zhǔn)C語言規(guī)定只能對“靜態(tài)存儲”的數(shù)組進(jìn)行初始化,即除了可以對外部(全局)數(shù)組進(jìn)行初

4、始化外,還可以對用static說明的局部數(shù)組進(jìn)行初始化。,例6.3 分析下列程序的輸出結(jié)果: #include stdio.h main() int k,x5; static int y5; int z50,0,0; for (k0; k5; k) printf(%5d%5d%5d,xk,yk,zk); printf(n); ,6.2 二維數(shù)組 6.2.1 二維數(shù)組的定義與引用 定義二維數(shù)組的一般形式如下: 類型說明符 數(shù)組名常量表達(dá)式1常量表達(dá)式2;,返回目錄,6.2.2 二維數(shù)組的初始化 與一維數(shù)組一樣,也可以對靜態(tài)存儲的二維數(shù)組進(jìn)行初始化。 在對二維數(shù)組進(jìn)行初始化時(shí)要注意以下幾點(diǎn)。 (1

5、)在分行給二維數(shù)組賦初值時(shí),對于每一行都可以只對前幾個(gè)元素賦初值,后面未賦初值的元素系統(tǒng)將自動賦初值0;并且,還可以只對前幾行元素賦初值。 (2)在給全部元素賦初值時(shí),說明語句中可以省略第一維的長度說明。 (3)在分行賦初值時(shí),也可以省略第一維的長度說明。,6.3 字符數(shù)組與字符串 6.3.1 字符數(shù)組的定義與初始化 定義字符數(shù)組的一般形式如下: char 數(shù)組名常量表達(dá)式; 一維字符數(shù)組 char 數(shù)組名常量表達(dá)式1常量表達(dá)式2; 二維字符數(shù)組 (1)當(dāng)對字符數(shù)組中所有元素賦初值時(shí),數(shù)組的長度說明可以省略。 (2)可以只對前若干元素賦初值。 (3)雖然標(biāo)準(zhǔn)C語言規(guī)定只能對“靜態(tài)存儲”的字符數(shù)

6、組進(jìn)行初始化,即除了可以對外部(全局)字符數(shù)組進(jìn)行初始化外,還可以對用static說明的局部字符數(shù)組進(jìn)行初始化。,返回目錄,6.3.2 字符串 C語言規(guī)定,字符串常量(簡稱字符串)要用一對雙撇號括起來。在一個(gè)字符串常量中,最后還包括一個(gè)結(jié)束符0。 C語言允許用字符串常量對字符數(shù)組進(jìn)行初始化。,6.3.3 字符數(shù)組與字符串的輸入與輸出 1輸入輸出一個(gè)字符(格式說明符為 %c) 在用于輸入時(shí),輸入項(xiàng)為數(shù)組元素地址。在具體輸入時(shí),各字符之間不要分隔,字符也不要用單撇號括起來。 在用于輸出時(shí),輸出項(xiàng)為數(shù)組元素。 2輸入輸出一個(gè)字符串(格式說明符為 %s) 在用格式說明符%s進(jìn)行輸入輸出時(shí),其輸入輸出項(xiàng)

7、均為數(shù)組名。但在輸入時(shí),相鄰兩個(gè)字符串之間要用空格分隔,系統(tǒng)將自動地在字符串最后加結(jié)束符0。,6.3.4 字符串處理函數(shù) 下面簡單介紹一些常用的字符串處理函數(shù)。 (1)puts(字符數(shù)組名) 功能:輸出一個(gè)字符串到終端。 (2)gets(字符數(shù)組名) 功能:從終端輸入一個(gè)字符串到字符數(shù)組,并返回字符數(shù)組的地址。 (3)strcat(字符數(shù)組1,字符串2) 功能:將字符串2連接到字符串1的后面,并返回字符串1的地址。,(4)strcpy(字符數(shù)組1,字符串2) 功能:字符串2拷貝到字符數(shù)組1中。 (5)strcmp(字符串1,字符串2) 功能:比較字符串。 這個(gè)函數(shù)的返回值如下: 若字符串1字符

8、串2,則返回值為0; 若字符串1字符串2,則返回值為正整數(shù); 若字符串1字符串2,則返回值為負(fù)整數(shù)。,(6)strlen(字符串) 功能:測試字符串長度。 (7)大小寫轉(zhuǎn)換函數(shù) 大小寫轉(zhuǎn)換函數(shù)有以下兩個(gè): strlwr(字符串) 將字符串中大寫字母轉(zhuǎn)換成小寫字母。 strupr(字符串) 將字符串中小寫字母轉(zhuǎn)換成大寫字母。,6.4 數(shù)組作為函數(shù)參數(shù) 6.4.1 形參數(shù)組與實(shí)參數(shù)組的結(jié)合 例6.8 用選擇法對無序序列進(jìn)行排序。,圖6.1 選擇法排序流程圖,返回目錄,C程序如下: /* select.c */ select(b,n) int n,b; int i,j,k,d; for (i0; i

9、n2; ii1) ki; for (ji1; jn1; jj1) if (bjbk) kj; if (k!i) dbi; bibk; bkd; ,/* ex.c */ #include stdio.h #include select.c main() int k; static int s103,5,4,1,9,6,10,56,34,12; printf(n); for (k0; k10; kk1) printf(%4d,sk); printf(n); select(s,10); for (k0; k10; kk1) printf(%4d,sk); printf(n); ,在C語言中,形參數(shù)組

10、與實(shí)參數(shù)組之間的結(jié)合要注意以下幾點(diǎn): (1)調(diào)用函數(shù)與被調(diào)用函數(shù)中分別定義數(shù)組,其數(shù)組名可以不同,但類型必須一致。 (2)在C語言中,形參變量與實(shí)參之間的結(jié)合是采用數(shù)值結(jié)合的,因此,如果在被調(diào)用函數(shù)中改變了形參的值,是不會改變實(shí)參值的。 (3)實(shí)參數(shù)組與形參數(shù)組的大小可以一致也可以不一致,C編譯系統(tǒng)對形參數(shù)組的大小不作檢查,調(diào)用時(shí)只將實(shí)參數(shù)組的首地址傳給形參數(shù)組。 (4)雖然函數(shù)中的形參數(shù)組一般不指定大小,但為了控制形參數(shù)組的使用范圍,一般要在函數(shù)中另設(shè)一個(gè)傳送形參數(shù)組元素個(gè)數(shù)的形參變量,如函數(shù)select()中的形參n。,6.4.2 二維數(shù)組作為函數(shù)參數(shù) 二維數(shù)組作為函數(shù)參數(shù)與一維數(shù)組完全類

11、似。 例6.9 利用函數(shù)求兩個(gè)矩陣的乘積矩陣。 在例6.4中說明了兩個(gè)矩陣相乘的方法。但在例6.4中,只能對固定的兩個(gè)矩陣進(jìn)行相乘,沒有通用性。在本例中,用函數(shù)matmul()來實(shí)現(xiàn)矩陣相乘,在主函數(shù)main()中再用具體的矩陣來調(diào)用它。,具體的C程序如下: #include stdio.h main() int i,j,c23; static int a241,2,3,4,5,6,7,8; static int b431,2,3,4,5,6,7,8,9,10,11,12; matmul(a,b,c,2,4,3); for (i0; i2; ii1) for (j0;j3; jj1) prin

12、tf(%5d,cij); printf(n); printf(n); ,matmul(a,b,c,m,n,k) int m,n,k,a24,b43,c23; int i,j,t; for (i0; im; ii1) for (j0; jk; jj1) cij0; for (t0; tn; tt1) cijcijait*btj; return; ,6.5 程序舉例 例6.10 從鍵盤輸入年、月、日,計(jì)算并輸出該日是該年的第幾天。 C程序如下: #include stdio.h main() int year,month,day,k,sum; static int t31,0,31,30,31,3

13、0,31,31,30,31,30,31; printf(input year,month,day:); scanf(%d,%d,%d,&year,&month,&day); if (year%40 & year%100!0)|year%4000) t129; else t128; sumday; for (k0;kmonth1;kk1) sumsumtk; printf(Dyas%dn,sum); ,返回目錄,例6.12 編寫一個(gè)對長度為n的線性表進(jìn)行冒泡排序的函數(shù)。 冒泡排序的過程如下: 從前到后掃描待排序序列,依次比較相鄰兩個(gè)項(xiàng)目的大小,若發(fā)現(xiàn)逆序就進(jìn)行交換,最后使最大者換到序列的最后;然后從后到前掃描剩下的序列,依次比較相鄰兩個(gè)項(xiàng)目的大小,若發(fā)現(xiàn)逆序就進(jìn)行交換,最后使最小者換到序列的最前面。對剩下的序列重復(fù)這個(gè)過程,直到剩下的序列為空為止。

溫馨提示

  • 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

提交評論