c++程序設(shè)計(jì)課件5_第1頁(yè)
c++程序設(shè)計(jì)課件5_第2頁(yè)
c++程序設(shè)計(jì)課件5_第3頁(yè)
c++程序設(shè)計(jì)課件5_第4頁(yè)
c++程序設(shè)計(jì)課件5_第5頁(yè)
已閱讀5頁(yè),還剩39頁(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、NEUQC+程序程序設(shè)計(jì)設(shè)計(jì)李國(guó)瑞李國(guó)瑞C+程序程序設(shè)計(jì)設(shè)計(jì)第第5章章 利用數(shù)組處理批量數(shù)據(jù)利用數(shù)組處理批量數(shù)據(jù)5.1 為什么需要用數(shù)組v數(shù)組數(shù)組n數(shù)組是有序數(shù)據(jù)的集合。數(shù)組是有序數(shù)據(jù)的集合。n用一個(gè)統(tǒng)一的名字代表這批數(shù)據(jù),用序號(hào)或下標(biāo)區(qū)分各個(gè)數(shù)據(jù)。n同一數(shù)組中的每一個(gè)元素都必須屬于同一數(shù)據(jù)類型。n一個(gè)數(shù)組在內(nèi)存中占一片連續(xù)的存儲(chǔ)單元。n使用數(shù)組可以大大的提高編程和解題的效率,加強(qiáng)程序的可讀性。C+程序程序設(shè)計(jì)設(shè)計(jì)5.2 定義和引用一維數(shù)組v定義一維數(shù)組定義一維數(shù)組n類型標(biāo)識(shí)符類型標(biāo)識(shí)符 數(shù)組名數(shù)組名 常量表達(dá)式常量表達(dá)式 ;nint a10;n說(shuō)明n數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識(shí)符命名

2、規(guī)則n用方括號(hào)括起來(lái)的常量表達(dá)式表示數(shù)組元素個(gè)數(shù),即數(shù)組長(zhǎng)度。nint a10; int a2*5; int an*2; n數(shù)組下標(biāo)從數(shù)組下標(biāo)從0 0開始開始n不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行過(guò)程中變量的值nint n; cinn; int an; /錯(cuò)誤C+程序程序設(shè)計(jì)設(shè)計(jì)v引用一維數(shù)組的元素引用一維數(shù)組的元素n數(shù)組名下標(biāo)n數(shù)組必須先定義,然后使用。只能逐個(gè)引用數(shù)組元素的值而不能一次引用整個(gè)數(shù)組中的全部元素的值。n例5.1 數(shù)組元素的引用。#include using namespace std;int main( ) int i,a10; for (i=0;i=0

3、;i-) coutai ; coutendl; return 0; C+程序程序設(shè)計(jì)設(shè)計(jì)v一維數(shù)組的初始化一維數(shù)組的初始化n在定義數(shù)組時(shí)分別對(duì)數(shù)組元素賦予初值。nint a10=0,1,2,3,4,5,6,7,8,9;n可以只給一部分元素賦值。其余值默認(rèn)為0或 。nint a10=0,1,2,3,4; n在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。nint a5=1,2,3,4,5;nint a=1,2,3,4,5;C+程序程序設(shè)計(jì)設(shè)計(jì)v 例例5.2 5.2 用數(shù)組來(lái)處理求用數(shù)組來(lái)處理求FibonacciFibonacci數(shù)列問(wèn)題。數(shù)列問(wèn)題。#include #include using n

4、amespace std;int main( ) int i; int f20=1,1; /f0=1,f1=1 for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) /此循環(huán)的作用是輸出20個(gè)數(shù) if(i%5=0) coutendl; /控制換行,每行輸出5個(gè)數(shù)據(jù) coutsetw(8)fi; /每個(gè)數(shù)據(jù)輸出時(shí)占8列寬度 coutendl; /最后執(zhí)行一次換行 return 0;C+程序程序設(shè)計(jì)設(shè)計(jì)v例例5.3 5.3 編寫程序,用起泡法對(duì)編寫程序,用起泡法對(duì)1010個(gè)數(shù)排序個(gè)數(shù)排序( (按由小到按由小到大順序大順序) )。n起泡法的思路是:將相鄰兩個(gè)數(shù)比

5、較,將大的調(diào)到后頭。n然后進(jìn)行第2趟比較,對(duì)余下的前面n-1個(gè)數(shù)按上法進(jìn)行比較。n重復(fù)以上過(guò)程,進(jìn)行n-1次比較。C+程序程序設(shè)計(jì)設(shè)計(jì)#include using namespace std;int main( ) int a11; int i,j,t; coutinput 10 numbers :endl; for (i=1;iai; coutendl; for (j=1;j=9;j+) /共進(jìn)行9趟比較 for(i=1;iai+1) /如果前面的數(shù)大于后面的數(shù) t=ai;ai=ai+1;ai+1=t; /交換兩個(gè)數(shù)的位置 coutthe sorted numbers :endl; for(

6、i=1;i11;i+) /輸出10個(gè)數(shù) coutai ; coutendl; return 0; C+程序程序設(shè)計(jì)設(shè)計(jì)5.3 定義和引用二維數(shù)組v二維數(shù)組二維數(shù)組n具有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組n依賴多個(gè)因素確定數(shù)據(jù)C+程序程序設(shè)計(jì)設(shè)計(jì)v定義二維數(shù)組定義二維數(shù)組n類型標(biāo)識(shí)符 數(shù)組名常量表達(dá)式常量表達(dá)式nfloat a34,b510;nfloat a3,4,b5,10; /錯(cuò)誤n二維數(shù)組可以理解為多個(gè)一維數(shù)組n二維數(shù)組中元素排列的順序是:按行存放n多維數(shù)組 int a345C+程序程序設(shè)計(jì)設(shè)計(jì)v引用二維數(shù)組元素引用二維數(shù)組元素n數(shù)組名數(shù)組名 下標(biāo)下標(biāo)下標(biāo)下標(biāo)nb12=a34/2;v二維數(shù)組的初始

7、化二維數(shù)組的初始化n分行給二維數(shù)組賦初值。nint a34=1,2,3,4,5,6,7,8,9,10,11,12; n可以將所有數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。nint a34=1,2,3,4,5,6,7,8,9,10,11,12;C+程序程序設(shè)計(jì)設(shè)計(jì)v二維數(shù)組的初始化二維數(shù)組的初始化n可以對(duì)部分元素賦初值(其余元素值自動(dòng)置為0)。nint a34=1,5,9;nint a34= 1,0,6,0,0,11; nint a34= 1,5,6; n如果對(duì)全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。nint a4=1,2,

8、3,4,5,6,7,8,9,10,11,12;n在定義時(shí)也可以只對(duì)部分元素賦初值而省略第一維的長(zhǎng)度,但應(yīng)分行賦初值。nint a4=0,0,3,0,10;C+程序程序設(shè)計(jì)設(shè)計(jì)v例例5.4 5.4 將一個(gè)二維數(shù)組行和列元素互換,存到另一將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中。個(gè)二維數(shù)組中。#include using namespace std;int main( ) int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for (i=0;i=1;i+) for (j=0;j=2;j+) coutaij ; bji=aij; cout

9、endl; C+程序程序設(shè)計(jì)設(shè)計(jì)coutarray b:endl;for (i=0;i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0;v例例5.5 5.5 有一個(gè)有一個(gè)3 34 4的矩陣,要求編程序求出其中值的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。#include using namespace std;int main( ) int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,28,37,46,-12,-34,6,8

10、; max=a00; /使max開始時(shí)取a00的值 for (i=0;i=2;i+) /從第0行第2行 for (j=0;jmax) /如果某元素大于max max=aij; /max將取該元素的值 row=i; /記下該元素的行號(hào)i colum=j; /記下該元素的列號(hào)j coutmax=max,row=row,colum=columendl;return 0; C+程序程序設(shè)計(jì)設(shè)計(jì)5.4 用數(shù)組名作函數(shù)參數(shù)v用數(shù)組元素作函數(shù)實(shí)參用數(shù)組元素作函數(shù)實(shí)參n數(shù)組元素可以作為函數(shù)的實(shí)參,與用變量作實(shí)參一樣,將數(shù)組元素的值傳送給形參變量。n例5.6 用函數(shù)處理例5.5。#include using n

11、amespace std;int main( ) int max_value(int x,int max); /函數(shù)聲明 int i,j,row=0,colum=0,max int a34=5,12,23,56,19,28,37,46,-12,-34,6,8; max=a00; C+程序程序設(shè)計(jì)設(shè)計(jì)for (i=0;i=2;i+) for (j=0;j=3;j+) max=max_value(aij,max); /調(diào)用max_value函數(shù) if(max=aij) /如果函數(shù)返回的是aij的值 row=i; /記下該元素行號(hào)i colum=j; /記下該元素列號(hào)j coutmax=max,ro

12、w=row,colum=colummax) return x; /如果xmax,函數(shù)返回值為x else return max; /如果xmax,函數(shù)返回值為max void max_value(int x,int max) if(xmax) max=x; /錯(cuò)誤 C+程序程序設(shè)計(jì)設(shè)計(jì)v用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù)n數(shù)組名可以作實(shí)參和形參,傳遞的是數(shù)組的起始地址。n例5.7 用選擇法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序。n思路:每比較一輪,找出一個(gè)未經(jīng)排序的數(shù)中最小的一個(gè)na0 a1 a2 a3 a4 3 6 1 9 4 1 6 3 9 4 1 3 6 9 4 1 3 4 9 6 1 3

13、4 6 9C+程序程序設(shè)計(jì)設(shè)計(jì)#include using namespace std;int main( ) void select_sort(int array,int n); /函數(shù)聲明 int a10,i; coutenter the originl array:endl; for(i=0;iai; coutendl; select_sort(a,10); /函數(shù)調(diào)用,數(shù)組名作實(shí)參 coutthe sorted array:endl; for(i=0;i10;i+) /輸出10個(gè)已排好序的數(shù) coutai ; coutendl; return 0;C+程序程序設(shè)計(jì)設(shè)計(jì)void sele

14、ct_sort(int array, int n) /形參array是數(shù)組名 int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(arrayjarrayk) k=j; t=arrayk; arrayk=arrayi; arrayi=t; C+程序程序設(shè)計(jì)設(shè)計(jì)v用數(shù)組名作函數(shù)參數(shù)的說(shuō)明用數(shù)組名作函數(shù)參數(shù)的說(shuō)明n如果函數(shù)實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名(或指針變量),形參不能聲明為普通變量。實(shí)參數(shù)組與形參數(shù)組類型應(yīng)一致。n數(shù)組名代表數(shù)組首元素的地址,并不代表數(shù)組中的全部元素。因此用數(shù)組名作函數(shù)實(shí)參時(shí),不是把實(shí)參數(shù)組的值傳遞給形參,而只是將實(shí)參

15、數(shù)組首元素的地址傳遞給形參。實(shí)參數(shù)組和形參數(shù)組就共占同一段內(nèi)存實(shí)參數(shù)組和形參數(shù)組就共占同一段內(nèi)存單元,改變形參數(shù)組元素的值將同時(shí)改變實(shí)參數(shù)組元單元,改變形參數(shù)組元素的值將同時(shí)改變實(shí)參數(shù)組元素的值。素的值。C+程序程序設(shè)計(jì)設(shè)計(jì)v用數(shù)組名作函數(shù)參數(shù)的說(shuō)明用數(shù)組名作函數(shù)參數(shù)的說(shuō)明nC+實(shí)際上只把形參數(shù)組名作為一個(gè)指針變量來(lái)處理,用來(lái)接收從實(shí)參傳過(guò)來(lái)的地址。n形參一維數(shù)組的聲明中可以寫元素個(gè)數(shù),也可以不寫nvoid select_sort(int array10,int n) /指定元素個(gè)數(shù)與實(shí)參數(shù)組相同nvoid select_sort(int array,int n) /不指定元素個(gè)數(shù)nvoid

16、select_sort(int array5,int n) /指定元素個(gè)數(shù)與實(shí)參數(shù)組不同v 例例5.8 有一個(gè)有一個(gè)的矩陣,求矩陣中所有元素中的最大值的矩陣,求矩陣中所有元素中的最大值,要求用函數(shù)處理。要求用函數(shù)處理。C+程序程序設(shè)計(jì)設(shè)計(jì)#include using namespace std;int main( ) int max_value(int array4); int a34=11,32,45,67,22,44,66,88,15,72,43,37; coutmax value is max_value(a)endl; return 0;int max_value(int array4

17、) int i,j,max;max=array00;for( i=0;i3;i+) for(j=0;jmax) max=arrayij; return max; C+程序程序設(shè)計(jì)設(shè)計(jì)5.5 字符數(shù)組v字符數(shù)組字符數(shù)組n用來(lái)存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符n字符數(shù)組的定義和初始化n默認(rèn)為空字符( )nchar c10;nc0=I;c1= ;c2=a;c3=m;c4= ; c5=h;c6=a;c7=p;c8=p; c9=y;nchar c10=I, ,a,m, ,h,a,p,p,y;nchar c=I, ,a,m, ,h,a,p,p,y;C+程序程序設(shè)計(jì)設(shè)計(jì)v字符數(shù)組

18、的賦值與引用字符數(shù)組的賦值與引用n只能對(duì)字符數(shù)組的元素賦值,而不能用賦值語(yǔ)句對(duì)整個(gè)數(shù)組賦值。nchar c5;nc=C,h,i,n,a; /錯(cuò)誤,不能對(duì)整個(gè)數(shù)組一次賦值nc0=C; c1=h;c2=i;c3=n;c4=a; /對(duì)數(shù)組元素賦值,正確na=b; /錯(cuò)誤,不能對(duì)整個(gè)數(shù)組整體賦值na0=b0; /正確,引用數(shù)組元素 C+程序程序設(shè)計(jì)設(shè)計(jì)v 例例5.9 設(shè)計(jì)和輸出一個(gè)鉆石圖形。設(shè)計(jì)和輸出一個(gè)鉆石圖形。#include using namespace std;void main( ) char diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*;

19、int i,j; for (i=0;i5;i+) for (j=0;j5;j+) coutdiamondij; /逐個(gè)引用數(shù)組元素 coutendl; C+程序程序設(shè)計(jì)設(shè)計(jì) * * * * * * *v字符串和字符串結(jié)束標(biāo)志字符串和字符串結(jié)束標(biāo)志n字符串結(jié)束標(biāo)志0n0表示ASCII碼為0的字符,即什么也不做n對(duì)一個(gè)字符串常量,系統(tǒng)會(huì)自動(dòng)在所有字符的后面加一個(gè)0作為結(jié)束符。nI am happy共有10個(gè)字符,但在內(nèi)存中占11個(gè)字節(jié)n在程序中往往依靠檢測(cè)0的位置來(lái)判定字符串是否結(jié)束,而不是根據(jù)數(shù)組的長(zhǎng)度來(lái)決定字符串長(zhǎng)度n用字符串常量來(lái)初始化字符數(shù)組nchar str=I am happy;nch

20、ar str=I am happy;nchar str=I, ,a,m, ,h,a,p,p,y,0;n字符數(shù)組并不要求它的最后一個(gè)字符為0,甚至可以不包含0C+程序程序設(shè)計(jì)設(shè)計(jì)v字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出n(1) 逐個(gè)字符輸入輸出 for (i=0;i5;i+) for (j=0;j5;j+) coutdiamondij; /逐個(gè)引用數(shù)組元素 coutstr; /用字符數(shù)組名輸入字符串coutstr; /用字符數(shù)組名輸出字符串C+程序程序設(shè)計(jì)設(shè)計(jì)v字符數(shù)組輸入輸出的注意事項(xiàng)字符數(shù)組輸入輸出的注意事項(xiàng)n輸出的字符不包括結(jié)束符0。n輸出字符串時(shí),cout流中用字符數(shù)組名,而不是數(shù)組元素名

21、。 ncoutstr;ncoutstr4n如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到遇0結(jié)束。n如果一個(gè)字符數(shù)組中包含一個(gè)以上0,則遇第一個(gè)0時(shí)輸出就結(jié)束。n用cin從鍵盤向計(jì)算機(jī)輸入一個(gè)字符串時(shí),從鍵盤輸入的字符串應(yīng)短于已定義的字符數(shù)組的長(zhǎng)度,否則會(huì)出現(xiàn)問(wèn)題。C+程序程序設(shè)計(jì)設(shè)計(jì)v字符串處理函數(shù)字符串處理函數(shù)n需包含string.h或string頭文件1. 字符串連接函數(shù) strcatnstrcat(char,const char);char str130=Peoples Republic of ;char str2=China;cout字符串2,函數(shù)值為一正整數(shù)。n(3) 如果字符串1字符

22、串2,函數(shù)值為一負(fù)整數(shù)。n規(guī)則:兩個(gè)字符串自左至右逐個(gè)字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到0為止。如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn)。nstrcmp(China,Korea);C+程序程序設(shè)計(jì)設(shè)計(jì)v字符串處理函數(shù)字符串處理函數(shù)n4. 字符串長(zhǎng)度函數(shù)strlennstrlen(const char);n測(cè)試字符串長(zhǎng)度。其函數(shù)的值為字符串中的實(shí)際長(zhǎng)度,不包括0在內(nèi)。char str10=China;coutstrlen(str);C+程序程序設(shè)計(jì)設(shè)計(jì)v 例例5.10 有有3個(gè)字符串個(gè)字符串,要求找出其中最大者。要求用函數(shù)要

23、求找出其中最大者。要求用函數(shù)調(diào)用。調(diào)用。#include #include using namespace std;int main( ) void max_string(char str30,int i); /函數(shù)聲明 int i; char country_name330; for(i=0;icountry_namei; /輸入3個(gè)國(guó)家名 max_string(country_name,3); /調(diào)用max_string函數(shù) return 0;C+程序程序設(shè)計(jì)設(shè)計(jì)void max_string(char str30,int n) int i; char string30; strcpy(s

24、tring,str0); /使string的值為str0的值 for(i=0;i0) /如果stristring strcpy(string,stri); /將stri中的字符串復(fù)制到string coutendlthe largest string is: stringendl;C+程序程序設(shè)計(jì)設(shè)計(jì)5.6 C+處理字符串的方法字符串類v字符串類字符串類nstring并不是C+語(yǔ)言本身具有的基本類型,它是在C+標(biāo)準(zhǔn)庫(kù)中聲明的一個(gè)字符串類,用這種類可以定義對(duì)象。n定義字符串變量n#include /注意頭文件名不是string.hnstring string1; /定義string1為字符串變量

25、nstring string2=China; /定義string2同時(shí)對(duì)其初始化C+程序程序設(shè)計(jì)設(shè)計(jì)v對(duì)字符串變量的操作對(duì)字符串變量的操作nstring1=Canada; /用字符串常量賦值nstring2=string1; /用字符串變量賦值n可以對(duì)字符串變量中某一字符進(jìn)行操作nstring word=Then; nword2=a; n字符串變量的輸入輸出ncin string1; ncout(大于)、=(大于或等于)、=(小于或等于)等關(guān)系運(yùn)算符來(lái)進(jìn)行字符串的比較C+程序程序設(shè)計(jì)設(shè)計(jì)v字符串?dāng)?shù)組字符串?dāng)?shù)組n可以用string定義字符串?dāng)?shù)組nstring name5; nstring nam

26、e5=Zhang,Li,Fun,Wang,Tan;n并不要求每個(gè)字符串元素具有相同的長(zhǎng)度n每一個(gè)字符串元素中只包含字符串本身的字符而不包括0。C+程序程序設(shè)計(jì)設(shè)計(jì)v 例例5.11 輸入輸入3個(gè)字符串,要求將字母按由小到大的順序個(gè)字符串,要求將字母按由小到大的順序輸出。輸出。#include #include using namespace std;int main( ) string string1,string2,string3,temp; coutstring1string2string3; if(string2string3) temp=string2;string2=string3;string3=temp; if(string1=string2) coutstring1 string2 string3endl; else if(string1=string3) coutstring2 string1 string3endl; else coutstring2 string3 string1endl; C+程序程序設(shè)計(jì)設(shè)計(jì)v 例例5.12 一個(gè)班有一個(gè)班有n個(gè)學(xué)生,需要把每個(gè)學(xué)生的簡(jiǎn)單材料個(gè)學(xué)

溫馨提示

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