C++數(shù)組和字符串_第1頁(yè)
C++數(shù)組和字符串_第2頁(yè)
C++數(shù)組和字符串_第3頁(yè)
C++數(shù)組和字符串_第4頁(yè)
C++數(shù)組和字符串_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、chap4 理解數(shù)組的定義和使用,掌握數(shù)組的理解數(shù)組的定義和使用,掌握數(shù)組的常用操作和字符串的處理。常用操作和字符串的處理。數(shù)組的應(yīng)用,字符串的處理方法。數(shù)組的應(yīng)用,字符串的處理方法。 講授與上機(jī)相結(jié)合。講授與上機(jī)相結(jié)合。chap4 數(shù)組的概念;數(shù)組的概念;數(shù)組的應(yīng)用;數(shù)組的應(yīng)用;數(shù)組的定義;數(shù)組的定義; 字符串字符串本章授課內(nèi)容本章授課內(nèi)容 常見錯(cuò)誤常見錯(cuò)誤chap44-1 數(shù)組數(shù)組的概念的概念 數(shù)組是一組有序數(shù)據(jù)的集合;數(shù)組中的每一個(gè)元素?cái)?shù)組是一組有序數(shù)據(jù)的集合;數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)都屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一的確定數(shù)組中

2、的元素。來唯一的確定數(shù)組中的元素。 在科學(xué)計(jì)算和數(shù)據(jù)處理中,要用到成批數(shù)據(jù),這些在科學(xué)計(jì)算和數(shù)據(jù)處理中,要用到成批數(shù)據(jù),這些數(shù)據(jù)類型相同,且彼此間存在一定的順序關(guān)系,為了數(shù)據(jù)類型相同,且彼此間存在一定的順序關(guān)系,為了便于處理,引入了數(shù)組類型。便于處理,引入了數(shù)組類型。一維數(shù)組一維數(shù)組a0a1a2a3a4a5數(shù)列數(shù)列583296chap4例例4.1.1:4.1.1:某班有某班有8080名學(xué)生名學(xué)生, ,求該班成績(jī)的平均分求該班成績(jī)的平均分 #include void main( ) int j , sum , s ; float ave ; sum=0; for ( j=1; js; sum=s

3、um+s; ave=sum/80.0; cout “ave=”ave;假設(shè)現(xiàn)在要求保存每個(gè)學(xué)生的成績(jī)假設(shè)現(xiàn)在要求保存每個(gè)學(xué)生的成績(jī), ,那就不能只使用一個(gè)變量那就不能只使用一個(gè)變量scorescore了了, ,而需要而需要4040個(gè)變量個(gè)變量, ,但這樣一來輸入、但這樣一來輸入、輸出、計(jì)算都會(huì)變得繁瑣輸出、計(jì)算都會(huì)變得繁瑣. . 在這種在這種情況下情況下, ,我們可以使用數(shù)組類型我們可以使用數(shù)組類型, ,說說明一個(gè)含有明一個(gè)含有4040個(gè)元素的數(shù)組個(gè)元素的數(shù)組, ,每個(gè)每個(gè)數(shù)組元素存放一個(gè)成績(jī)數(shù)組元素存放一個(gè)成績(jī), ,成績(jī)的輸成績(jī)的輸入、輸出、計(jì)算都可通過循環(huán)來實(shí)入、輸出、計(jì)算都可通過循環(huán)來實(shí)

4、現(xiàn)現(xiàn)一、數(shù)組的引入一、數(shù)組的引入chap4#include void main( ) int j , sum , s80 ; float ave ; sum=0; for ( j=0; jsj; sum=sum+sj; ave=sum/80.0; cout “ave=”n;int an;._ 常量表達(dá)式中不能有變量常量表達(dá)式中不能有變量 常量表達(dá)式的值不能是實(shí)數(shù)常量表達(dá)式的值不能是實(shí)數(shù)_ 下標(biāo)從下標(biāo)從0開始開始, a0 , a1 a9,沒有,沒有a10;_ 常量表達(dá)式的值為元素的個(gè)數(shù)常量表達(dá)式的值為元素的個(gè)數(shù)錯(cuò)誤錯(cuò)誤chap4二、一維數(shù)組的存儲(chǔ)結(jié)構(gòu)二、一維數(shù)組的存儲(chǔ)結(jié)構(gòu)a_ 一個(gè)數(shù)組的所有元素

5、都是連續(xù)存儲(chǔ)的一個(gè)數(shù)組的所有元素都是連續(xù)存儲(chǔ)的_ 數(shù)組元素為數(shù)組元素為: a0,a1,a2.a9int a10;_ 所占空間為所占空間為: 類型長(zhǎng)度類型長(zhǎng)度*元素個(gè)數(shù)元素個(gè)數(shù) 84 : 66 80 95101010141018 :1046a0a1a2 :a9chap4三、數(shù)組元素的引用形式三、數(shù)組元素的引用形式_ 數(shù)組元素的引用數(shù)組元素的引用: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)a0 = a2+a4*2240int a10;a0=2;下標(biāo)下標(biāo) 說明說明(1) 下標(biāo)可以是整型常量或整型表達(dá)式下標(biāo)可以是整型常量或整型表達(dá)式 如如: a1 , a2*3(2) 數(shù)組定義為數(shù)組定義為 int a5 , 數(shù)組長(zhǎng)度為數(shù)組

6、長(zhǎng)度為5 而下標(biāo)在而下標(biāo)在0 - 4之內(nèi)之內(nèi), 即即a0 - a4注意注意: 如果出現(xiàn)如果出現(xiàn) a5 = 72 ; 編譯時(shí)不會(huì)指出錯(cuò)誤編譯時(shí)不會(huì)指出錯(cuò)誤, 系統(tǒng)會(huì)系統(tǒng)會(huì)將將a4后下一個(gè)存儲(chǔ)單元后下一個(gè)存儲(chǔ)單元 賦值為賦值為72, 但這樣可能會(huì)破壞數(shù)但這樣可能會(huì)破壞數(shù)組以外其他變量的值。組以外其他變量的值。chap4四、一維數(shù)組的初始化四、一維數(shù)組的初始化概念概念 : 在定義一維數(shù)組時(shí)對(duì)各元素指定初始在定義一維數(shù)組時(shí)對(duì)各元素指定初始 值稱為數(shù)組的初始化值稱為數(shù)組的初始化如如: int a5 = 1 , 3 , 5 , 7 , 9 ;2. 說明說明 初值用初值用 括起來括起來, 數(shù)據(jù)之間用逗號(hào)分開

7、數(shù)據(jù)之間用逗號(hào)分開. 對(duì)數(shù)組的全體元素指定初值,可以不指明數(shù)組對(duì)數(shù)組的全體元素指定初值,可以不指明數(shù)組的長(zhǎng)度的長(zhǎng)度, 系統(tǒng)會(huì)根據(jù)系統(tǒng)會(huì)根據(jù) 內(nèi)數(shù)據(jù)的個(gè)數(shù)確定數(shù)組內(nèi)數(shù)據(jù)的個(gè)數(shù)確定數(shù)組的長(zhǎng)度。的長(zhǎng)度。 如如 : int a = 1 , 3 , 5 , 7 , 9 ;chap4(3) 對(duì)數(shù)組中部分元素指定初值對(duì)數(shù)組中部分元素指定初值 ( 這時(shí)不能這時(shí)不能 省略數(shù)組長(zhǎng)度省略數(shù)組長(zhǎng)度 ) 如如 : int a5 = 1 , 3 , 5 ; (4) 使數(shù)組中的全部元素初始值都為使數(shù)組中的全部元素初始值都為 0 如如: int a5 = 0 , 0 , 0 , 0 , 0 ;更簡(jiǎn)單的寫法:更簡(jiǎn)單的寫法: i

8、nt a5= 0 ;chap4例例4.2.1: 輸入輸入n個(gè)成績(jī)個(gè)成績(jī),求平均分求平均分#includevoid main( )int s,n,i;float aver=0.0;cinn;for ( i=0; is; aver+=s;aver/=n;coutsi; aver+=si; aver/=n;for ( i=0 ; iaver) coutai;輸入整個(gè)數(shù)組元素輸入整個(gè)數(shù)組元素:for (i=0;iai;輸出方法:輸出方法:輸出第輸出第i個(gè)數(shù)組元素:個(gè)數(shù)組元素:coutai;輸出整個(gè)數(shù)組元素:輸出整個(gè)數(shù)組元素:for (i=0;i10;i+) coutai;chap4_例例4.2.2:用

9、一維數(shù)組求用一維數(shù)組求Fibonacci 數(shù)列數(shù)列#includevoid main() int i; int f 20 = 1,1; for ( i=2; i20; i+ ) f i = f i-2 +f i-1; for ( i=0; i20; i+) if ( i%5 = 0) coutn; cout“t”f i ; 六、一維數(shù)組程序設(shè)計(jì)舉例六、一維數(shù)組程序設(shè)計(jì)舉例 1 1 0 0 0 0 : 0f0f1f2f3f4f5 :f19i=2f2=f0+f1i=3f3=f1+f2i=4f4=f2+f323586765chap4例例4.2.3: 輸入一個(gè)數(shù)據(jù),在已知數(shù)組中查找是否有該數(shù)據(jù)輸入一個(gè)

10、數(shù)據(jù),在已知數(shù)組中查找是否有該數(shù)據(jù) 5 8 0 1 9 2 6 3 7 49a0a1a2a3a4a5a6a7a8a9#include void main() int i , x ; int a10= 5, 8, 0, 1, 9, 2, 6, 3, 7, 4 ; cinx; for ( i=0 ; i10 ; i+) if ( x=ai ) cout“find!”endl; break; if ( i=10 ) cout “no find!” endl; chap4課堂練習(xí):課堂練習(xí):有一個(gè)數(shù)列有一個(gè)數(shù)列,它的第一項(xiàng)為它的第一項(xiàng)為0,第二項(xiàng)為第二項(xiàng)為1,以后以后每一項(xiàng)都是它的前兩項(xiàng)之和每一項(xiàng)都是

11、它的前兩項(xiàng)之和, 試生成此數(shù)列試生成此數(shù)列的前的前20項(xiàng)項(xiàng),并按逆序顯示出來并按逆序顯示出來.chap4練習(xí)答案:練習(xí)答案:#include Void main( ) int f20=0,1, j; for(j=2;j=0; j- -) / 逆序顯示逆序顯示 coutfj; coutaij;輸入整個(gè)數(shù)組的元素:輸入整個(gè)數(shù)組的元素:for ( i=0; i2; i+ ) for ( j=0; jaij;輸出方法:輸出方法:輸出第輸出第i行第行第j列元素:列元素:coutaij;輸出整個(gè)數(shù)組的元素:輸出整個(gè)數(shù)組的元素:for ( i=0; i2; i+) for ( j=0; j3; j+) co

12、utaij;chap4六、二維數(shù)組程序設(shè)計(jì)舉例六、二維數(shù)組程序設(shè)計(jì)舉例例例4.2.4: 有一個(gè)有一個(gè)3*4的矩陣的矩陣, 編編程求出其中的最大值及其所在程求出其中的最大值及其所在的行號(hào)和列號(hào)。的行號(hào)和列號(hào)。chap452093712610418maxrowcol1212#include void main( ) int i , j, row=0, col=0 , max ; int a34= 5, 2, 0, 9, 3, 7, 12, 6,10, 4, 1, 8 ; max=a00; for ( i=0 ; i3 ; i+ ) for ( j=0 ; jmax ) max=aij ; row=

13、i ; col=j ; cout“max=” max; cout“max=a”row col;輸出輸出:max=12max=a12chap4例例4.2.5: 將一個(gè)矩陣進(jìn)行轉(zhuǎn)置將一個(gè)矩陣進(jìn)行轉(zhuǎn)置(即原來的行變?yōu)榱屑丛瓉淼男凶優(yōu)榱?5209371261041840#includevoid main( ) int a34, b43 , i , j ; for ( i=0 ; i3 ; i+ ) for ( j=0 ; jaij ; for ( i=0 ; i3 ; i+ ) for (j=0 ; j4 ; j+) bji=aij; for ( i=0 ; i4 ; i+ ) for ( j=0 ;

14、 j3 ; j+ ) cout bij ; cout endl; 輸入數(shù)組輸入數(shù)組a進(jìn)行矩陣轉(zhuǎn)置進(jìn)行矩陣轉(zhuǎn)置輸出數(shù)組輸出數(shù)組ba02b20a21b12chap4課堂練習(xí):課堂練習(xí):1. 數(shù)組元素?cái)?shù)組元素ai是該數(shù)組中的第是該數(shù)組中的第個(gè)元素個(gè)元素.2 . 元素類型為元素類型為int的數(shù)組的數(shù)組a10共占用共占用字節(jié)的存儲(chǔ)字節(jié)的存儲(chǔ)空間,其中元素空間,其中元素a5的字節(jié)地址為的字節(jié)地址為.3 .元素類型為元素類型為double的數(shù)組的數(shù)組a46共占用共占用字節(jié)的字節(jié)的存儲(chǔ)空間,其中元素存儲(chǔ)空間,其中元素a25的字節(jié)地址為的字節(jié)地址為.4.元素類型為元素類型為char的數(shù)組的數(shù)組a1030共占用共

15、占用字節(jié)的字節(jié)的存儲(chǔ)空間,其中元素存儲(chǔ)空間,其中元素a34的字節(jié)地址為的字節(jié)地址為.答案答案: 1. i+1 2. 40 a+20 3. 192 a+136 4. 300 a+94 chap4 第一方面:利用數(shù)組進(jìn)行數(shù)值計(jì)算第一方面:利用數(shù)組進(jìn)行數(shù)值計(jì)算: :書中給出了三個(gè)例子,一個(gè)是計(jì)算個(gè)人所得稅,二是進(jìn)行書中給出了三個(gè)例子,一個(gè)是計(jì)算個(gè)人所得稅,二是進(jìn)行矩陣求和,三是按月進(jìn)行公司產(chǎn)值計(jì)算,都具有代表性矩陣求和,三是按月進(jìn)行公司產(chǎn)值計(jì)算,都具有代表性 P103(2)P103(2)4-3 數(shù)組的應(yīng)用數(shù)組的應(yīng)用 第二方面:利用數(shù)組進(jìn)行統(tǒng)計(jì)第二方面:利用數(shù)組進(jìn)行統(tǒng)計(jì): : 書中給出了兩個(gè)例子,一是

16、統(tǒng)計(jì)每個(gè)候選人的選票,書中給出了兩個(gè)例子,一是統(tǒng)計(jì)每個(gè)候選人的選票, 二是統(tǒng)計(jì)每個(gè)用電區(qū)間的居民戶數(shù)二是統(tǒng)計(jì)每個(gè)用電區(qū)間的居民戶數(shù):P105(1):P105(1) 第三方面:數(shù)據(jù)排序:第三方面:數(shù)據(jù)排序:/數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 書中介紹了兩種方法:選擇排序和插入排序書中介紹了兩種方法:選擇排序和插入排序( (見后見后) ) 第四方面:查找數(shù)據(jù):第四方面:查找數(shù)據(jù):/數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 書中介紹了兩種方法:順序查找(不要求數(shù)組元素有序書中介紹了兩種方法:順序查找(不要求數(shù)組元素有序 排列)和二分查找(要求數(shù)組元素有序排列)排列)和二分查找(要求數(shù)組元素有序排列)P109(1)P109(1)chap4基

17、本算法舉例基本算法舉例1.排序排序(1)冒泡法排序冒泡法排序例例4.3.1:輸入:輸入5個(gè)數(shù)個(gè)數(shù),進(jìn)行由小到大排序進(jìn)行由小到大排序: 9 8 5 4 2算法:兩兩比較,大數(shù)向后移,找到最大數(shù)放在最后,再在剩余的的4個(gè)數(shù)中進(jìn)行兩兩比較,找到最大數(shù),以此類推.最后,小數(shù)排在開始,相當(dāng)于浮起,故稱之為:冒泡法冒泡法chap485429542842524比較4次第一輪比較3次第二輪比較2次第三輪比較1次第四輪9854289542859428549285425842548254242452對(duì) 個(gè)數(shù),則要進(jìn)行趟掃描,在第 趟掃描中要進(jìn)行 次比較。可以推知:chap4/*排序排序*/ for (i=0; i

18、N-1; i+) for ( j=0;jaj+1) t =aj; aj=aj+1; aj+1=t;chap4#include#define N 10void main() int i, j, aN, t; for(i=0;iai; for(i=0;iN;i+)/輸出輸出 coutai ;/*排序排序*/for (i=0;iN-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t;for(i=0;iN;i+) /輸出輸出 coutai ;源程序源程序: 例例4.3.1 chap4(2)選擇法排序選擇法排序特點(diǎn):比較后不立即互換元素,而是記下其位置并在每一輪比較完畢

19、后和()互換首先,比較的元素不同,以降序?yàn)槔钱?dāng)前元素與上次比較後的最大元素進(jìn)行比較,因此,在進(jìn)行比較之前,要有一個(gè)初始化最大元素的過程其次,確定完畢的元素的互換是在每一輪完成后進(jìn)行的,而不是在比較后進(jìn)行的再次,互換元素的不同,為(i)和(iMax)舉例原始數(shù)據(jù): 3,5,7,9,4 要求:降序chap4第一輪比較,初始化設(shè)最大元素下標(biāo)為第一輪比較,初始化設(shè)最大元素下標(biāo)為 k03579k=0 3579 k=13579 k=23579k=3k=3A(0) 與與 A(k)交換交換的結(jié)果的結(jié)果:9573chap4#include const int N=10;void main( ) int aN

20、 , i , j , k , t; for ( i=0 ; iai; for ( i=0 ; iN-1 ; i+) k=i ; for ( j=i+1 ; jak ) k=j ; if ( k!=i ) t=ai ; ai=ak ; ak=t ; 源程序源程序:例例4.3.2for ( i=0 ; iN ; i+) coutai;A0 A1 A2 A n-1 A0 A1 A2 A n-1 A0 A i-1 A i . . A n-1 A0 A1 . . A n-2 A n-1 chap42.在有序數(shù)組中插入一個(gè)數(shù)后使原數(shù)組仍在有序數(shù)組中插入一個(gè)數(shù)后使原數(shù)組仍然有序。然有序。例如:例如: 3 5

21、 7 12 18(m=5),), 將將b=10插入插入步驟:步驟:(1)要找到要找到b在數(shù)組中的位置在數(shù)組中的位置(2)給給b讓位置讓位置(3)將將b放到該位置上放到該位置上(4)數(shù)組元素的個(gè)數(shù)數(shù)組元素的個(gè)數(shù) m 加加 1chap43571218(2)357121218(3)for(i=0;ib)break;for(j=m-1;j=i;j-) aj+1=aj;ai=b;121810(1)3571218a0a1a2a3a4a5程序見例程序見例4.3.3m=m+1;(4)chap43 5 7 10 12 18 (m=6), 將將b=10刪除刪除步驟:步驟:(1) 要找到要找到b在數(shù)組中的位置在數(shù)組

22、中的位置(2) 后面的數(shù)組元素依次前移后面的數(shù)組元素依次前移,覆蓋該位置覆蓋該位置 上的數(shù)組元素即可實(shí)現(xiàn)刪除上的數(shù)組元素即可實(shí)現(xiàn)刪除(3) 數(shù)組元素的個(gè)數(shù)數(shù)組元素的個(gè)數(shù) m 減減 13.在有序數(shù)組中刪除一個(gè)數(shù)在有序數(shù)組中刪除一個(gè)數(shù),例如例如:chap4357101218(1)357101218(2)357121218for(i=0;im;i+) if (ai=b)break;101218for(j=i;jc0c1c2 ; for ( i=0 ; i ci ;2. 整個(gè)數(shù)組的輸入輸出,即按數(shù)組名輸入輸出整個(gè)數(shù)組的輸入輸出,即按數(shù)組名輸入輸出 (僅用于字符數(shù)組僅用于字符數(shù)組),因數(shù)組名本身代表數(shù)組

23、的,因數(shù)組名本身代表數(shù)組的 首地址首地址四、字符數(shù)組的輸入和輸出四、字符數(shù)組的輸入和輸出chap4注意注意 : (1) 輸入、輸出字符串時(shí)不包括輸入、輸出字符串時(shí)不包括“ ”(2) cin輸入時(shí)系統(tǒng)一直讀取字符,直到遇到輸入時(shí)系統(tǒng)一直讀取字符,直到遇到“空白空白 符符”為止。為止。例如:輸入數(shù)據(jù)例如:輸入數(shù)據(jù) hello world C數(shù)組中內(nèi)容為數(shù)組中內(nèi)容為hellocoutc;cinsetw(20)c;chap4補(bǔ)充補(bǔ)充get( )函數(shù)函數(shù)(包含在包含在“iostream.h”) 如想輸入含空格的字符串,如如想輸入含空格的字符串,如“hello world”hello world” 只能使

24、用只能使用get( )get( )函數(shù)函數(shù),使用格式如下:,使用格式如下: cin.getcin.get( (字符數(shù)組名,字符串長(zhǎng)度,規(guī)定的結(jié)束符字符數(shù)組名,字符串長(zhǎng)度,規(guī)定的結(jié)束符) ) 其中,規(guī)定的結(jié)束符省略時(shí),默認(rèn)為回車鍵。其中,規(guī)定的結(jié)束符省略時(shí),默認(rèn)為回車鍵。 如:如: char str20;char str20; cin.getcin.get(str,20)(str,20)chap4五、字符串處理函數(shù)五、字符串處理函數(shù)字符串函數(shù)的原型保存在字符串函數(shù)的原型保存在中中v 字符串連接函數(shù)字符串連接函數(shù): strcat(s1,s2); char *strcat ( char *s1, c

25、onst char *s2 ); 連接連接s1和和s2兩個(gè)字符串賦給兩個(gè)字符串賦給s1,返回,返回s1的值的值v 字符串拷貝函數(shù)字符串拷貝函數(shù): strcpy(s1,s2); char *strcpy ( char *s1, const char *s2 ); 將將s2中的字符串賦給中的字符串賦給s1,返回,返回s1的值的值v 字符串比較函數(shù)字符串比較函數(shù): strcmp(s1,s2)v 求字符串長(zhǎng)度函數(shù):求字符串長(zhǎng)度函數(shù):strlen(s) 函數(shù)值為整數(shù)函數(shù)值為整數(shù)(返回字符個(gè)數(shù)返回字符個(gè)數(shù))(參數(shù)為字符數(shù)組名)(參數(shù)為字符數(shù)組名)chap4六、字符數(shù)組程序應(yīng)用六、字符數(shù)組程序應(yīng)用v 字符串

26、的長(zhǎng)度字符串的長(zhǎng)度v 逆序逆序v 字符串函數(shù)字符串函數(shù)chap4_例例4.4.1:求字符串長(zhǎng)度:求字符串長(zhǎng)度掃描數(shù)組掃描數(shù)組,只要不是只要不是0,計(jì)數(shù)器就加計(jì)數(shù)器就加1源程序源程序:#includevoid main() int i; char s50; cins; for (i=0;i50 & si!= 0; i+) ; cout“Lengh of “s“is”i ;ac d0bifor (i=0; i50& si+ != 0 ;) ;ii=0chap4_字符串函數(shù)字符串函數(shù)/*例例4.4.2: STRCAT*/#includevoid main() int i , j; c

27、har s140, s220; cins1s2; for( i=0; i40 & s1i!=0;i+) ; for( j=0; j20 & s2j!=0;j+)s1i+=s2 j; s1i=0; /*s1i=s2j;*/ couts1;s1s2acd0beg0facdebfg0s1/ i=strlen(s1);chap4/*例例4.4.3: STRCPY*/#include void main() char p180,p280; int i; cinp2; for (i=0;p2i!=0;i+) p1i=p2i; p1i=0; cout“p1=“p1“np2=“p2“n”;ch

28、ap4 例例 4.4.4(綜合舉例)(綜合舉例) 某班有某班有50個(gè)個(gè)學(xué)生,期終考試學(xué)生,期終考試8門課程。求每個(gè)學(xué)門課程。求每個(gè)學(xué)生總成績(jī)、平均成績(jī),并按總成績(jī)高生總成績(jī)、平均成績(jī),并按總成績(jī)高分到低分輸出。分到低分輸出。( 上機(jī)作業(yè)上機(jī)作業(yè) ) skipchap4char name5112; /*采用外部數(shù)組實(shí)現(xiàn)數(shù)據(jù)傳遞采用外部數(shù)組實(shí)現(xiàn)數(shù)據(jù)傳遞*/float cj519; float tacj513; #includevoid input( ); /*函數(shù)聲明函數(shù)聲明*/void count( ); void sort( ); void output( );void main( ) inp

29、ut( ); /*調(diào)用輸入函數(shù)調(diào)用輸入函數(shù)*/ count( ); /*調(diào)用計(jì)算函數(shù)調(diào)用計(jì)算函數(shù)*/ sort( ); /*調(diào)用排序函數(shù)調(diào)用排序函數(shù)*/ output( ); /*調(diào)用輸出函數(shù)調(diào)用輸出函數(shù)*/ chap4void input( ) /*輸入函數(shù)輸入函數(shù)*/ int i, j; for(i=1; i=50; i+) cout“請(qǐng)輸入第請(qǐng)輸入第”inamei; for(j=1; jcjij; chap4void count( ) /*計(jì)算函數(shù)計(jì)算函數(shù)*/ int i, j; for(i=1; i=50; i+) tacji1=0; for(j=1; j=8; j+) tacji1+

30、= cjij; tacji2= tacji1/ 8; chap4 void sort( ) /*排序函數(shù)排序函數(shù)*/ int i , flag; char ts12; float tc; do flag=0; for(i=1; itacji1) strcpy(ts, namei);); strcpy(namei,namei+1);); strcpy(namei+1,ts);); /交換姓名交換姓名 chap4 for(j=1; j=8; j+)/*交換交換8門課程成績(jī)門課程成績(jī)*/ t=cj i j; cj i j=cj i+1 j; cj i+1 j=t; t= tacj i 1; tacj

31、 i 1= tacj i+1 1; tacj i+1 1 =t; /*交換總成績(jī)交換總成績(jī)*/ t= tacj i 2; tacj i 2 = tacj i+1 2; tacj i+1 2 = t; /*交換平均成績(jī)交換平均成績(jī)*/ flag=1; while(flag=1);); chap4void output( ) /*輸出函數(shù)輸出函數(shù)*/ int i; cout50個(gè)學(xué)生成績(jī)處理結(jié)果如下:個(gè)學(xué)生成績(jī)處理結(jié)果如下: n; cout 姓名姓名 課程課程1 課程課程2 課程課程3 課程課程4 課程課程5 課程課程6 課程課程7 課程課程8 總成績(jī)總成績(jī) 平均成績(jī)平均成績(jī) 名次名次n; for

32、(i=1; i=50; i+) coutnamei; for(j=1; j=8; j+) coutcjij; couttacji1 tacji2 i; coutn; chap4常見錯(cuò)誤常見錯(cuò)誤1、數(shù)組下標(biāo)越界。、數(shù)組下標(biāo)越界。如:如: int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10;for (i=1; i=10; i+) cout ai;C+規(guī)定定義時(shí)用規(guī)定定義時(shí)用a10,表示數(shù)組有,表示數(shù)組有10 個(gè)元素,個(gè)元素,而不是可以用的最大下標(biāo)值為而不是可以用的最大下標(biāo)值為10。數(shù)組只包括。數(shù)組只包括a0到到a910 個(gè)元素,因此用個(gè)元素,因此用a10超出范圍。超出范圍。

33、for (i=0; i=9; i+) cout ai;chap42、數(shù)組整體賦值。、數(shù)組整體賦值。int a10;int b10=1, 2, 3, 4, 5, 6;a=b;+不允許對(duì)數(shù)組進(jìn)行整體操作,如果把數(shù)不允許對(duì)數(shù)組進(jìn)行整體操作,如果把數(shù)組組 a 賦值給數(shù)組賦值給數(shù)組 b ,需要用循環(huán)語(yǔ)句來實(shí)現(xiàn)。,需要用循環(huán)語(yǔ)句來實(shí)現(xiàn)。for (i=0; i10; i+) ai=bi;chap43、誤以為數(shù)組名代表數(shù)組中全部元素。、誤以為數(shù)組名代表數(shù)組中全部元素。main( ) int a4=1, 2, 3, 4; cout a;企圖用數(shù)組名代表全部元素。企圖用數(shù)組名代表全部元素。+中,數(shù)組名代表數(shù)組首地

34、址,不能通過中,數(shù)組名代表數(shù)組首地址,不能通過數(shù)組名輸出數(shù)組名輸出4個(gè)整數(shù)。個(gè)整數(shù)。cout a0 a1 a2 a3);或:或:for (i=0; i=3; i+) cout ai;chap44、引用數(shù)組元素時(shí)使用圓括號(hào)。、引用數(shù)組元素時(shí)使用圓括號(hào)。cout a(5);5、向一個(gè)字符數(shù)組賦字符串。、向一個(gè)字符數(shù)組賦字符串。char str20;str=I am a boy.;這種錯(cuò)誤和第二種錯(cuò)誤為一種錯(cuò)誤,即不支這種錯(cuò)誤和第二種錯(cuò)誤為一種錯(cuò)誤,即不支持對(duì)數(shù)組的整體操作。持對(duì)數(shù)組的整體操作。strcpy(str, I am a bpy.);chap46、構(gòu)造字符串時(shí)忘記在末尾應(yīng)加、構(gòu)造字符串時(shí)忘記在末尾應(yīng)加0。i=0;while (ch=getchar( )!=n) stri+=ch;cout str;由于構(gòu)造的字符串沒有加結(jié)束標(biāo)志,當(dāng)用由于構(gòu)造的字符串沒有加結(jié)束標(biāo)志,當(dāng)用cout函函數(shù)輸出數(shù)輸出str時(shí),從時(shí),從str的起始地址開始一個(gè)個(gè)的輸出,的起始地址開始一個(gè)個(gè)的輸出,輸出完讀入的字符后,沒有遇到輸出完讀入的字符后,沒有遇到0,繼續(xù)輸出,這,繼續(xù)輸出,這時(shí)的內(nèi)容已不再是字符串中的字符。因此,時(shí)的內(nèi)容已不再是字符串中的字符。因此, 在自己

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論