C語言程序設(shè)計項目化教程課件-模塊4_第1頁
C語言程序設(shè)計項目化教程課件-模塊4_第2頁
C語言程序設(shè)計項目化教程課件-模塊4_第3頁
C語言程序設(shè)計項目化教程課件-模塊4_第4頁
C語言程序設(shè)計項目化教程課件-模塊4_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

模塊四數(shù)組模塊學(xué)習(xí)目標(biāo)1.掌握一維數(shù)組的定義、引用以及初始化;2.掌握二維數(shù)組的定義、引用以及初始化;3.掌握字符數(shù)組的定義、引用以及初始化;4.握字符串的基本概念和使用。5.了解C語言中數(shù)組元素的排序方法6.掌握冒泡排序法原理數(shù)組二維數(shù)組字符數(shù)組字符串處理函數(shù)數(shù)組中的排序數(shù)組數(shù)組

我們知道,要想把數(shù)據(jù)放入內(nèi)存,必須先要分配內(nèi)存空間。放入4個整數(shù),就得分配4個int類型的內(nèi)存空間:這樣,就在內(nèi)存中分配了4個int類型的內(nèi)存空間,共4×4=16個字節(jié),并為它們起了一個名字,叫a。我們把這樣的一組數(shù)據(jù)的集合稱為數(shù)組(Array),它所包含的每一個數(shù)據(jù)叫做數(shù)組元素(Element),所包含的數(shù)據(jù)的個數(shù)稱為數(shù)組長度(Length),例如inta[4];就定義了一個長度為4的整型數(shù)組,名字是a。

數(shù)組中的每個元素都有一個序號,這個序號從0開始,而不是從我們熟悉的1開始,稱為下標(biāo)(Index)。使用數(shù)組元素時,指明下標(biāo)即可,形式為:arrayName[index];

arrayName為數(shù)組名稱,index為下標(biāo)。數(shù)組

在學(xué)習(xí)過程中,我們經(jīng)常會使用循環(huán)結(jié)構(gòu)將數(shù)據(jù)放入數(shù)組中(也就是為數(shù)組元素逐個賦值),然后再使用循環(huán)結(jié)構(gòu)輸出(也就是依次讀取數(shù)組元素的值),下面我們就來演示一下如何將1~10這十個數(shù)字放入數(shù)組中:01#include<stdio.h>02intmain(){03intnums[10];04inti;05//將1~10放入數(shù)組中06for(i=0;i<10;i++){07nums[i]=(i+1);08}09//依次輸出數(shù)組元素10for(i=0;i<10;i++){11printf("%d",nums[i]);12 }13return0;}

實(shí)例4-1-1:一維數(shù)組的賦值數(shù)組

更改上面的代碼,讓用戶輸入10個數(shù)字并放入數(shù)組中:01#include<stdio.h>02intmain(){03intnums[10];04inti;05//從控制臺讀取用戶輸入06for(i=0;i<10;i++){07scanf("%d",&nums[i]);//注意取地址符&08}09//依次輸出數(shù)組元素10for(i=0;i<10;i++){11printf("%d",nums[i]);12}13return0;14}

實(shí)例4-1-2:一維數(shù)組的賦值數(shù)組數(shù)組元素的引用形式為:

數(shù)組名[下標(biāo)]其中,下標(biāo)必須是一個整型表達(dá)式。例如: a[3]=5; /*將5賦值給數(shù)組元素a[3]*/ a[2]=a[3]-a[a[3]-4]; /*將a[3]與a[1]之差賦給數(shù)組元素a[2]*/都是合法的引用。而 a[1.6]=10; /*下標(biāo)錯誤,下標(biāo)不能為小數(shù)*/是錯誤的。數(shù)組

我們可以在定義數(shù)組的同時賦值,數(shù)組元素的值由{}包圍,各個值之間以“,”分隔。一維數(shù)組初始化的一般形式為:

類型名數(shù)組名[數(shù)組長度]={初值表}; 初值表中依次存放數(shù)組元素的初值。例如: inta[6]={6,1,4,5,7,2}; 數(shù)組初始化后各元素值為: a[0]=6,a[1]=1,a[2]=4,a[3]=5,a[4]=7,a[5]=2數(shù)組說明:(1)數(shù)組元素的初值依次寫在一對花括號內(nèi),數(shù)據(jù)之間用逗號分隔。當(dāng)初值的個數(shù)與數(shù)組長度相同時,初始化時可以省略數(shù)組長度。例如,上述的數(shù)組定義等價于: inta[]={6,1,4,5,7,2};注意:若定義數(shù)組時,沒有對其初始化,則數(shù)組長度不能省略。(2)靜態(tài)存儲的數(shù)組在定義時如果沒有初始化,系統(tǒng)自動給所有的數(shù)組元素賦0,例如: staticinta[6];相當(dāng)于: staticinta[6]={0,0,0,0,0,0};(3)未初始化的數(shù)組,其元素的值是不確定的。例如: inta[6]; 此時a[0]~a[5]的值未知。數(shù)組(4)可以只給數(shù)組的前幾個元素賦初值。例如: inta[6]={6,1,4};只對數(shù)組a的前3個元素賦初值,其余元素的初值為0。即a[0]=6,a[1]=1,a[2]=4,a[3]=0,a[4]=0,a[5]=0。注意:如果只給部分?jǐn)?shù)組元素賦初值時,由于數(shù)組的長度與提供初值的個數(shù)不相同,數(shù)組長度不能省略。例如,上面定義中,省略數(shù)組長度6后寫成: inta[]={6,1,4}; 系統(tǒng)就認(rèn)為a數(shù)組只有3個元素,而不是6個元素了。(5)如果一個數(shù)組中全部元素的值均為0,可簡寫成: inta[6]={0}; 但不能寫成: inta[6]=0;(6)若初值的個數(shù)大于數(shù)組的長度,例如: inta[6]={6,1,4,5,7,2,3}; 會產(chǎn)生編譯錯誤。數(shù)組

我們借助數(shù)組來輸出一個4×4的矩陣:01 #include<stdio.h>02 intmain()03 {04inta[4]={20,345,700,22};05intb[4]={56720,9999,20098,2};06intc[4]={233,205,1,6666};07intd[4]={34,0,23,23006783};08printf("%-9d%-9d%-9d%-9d\n",a[0],a[1],a[2],a[3]);09printf("%-9d%-9d%-9d%-9d\n",b[0],b[1],b[2],b[3]);10printf("%-9d%-9d%-9d%-9d\n",c[0],c[1],c[2],c[3]);11printf("%-9d%-9d%-9d%-9d\n",d[0],d[1],d[2],d[3]);12return0;13}

實(shí)例4-1-3:數(shù)組輸出矩陣二維數(shù)組

上節(jié)講解的數(shù)組是一行連續(xù)的數(shù)據(jù),只有一個下標(biāo),稱為一維數(shù)組。在實(shí)際問題中有很多數(shù)據(jù)是二維的或多維的,因此C語言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個下標(biāo),以確定它在數(shù)組中的位置。本模塊只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。

二維數(shù)組定義的一般形式是:

dataTypearrayName[length1][length2];

其中,dataType為數(shù)據(jù)類型,arrayName為數(shù)組名,length1為第一維下標(biāo)的長度,length2為第二維下標(biāo)的長度。二維數(shù)組我們可以將二維數(shù)組看做一個Excel表格,有行有列,length1表示行數(shù),length2表示列數(shù),要在二維數(shù)組中定位某個元素,必須同時指明行和列。例如:inta[3][4];

定義了一個3行4列的二維數(shù)組,共有3×4=12個元素,數(shù)組名為a,即:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[1][3]a[2][0],a[2][1],a[2][2],a[2][3]二維數(shù)組

例如:inta[4][3];定義a為4×3的二維數(shù)組,其元素及邏輯結(jié)構(gòu)如下:

第0列

第1列

第2列 第0行 a[0][0] a[0][1] a[0][2] 第1行 a[1][0] a[1][1] a[1][2] 第2行 a[2][0] a[2][1] a[2][2] 第3行 a[3][0] a[3][1] a[3][2]。二維數(shù)組01#include<stdio.h>02intmain(){03inti,j;//二維數(shù)組下標(biāo)04intsum=0;//當(dāng)前科目的總成績05intaverage;//總平均分06intv[3];//各科平均分07inta[5][3];//用來保存每個同學(xué)各科成績的二維數(shù)組08printf("Inputscore:\n");09for(i=0;i<3;i++){10for(j=0;j<5;j++){11scanf("%d",&a[j][i]);//輸入每個同學(xué)的各科成績12sum+=a[j][i];//計算當(dāng)前科目的總成績13}14v[i]=sum/5;//當(dāng)前科目的平均分15sum=0;16}17average=(v[0]+v[1]+v[2])/3;18printf("Math:%d\nCLanguag:%d\nEnglish:%d\n",v[0],v[1],v[2]);19printf("Total:%d\n",average);20return0;21}實(shí)例4-2-1:統(tǒng)計學(xué)生成績二維數(shù)組

和一維數(shù)組一樣,二維數(shù)組被引用的也是它的元素,而不是它的名稱(名稱表示二維數(shù)組第一個元素的首地址)。二維數(shù)組元素的引用形式為:

數(shù)組名[行下標(biāo)][列下標(biāo)]二維數(shù)組的元素與一維數(shù)組的元素一樣可以參加表達(dá)式運(yùn)算。 例如: b[1][2]=a[1][0]*10+5;二維數(shù)組

二維數(shù)組與一維數(shù)組一樣,可以在說明時進(jìn)行初始化。二維數(shù)組的初始化要特別注意各個常量數(shù)據(jù)的排列順序,這個排列順序與數(shù)組各元素在內(nèi)存中的存儲順序完全一致。二維數(shù)組初始化的一般形式為:

類型名數(shù)組名[行數(shù)][列數(shù)]={初值表};例如,對于數(shù)組a[5][3],按行分段賦值應(yīng)該寫作:inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};二維數(shù)組(1)分行給二維數(shù)組賦初值。如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)可以將所有數(shù)據(jù)寫在一個大括號內(nèi),按數(shù)組元素排列的順序賦初值。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可以對二維數(shù)組的部分元素賦初值,如:inta[3][4]={{3},{2},{5}};4)(4)在定義數(shù)組時,行數(shù)可以省略,但列數(shù)不能省略。例如下面的賦初值方式是等價的: intb[2][3]={3,5,7,9,11,13}; intb[][3]={3,5,7,9,11,13}; intb[][3]={{3,5,7},{9,11,13}}; 但下面的定義方式是錯誤的: intb[2][]={3,5,7,9,11,13};二維數(shù)組01#include<stdio.h>02intmain(){03inti,j;//二維數(shù)組下標(biāo)04intsum=0;//當(dāng)前科目的總成績05intaverage;//總平均分06intv[3];//各科平均分07inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};09for(i=0;i<3;i++){10for(j=0;j<5;j++){11sum+=a[j][i];//計算當(dāng)前科目的總成績12}13v[i]=sum/5;//當(dāng)前科目的平均分14sum=0;15}16average=(v[0]+v[1]+v[2])/3;17printf("Math:%d\nCLanguag:%d\nEnglish:%d\n",v[0],v[1],v[2]);18printf("Total:%d\n",average);19return0;20}實(shí)例4-2-2:用二維數(shù)組統(tǒng)計學(xué)生成績字符數(shù)組

用來存放字符的數(shù)組稱為字符數(shù)組,例如:chara[10];//一維字符數(shù)組charb[5][10];//二維字符數(shù)組charc[20]={'c','','p','r','o','g','r','a','m'};//給部分?jǐn)?shù)組元素賦值chard[]={'c','','p','r','o','g','r','a','m'};//對全體元素賦值時可以省去長度

字符數(shù)組實(shí)際上是一系列字符的集合,也就是字符串(String)。在C語言中,沒有專門的字符串變量,沒有string類型,通常就用一個字符數(shù)組來存放一個字符串。字符數(shù)組

字符數(shù)組也分一維字符數(shù)組與二維字符數(shù)組。(1)一維字符數(shù)組的一般形式為:

char數(shù)組名[常量表達(dá)式]例如:charstr[5];(2)二維字符數(shù)組的一般形式為: char數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]例如:charbook[5][20];(3)字符數(shù)組的引用也是引用字符數(shù)組元素,其方法與其他數(shù)組完全相同。字符數(shù)組

字符數(shù)組初始化的一般形式為:

char數(shù)組名[常量表達(dá)式]={初值表};例如:charstr[5]={'C','h','i','n','a'};也可以通過賦值的方法:str[0]='C',str[1]='h',str[2]='i',str[3]='n',str[4]='a';這時,數(shù)組str在內(nèi)存中的存儲映象如下圖所示:Chinastr[0]str[1]str[2]str[3]str[4]str字符數(shù)組

說明:(1)若初值表中初值的個數(shù)大于字符數(shù)組的長度,則編譯錯誤。(2)若初值表中初值的個數(shù)小于字符數(shù)組的長度,多余元素的初值為0。例如:charstr[8]={'C','h','i','n','a'};相應(yīng)內(nèi)存單元的存儲內(nèi)容如圖所示。strChina\0\0\0str[0]str[1]str[2]str[3]str[4]str[4]str[5]str[6]字符數(shù)組(3)若初值表中初值的個數(shù)等于字符數(shù)組的長度,可以在定義時,省略數(shù)組的長度,編譯系統(tǒng)根據(jù)初值的個數(shù)確定數(shù)組的長度。(4)允許用字符串常量對字符數(shù)組進(jìn)行初始化。例如下面的初始化語句是等價的:charstr[5]={'C','h','i','n','a'};charstr[]={'C','h','i','n','a'};charstr[]={"China"};charstr[]="China";但下面的用法都是錯誤的:charstr[5];str="China";或者:charstr[5];str[5]="China";即不能在定義字符數(shù)組以后,對數(shù)組名賦值。字符數(shù)組(5)若字符數(shù)組在定義時未進(jìn)行初始化,則各元素的初值是不確定的,這一點(diǎn)與整型數(shù)組的規(guī)定是相同的。(6)二維字符數(shù)組的初始化方法與一維字符數(shù)組的初始化方法類似。例如:charbook[5][20]={"VisualC","TurboC","BorlandC","C#","C++"};注意:字符'\0'代表整數(shù)0,也就是ASCII碼為0的字符。但'\0'不是字符'0',字符'0'的ASCII碼值為48。字符數(shù)組01#include<stdio.h>02intmain(){03charstr[30];04charc;05inti;06for(c=65,i=0;c<=90;c++,i++)07str[i]=c;08printf("%s\n",str);09return0;10}實(shí)例4-3-1:將26個大寫英文字母存入字符數(shù)組1(無結(jié)束標(biāo)志'\0')。字符數(shù)組01#include<stdio.h>02intmain(){03charstr[30];04charc;05inti;06for(c=65,i=0;c<=90;c++,i++)07str[i]=c;08str[i]=0;//此處為添加的代碼,也可以寫作str[i]='\0'09printf("%s\n",str);10return0;11}實(shí)例4-3-2:將26個大寫英文字母存入字符數(shù)組2(有結(jié)束標(biāo)志'\0')。字符串處理函數(shù)

字符串常量是用雙引號括起來的字符序列,它有一個結(jié)束標(biāo)志'\0'。在C語言中有字符串常量,但沒有字符串變量這個概念,字符串是通過字符數(shù)組來存儲和處理的。

在內(nèi)存中存儲字符串時,除了要存儲有效字符外,還要在這些字符后存儲一個'\0'作為字符串結(jié)束的標(biāo)志。例如,字符串常量“China”的內(nèi)存映象如下圖所示China\0字符串常量"China"的長度雖然是5,但由于要在其后面添加字符串結(jié)束標(biāo)志'\0',所以要占用6個內(nèi)存單元。字符串處理函數(shù)

通常利用字符數(shù)組來存放字符串。C語言允許用戶在定義字符數(shù)組時,將字符串常量作為初值賦給字符數(shù)組。例如: charstr[6]="China"; 等價于 charstr[6]={"China"}; 也等價于下面的初始化: charstr[6]={'C','h','i','n','a','\0'}; 但與下面的初始化是不等價的: charstr[]={'C','h','i','n','a'}; 字符串處理函數(shù)

若在定義時,如果字符數(shù)組的長度大于字符串的有效長度+1,則字符數(shù)組中除了存儲字符串的有效字符以及字符串結(jié)束標(biāo)志'\0'外,多余的字符是無效的。例如: charstr[50]="Welcome";注意字符數(shù)組與字符串的區(qū)別:字符串是用字符數(shù)組存儲的,但字符數(shù)組不一定就是字符串。由于字符串一定要有一個結(jié)束標(biāo)志'\0',所以存儲字符串的數(shù)組長度至少是字符串的有效長度+1。 字符串處理函數(shù)01#include<stdio.h>02#include<string.h>//記得引入該頭文件03intmain(){04charstr[]="/c/";05longlen=strlen(str);06printf("Thelenthofthestringis%ld.\n",len);07return0;08}實(shí)例4-3-3:輸出網(wǎng)址長度。字符串處理函數(shù)

前面介紹的輸入輸出函數(shù)getchar()、putchar()、scanf()和printf(),同樣可以用于輸入輸出字符串,在使用時要與循環(huán)語句配合使用。也可以使用gets()和puts()函數(shù)。1.逐個字符的輸入輸出(1)利用標(biāo)準(zhǔn)輸入輸出函數(shù)scanf()和printf(),配合%c格式描述符。(2)使用getchar()和putchar()函數(shù)輸入輸出字符串。2.字符串的整體輸入(1)利用函數(shù)scanf(),配合%s格式描述符。調(diào)用格式為:

scanf("%s",字符數(shù)組名);輸入一個字符串后,會自動在字符串后面加上'\0'。例如:charstr[10];scanf("%s",str);由于數(shù)組名代表數(shù)組的起始地址,因此在scanf()函數(shù)的字符數(shù)組名str前面不能加&,即不能寫成&str。 字符串處理函數(shù)

(2)如果需要輸入中間含有空格的字符串時,則要用具有多個輸入?yún)?shù)的scanf()函數(shù)配合輸入。例如: charstr1[5],str2[5],str3[5]; scanf("%s%s%s",str1,str2,str3);輸入數(shù)據(jù):Howareyou?↙輸入后,str1、str2和str3數(shù)組的內(nèi)容如下圖所示: str1How\0\0str2are\0\0str3you?\0字符串處理函數(shù)

由上面的例子可以看出,不能使用scanf()函數(shù)輸入一個包含多個單詞和空格的句子給一個字符數(shù)組。例如: charstr[20]; scanf("%s",str); 輸入數(shù)據(jù):Howareyou?↙則str中的字符串是"How",而不是"Howareyou?" 字符串處理函數(shù)

(3)使用函數(shù)gets()輸入完整的字符串。調(diào)用格式為:

gets(字符數(shù)組名);輸入一行字符時以Enter鍵作為結(jié)束符,且自動將回車符'\n'轉(zhuǎn)換為'\0',作為字符串的結(jié)束標(biāo)志。例如:charstr[80];gets(str);輸入數(shù)據(jù):Howareyou?↙則str中的字符串是"Howareyou?"。字符串處理函數(shù)

3.字符串的輸出(1)利用標(biāo)準(zhǔn)輸出函數(shù)printf(),配合%s格式描述符。調(diào)用格式為:

printf("%s",字符數(shù)組名);%s對應(yīng)的輸出項是要輸出的字符串中的第1個字符的地址。依次輸出字符串中的每個字符直到遇到字符串結(jié)束符'\0'。例如: charstr[]="ChangShu"; printf("%s",str); 輸出結(jié)果為:ChangShu字符串處理函數(shù)

(2)使用函數(shù)puts()輸出完整的字符串。 調(diào)用格式為:

puts(字符數(shù)組名); 使用該函數(shù)可以將一個字符串(以'\0'結(jié)束的字符序列)輸出到屏幕,輸出后會自動換行。例如: charstr[]={"ChangShu"}; puts(str); 輸出結(jié)果為: ChangShu字符串處理函數(shù)01#include<stdio.h>02intmain(){03charstr[]="";04printf("%s\n",str);//通過字符串名字輸出05printf("%s\n","");//直接輸出06puts(str);//通過字符串名字輸出07puts("");//直接輸出08return0;09}實(shí)例4-3-4:輸出字符串。

注意,輸出字符串時只需要給出名字,不能帶后邊的[],例如,下面的兩種寫法都是錯誤的:printf("%s\n",str[]);puts(str[10]);字符串處理函數(shù)01#include<stdio.h>02intmain(){03charstr1[30]={0};04charstr2[30]={0};05charstr3[30]={0};06//gets()用法07printf("Inputastring:");08gets(str1);09//scanf()用法10printf("Inputastring:");11scanf("%s",str2);12scanf("%s",str3);13printf("\nstr1:%s\n",str1);14printf("str2:%s\n",str2);15printf("str3:%s\n",str3);16return0;17}實(shí)例4-3-5:字符串輸入。字符串處理函數(shù)字符串連接函數(shù)strcat()一般調(diào)用格式為:

strcat(字符串l,字符串2)功能:連接兩個字符串。注意:(1)參數(shù)字符串2可以是字符數(shù)組名,也可以是字符串常量。但參數(shù)字符串1必須是字符數(shù)組名。(2)字符數(shù)組l必須有足夠的空間,以便能容納字符串2。(3)連接時用字符串2的首字符覆蓋字符串1的結(jié)束標(biāo)志'\0',系統(tǒng)在新字符串的末尾添加一個字符串的結(jié)束標(biāo)志'\0'。字符串處理函數(shù)01#include<stdio.h>02#include<string.h>03intmain(){04charstr1[100]="TheURLis";05charstr2[60];06printf("InputaURL:");07gets(str2);08strcat(str1,str2);09puts(str1);10return0;11}實(shí)例4-4-1:字符串連接。字符串處理函數(shù)

字符串復(fù)制函數(shù)strcpy()一般調(diào)用格式為:

strcpy(字符串l,字符串2)功能:將字符串2復(fù)制到字符串1。注意:(1)參數(shù)字符串2可以是字符數(shù)組名,也可以是字符串常量。但參數(shù)字符串1必須是字符數(shù)組名。(2)字符串l必須有足夠的空間,以便能容納字符串2。(3)復(fù)制時直到遇到字符串2中的'\0'為止(包含'\0')。字符串處理函數(shù)01#include<stdio.h>02#include<string.h>03intmain(){04charstr1[50]="《C語言變怪獸》";05charstr2[50]="/cpp/u/jiaocheng/";06strcpy(str1,str2);07printf("str1:%s\n",str1);08return0;09}實(shí)例4-4-2:字符串復(fù)制。字符串處理函數(shù)

字符串比較函數(shù)strcmp()一般調(diào)用格式為:

strcmp(字符串l,字符串2)功能:比較兩個字符串的大小。函數(shù)的返回值為一個整數(shù)。即:當(dāng)字符串1<字符串2時,返回值<0當(dāng)字符串1=字符串2時,返回值=0當(dāng)字符串1>字符串2時,返回值>0。字符串比較的規(guī)則是:從兩個字符串的首字符開始,依次比較對應(yīng)字符的ASCII碼,直到出現(xiàn)不同的字符或'\0'為止。如果所有的字符都相同,返回0;否則,以第一個不相同字符的比較結(jié)果為準(zhǔn),返回這兩個字符的差。字符串處理函數(shù)字符串01#include<stdio.h>02#include<string.h>03intmain(){04chara[]="aBcDeF";05charb[]="AbCdEf";06charc[]="aacdef";07chard[]="aBcDeF";08printf("aVSb:%d\n",strcmp(a,b));09printf("aVSc:%d\n",strcmp(a,c));10printf("aVSd:%d\n",strcmp(a,d));11return0;12}實(shí)例4-4-3:字符串比較。數(shù)組中的排序

在實(shí)際開發(fā)中,有很多場景需要我們將數(shù)組元素按照從大到小(或者從小到大)的順序排列,這樣在查閱數(shù)據(jù)時會更加直觀。例如:(1)一個保存了班級學(xué)號的數(shù)組,排序后更容易區(qū)分學(xué)生成績的高低;(2)一個保存了商品單價的數(shù)組,排序后更容易看出它們的性價比。對數(shù)組元素進(jìn)行排序的方法有很多種,比如冒泡排序、歸并排序、選擇排序、插入排序、快速排序等,其中最經(jīng)典、最需要掌握的是冒泡排序。

數(shù)組中的排序編程:利用冒泡排序法,對輸入的數(shù)據(jù)按升序排序。

分析:冒泡排序的算法描述如下:若從鍵盤輸入6個數(shù)據(jù),存放到a[0]~a[5]的n個數(shù)組元素中。①第1輪從a[0]到a[n-1]依次把兩個相鄰的元素兩兩比較,即a[0]與a[1]比,a[1]與a[2]比,……,a[4]與a[5]比。②每次相鄰元素比較后,若順序不對,則交換兩個元素的值,否則不交換。從a[0]到a[5]依次兩兩元素比較:a[0] a[1] a[2] a[3] a[4] a[5]3 7 6 5 2 4 3和7比,不交換3 7 6 5 2 4 7和6比,交換3 6 7 5 2 4 7和5比,交換3 6 5 7 2 4 7和2比,交換3 6 5 2 7 4 7和4比,交換

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論