版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.1數(shù)組概述
5.1數(shù)組概述(P131)
編寫程序的目的是處理數(shù)據(jù),前面我們已經(jīng)提到,描述程序要處理的數(shù)據(jù)是程序設(shè)計很重要的一個方面。由程序處理的數(shù)據(jù)可能很簡單,也可能很復(fù)雜,為了描述各種各樣不同的數(shù)據(jù),要求語言系統(tǒng)有足夠的數(shù)據(jù)表示能力。和大多數(shù)高級語言一樣,C語言也采用了下面的數(shù)據(jù)機(jī)制:
①把語言要處理的數(shù)據(jù)對象劃分為一些類型,每個類型是一個數(shù)據(jù)值的集合。
②提供一組基本數(shù)據(jù)類型,確定書寫方式和一組相關(guān)基本操作,以支持程序中對基本數(shù)據(jù)對象的表示和使用。
③提供一組由簡單數(shù)據(jù)類型、數(shù)據(jù)對象構(gòu)造更加復(fù)雜的數(shù)據(jù)類型、數(shù)據(jù)對象的手段,以滿足程序中處理復(fù)雜數(shù)據(jù)的要求。
5.1數(shù)組概述
【實(shí)例1】如何處理大批量的數(shù)據(jù)?(c5_1.c)voidmain(){ inta[10],i; printf("輸入10個數(shù)據(jù):"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n輸出這10個數(shù)據(jù):\n"); for(i=0;i<10;i++) printf("%5d",a[i]);}
5.1數(shù)組概述
數(shù)組是C語言對一組相同性質(zhì)數(shù)據(jù)的順序存儲管理機(jī)制;利用數(shù)組可把多個具有相同類型的數(shù)據(jù)對象組合在一起并作為一個整體來管理,這些數(shù)據(jù)對象稱為數(shù)組的元素。C語言中用a[0]、a[1]……的形式表示數(shù)組元素,方括號內(nèi)的整數(shù)稱為數(shù)組的下標(biāo)。使用下標(biāo)和數(shù)組名可以用同一方式處理一批或所有數(shù)組元素,也可處理個別元素。數(shù)組是最簡單的構(gòu)造類型,但是十分有用,許多問題不用數(shù)組幾乎難以解決。本講介紹一維和二維數(shù)組的定義、數(shù)組元素引用、字符數(shù)組。字符串和數(shù)組應(yīng)用的基本算法。
5.2一維數(shù)組
5.2一維數(shù)組【實(shí)例2】10個整數(shù)排序。(c5_2.c)分析:我們這里使用冒泡方法來完成排序的操作。它的思路很簡單,將相鄰兩個數(shù)組元素進(jìn)行比較,將小的調(diào)整到前面。排序過程:①比較第一個數(shù)與第二個數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上。②對前n-1個數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置。③重復(fù)上述過程,經(jīng)n-1趟冒泡排序后,排序結(jié)束。下頁
5.2一維數(shù)組
算法舉例2377148906682314770668第一趟第二趟14230668第三趟第四趟140623第五趟0614下頁
5.2一維數(shù)組
程序c5_2.c:#include<stdio.h>main(){inta[50],num,i,j,t,change=1;
printf("\nEnterNumbers:");scanf("%d",&num);
printf("\nEnterDate:");for(i=0;i<num;i++)scanf("%d",&a[i]);
for(i=0;i<num-1;i++) for(j=0;j<num-1-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}
printf("\nSortedDate:");for(i=0;i<num;i++)printf("%d",a[i]);}運(yùn)行結(jié)果:EnterNumbers:6
EnterDate:
23771489668
SortedDate:
61423687789
5.2一維數(shù)組
一維數(shù)組的定義什么是一維數(shù)組數(shù)組的維數(shù)是指數(shù)組使用的下標(biāo)個數(shù),如果數(shù)組中每個元素只帶有一個下標(biāo),稱為一維數(shù)組。一維數(shù)組的定義形式
類型說明符
數(shù)組名[常量表達(dá)式];說明類型說明符指出數(shù)組元素的數(shù)據(jù)類型;數(shù)組名是標(biāo)識符;常量表達(dá)式必須用方括號括起來,指的是數(shù)組的元素個數(shù)(長度),它是一個整型值,其中可包含常數(shù)和符號常量。下頁
5.2一維數(shù)組
C語言規(guī)定,數(shù)組變量的大小是固定不變的,因此需要在定義時規(guī)定元素類型和元素個數(shù)。不能用變量定義數(shù)組維數(shù)。一維數(shù)組的存儲意義掌握一維數(shù)組在內(nèi)存中的存儲形式,有利于理解數(shù)組機(jī)制和數(shù)組元素的性質(zhì)。存儲
系統(tǒng)定義數(shù)組時,根據(jù)定義語句中的空間需求分配足夠的連續(xù)存儲空間,數(shù)組元素順序存放在這些存儲單元中。下標(biāo)為0的元素排在最前面,每個元素占據(jù)的存儲空間完全相同。數(shù)組名的本質(zhì)是數(shù)組的內(nèi)存起始地址??梢园褦?shù)組名看作是一個表示存儲地址的常量。下頁
5.2一維數(shù)組
數(shù)組空間開銷計算有兩種計算方法。①存儲容量=元素個數(shù)×sizeof(元素類型名)②存儲容量=sizeof(數(shù)組名)
一維數(shù)組的引用數(shù)組元素表示形式:數(shù)組名[下標(biāo)]數(shù)組必須先定義,后使用。只能逐個引用數(shù)組元素,不能整體引用。下標(biāo)從0(下界)開始順序編號。C語言系統(tǒng)并不自動檢查數(shù)組的下標(biāo)是否越界,對下標(biāo)的控制由編程者完成。下頁
5.2一維數(shù)組
一維數(shù)組初始化概念在定義數(shù)組時,為數(shù)組元素賦初值(在編譯階段使之得到初值)說明存儲在動態(tài)存儲區(qū)中的(局部)數(shù)組不初始化,其元素值為隨機(jī)數(shù)。可以只給部分?jǐn)?shù)組元素賦初值。全部數(shù)組元素賦初值時,可不指定數(shù)組長度。
inta[6]={1,2,3,4,5,6};等價于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;a[5]=6;inta[6]={1,2}等價于:a[0]=1;a[1]=2;a[2]=0;a[3]=0;a[4]=0;a[5]=0;
inta[3]={1,2,3,4}inta[]={1,2,3,4,5,6}下頁
5.3二維數(shù)組
5.3二維數(shù)組(P135)【實(shí)例3】矩陣操作-實(shí)現(xiàn)三宮格的輸入輸出。C5_3.cmain(){inta[3][3],i,j;for(i=0;i<=2;i++)for(j=0;j<=2;j++)scanf(“%d”,&a[i][j]);for(i=0;i<=2;i++)for(j=0;j<=2;j++)printf(“%5d”,a[i][j]);printf(“\n”);}下頁
5.3二維數(shù)組
二維數(shù)組的定義什么是二維數(shù)組如果數(shù)組中每個元素帶有兩個下標(biāo),稱這樣的數(shù)組為二維數(shù)組。二維數(shù)組的定義形式
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];說明定義中除了使用兩個方括號和常量表達(dá)式外,與一維數(shù)組的要求相同。可把二維數(shù)組看成是一個矩陣,常量表達(dá)式1表示矩陣的行數(shù),常量表達(dá)式2表示列數(shù)。下頁
5.3二維數(shù)組
可把二維數(shù)組看作一種特殊的一維數(shù)組,它的元素又是一維數(shù)組。即二維數(shù)組是數(shù)組的數(shù)組。例如inta[3][4];定義了一個二維數(shù)組a,數(shù)組元素是整型數(shù),數(shù)組有12(3×4)個元素,可以看成為3行4列的矩陣。同時,可以把a(bǔ)看作是一個一維數(shù)組,它有3個元素,名字為a[0]、a[1]、a[2],每個元素又是一個包含4個元素的一維數(shù)組,a[0]:a[0][0],a[0][1],a[0][2],a[0][3]
a[1]:
a[1][0],a[1][1],a[1][2],a[1][3]
a[2]:
a[2][0],a[2][1],a[2][2],a[2][3]下頁
5.3二維數(shù)組
二維數(shù)組的存儲存儲二維數(shù)組在內(nèi)存中占據(jù)一系列連續(xù)的存儲單元,數(shù)組元素按行順序存放,先放行下標(biāo)是0的元素,再放行下標(biāo)是1的元素,依此類推。下頁數(shù)組a[2][4]的存儲示意圖a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]←行下標(biāo)為0的元素→←行下標(biāo)為1的元素→原因:內(nèi)存是一維的。
5.3二維數(shù)組
二維數(shù)組的引用數(shù)組元素表示形式:數(shù)組名[下標(biāo)1][下標(biāo)2]說明每個下標(biāo)的值不能超越該下標(biāo)的上界和下界。不論是一維數(shù)組還是二維數(shù)組,都要注意數(shù)組引用和數(shù)組定義表示形式的區(qū)別。如定義中出現(xiàn)的a[3][4]表示數(shù)組的維數(shù)和各維數(shù)的大小,引用時a[3][4]的3和4是下標(biāo),a[3][4]代表一個數(shù)組元素。
下頁
5.3二維數(shù)組
二維數(shù)組的初始化作用二維數(shù)組定義時也可以用花括號對全部或前面一部分?jǐn)?shù)組元素進(jìn)行初始化。通過初始化可以定義二維數(shù)組。初始化形式分行初始化按元素排列順序初始化第一維長度省略初始化初始化的原則分清每行元素的個數(shù)和行數(shù),沒有賦值的元素初值為0。下頁全部初始化:inta[2][3]={{1,2,3},{4,5,6}};部分初始化:inta[3][4]={{1,2,3},{4},{5,6}};006500040321部分初始化:inta[3][4]={{1,2},{3}};000000030021全部初始化:
inta[2][3]={1,2,3,4,5,6};654321部分初始化:
inta[2][3]={1,2};000021用于初始化的數(shù)據(jù)多于數(shù)組的定義,編譯出錯:
inta[2][3]={1,2,3,4,5,6,7,8};×分行第一維長度省略初始化:inta[][4]={{1,2,3},{4,5},{6}};000600540321按元素排列順序第一維長度省略初始化:inta[][3]=
{1,2,3,4,5
};054321
5.4字符數(shù)組和字符串
5.4字符數(shù)組和字符串【實(shí)例4】輸出一串字符(c5_4.c)voidmain(){ charc[6]={'H','e','l','l','o','!'}; inti; for(i=0;i<5;i++) printf("%c",c[i]); printf("\n");}下頁
5.4字符數(shù)組和字符串
字符數(shù)組定義元素數(shù)據(jù)類型是字符類型的一維數(shù)組。字符數(shù)組的初始化方法都與一維數(shù)組相同。字符數(shù)組的引用字符數(shù)組的逐個字符引用,與引用數(shù)值數(shù)組元素類似。
下頁逐個字符賦值
charc[5]=
{'H','e','l','l','o'
};c[4]c[3]c[2]c[1]c[0]olleH部分字符賦值
chars[5]=
{'1','2'};s[4]s[3]s[2]s[1]s[0]\0\0\021省略數(shù)組元素個數(shù)
chars[]=
{'1','2','3','4','5'};s[4]s[3]s[2]s[1]s[0]54321
5.4字符數(shù)組和字符串
字符串定義用雙引號括起來的任意字符序列。可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。存儲無字符串變量,用字符數(shù)組連續(xù)、順序存放每一個字符,最后加字符'\0'做結(jié)束標(biāo)志。結(jié)束標(biāo)志'\0'代表ASCII碼為0的字符,表示一個“空操作”,只起一個標(biāo)志作用。因此可以對字符數(shù)組采用另一種方式進(jìn)行操作了──字符數(shù)組的整體操作。下頁5個字符占用的空間是5個字節(jié)
chars[5]=
{'1','2','3','4','5'};s[4]s[3]s[2]s[1]s[0]54321"12345"共5個字符,在內(nèi)存占6個字節(jié),字符串長度5\054321例:①
charstr[]={"China"};
charstr[]="China";定義數(shù)組str的長度是6個字符
②
charstr[10]={"China"};
str的前6個字符初始化,其他賦0
③charstr[5]="morning";×
用于初始化的數(shù)據(jù)多于數(shù)組的定義,編譯出錯\0anihC\0\0\0\0\0anihC
5.4字符數(shù)組和字符串
實(shí)例5-輸出一個菱形圖案(c5_5.c)voidmain(){ chardiamond[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}}; inti,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%c",diamond[i][j]); printf("\n"); }}下頁
5.4字符數(shù)組和字符串
字符串?dāng)?shù)組定義字符串?dāng)?shù)組就是數(shù)組中的每一個元素都是存放字符串的數(shù)組。存儲利用C語言數(shù)組構(gòu)造的特點(diǎn),二維數(shù)組可以看作是一個一維數(shù)組,這個一維數(shù)組的元素又是一個一維數(shù)組。因此,可以將一個二維字符數(shù)組看作一個字符串?dāng)?shù)組。引用可以通過二維數(shù)組元素的形式引用其中的字符。如:str[1][1]的值是b。字符串?dāng)?shù)組的初始化方法
下頁例:①
charstr[3][5]={"a","ab","abc"};
charstr[][5]={"a","ab","abc"};\0cbastr[2]\0bastr[1]\0astr[0]
5.4字符數(shù)組和字符串
字符串函數(shù)概述字符與字符串是C程序處理的重要對象,C標(biāo)準(zhǔn)函數(shù)庫中提供了許多相關(guān)的函數(shù),它們的原型說明在下面頭文件中:
ctype.h
說明了一組字符類型判斷函數(shù)
string.h說明了許多字符串處理函數(shù)
stdio.h說明了用于字符串I/O函數(shù)常用的字符串函數(shù)
1.字符串輸入輸出函數(shù)(頭文件:stdio.h)①scanf②printf③gets④puts2.字符串處理函數(shù)(頭文件:string.h)①strcpy②strcat③strlen④strcmp下頁
5.4字符數(shù)組和字符串
1.字符串輸入輸出①scanf的s格式串可以實(shí)現(xiàn)字符串的整體輸入
例如:charstr[20];scanf("%s",str);/*str是地址*/說明:輸入字符依次放入以str為起點(diǎn)的存儲單元,并自動在末尾加"\0"。遇到空格、回車和制表符都作為輸入數(shù)據(jù)分隔符而不能被輸入。輸入字符串的長度不能超過字符數(shù)組所能容納的字符個數(shù)。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出②printf的s格式串可以實(shí)現(xiàn)字符串的輸出
例如:charstr[20];printf("%s",str);/*str是地址*/說明:調(diào)用printf時,將從str表示的地址開始輸出存儲單元中的字符,直到遇到第一個"\0"為止。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出③gets用于從終端輸入字符串形式為:gets(str);說明:gets用來從終端鍵盤讀入字符串(包括空格),直到讀入一個換行符為止。換行符不作為字符串的內(nèi)容,系統(tǒng)自動加"\0"。str是存放字符串的起始地址。例如:gets(str);執(zhí)行時鍵入以goodmorning!
,將讀入該串并
用"\0"替代最后的換行符()。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出④puts用于從終端輸出字符串形式為:
puts(str);說明:str是輸出字符串的起始地址,從這一地址開始,依次輸出存儲單元中的字符,直到遇到第一個"\0"為止,并自動輸出一個換行符。返回
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)①字符串復(fù)制函數(shù)strcpy
調(diào)用形式:strcpy(s1,s2);說明:s2可以是字符數(shù)組名或字符串常量,s1是字符數(shù)組名函數(shù)把字符串s1復(fù)制到s2所指向的存儲空間中,并返回s1的值,s1指向的存儲空間必須足夠容納s2。復(fù)制時連同結(jié)束符一起復(fù)制。例如:
charstr[10];strcpy(str,"China");將常量字符串"China"復(fù)制到字符數(shù)組str中china\0返回注意:不能用賦值語句將一個字符串常量或者字符數(shù)組直接給一個字符數(shù)組。例如:str1=“china”; //錯誤str1=str2; //錯誤
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)②字符串連接函數(shù)strcat
調(diào)用形式:strcat(s1,s2);說明:函數(shù)把字符串s2接到字符串s1的后面,自動覆蓋s1后面的結(jié)束符,返回s1。數(shù)組s1的空間必須足夠容納連接后字符串。例如:
chars1[20],s2[10];strcpy(s1,"like
");strcpy(s2,"school");stcat(s1,s2)s1:likeschool\0返回
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)③字符串長度函數(shù)strlen
調(diào)用形式:strlen(s);說明:函數(shù)用于計算并返回字符串s的長度,不包括末尾的結(jié)束符"\0"。例如:
執(zhí)行strcpy(str,"China");strlen(str)的值是5。返回
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)④字符串比較函數(shù)strcmp
調(diào)用形式:strcmp(s1,s2);說明:函數(shù)用于比較字符串s1和s2:如果s1=s2,函數(shù)值返回0;s1>s2,函數(shù)值返回正數(shù);s1<s2,函數(shù)值返回負(fù)數(shù)。C語言中,字符串比較以字符比較為基礎(chǔ),字符比較等價于比較字符的ASCll編碼。有三種結(jié)果:等于、小于、大于。如比較字符c1和c2,如果c1==c2為真,結(jié)果為0;如果c1>c2為真,結(jié)果為正數(shù);c1<c2為真,結(jié)果為負(fù)數(shù)。返回
字符串比較規(guī)則:
自左向右逐個字符比較,直到出現(xiàn)不同的字符或遇到"\0"為止。如全部字符相同,則兩字符串相等;若出現(xiàn)不同字符,則以第一個不同字符的比較結(jié)果為準(zhǔn)。比較的結(jié)果由函數(shù)帶回。因此,如果兩個字符串相等,則它們不僅長度相同,而且對應(yīng)位置的字符也相等。
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例【實(shí)例5】用數(shù)組處理fibonacci數(shù)列問題。c5_5.c
voidmain(){inti;intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%12d",f[i]);}printf("\n");}下頁
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例6】求一組成績的平均分?jǐn)?shù),設(shè)給定的數(shù)據(jù)是
87,90,85,98,65,80,74,67。c5_6.c分析:考慮用數(shù)組表示這組成績,雖然給出的數(shù)據(jù)全是整數(shù)值,但考慮作為成績及可能需要進(jìn)行的運(yùn)算,使用實(shí)型數(shù)更合適。本例使用數(shù)組定義時初始化的方式來表示要計算的數(shù)據(jù),其次,為增加程序的通用性,考慮讓程序自動判斷數(shù)據(jù)值的個數(shù),用于循環(huán)結(jié)束的控制條件。程序:下頁#include<stdio.h>main(){inti,num;floatscore[]={87,90,85,98,65,80,74,67};floatsum=0.0;num=sizeof(score)/sizeof(float);for(i=0;i<num;i++)sum+=score[i];printf("Average:%.1f\n",sum/num);}運(yùn)行結(jié)果:
Average:
80.8
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例7】將一個二維數(shù)組行和列的元素互換,存放到一個二維數(shù)組中。
c5_7.c分析:遍歷二維數(shù)組的每一個元素經(jīng)常使用雙重循環(huán),本例演示了二維數(shù)組的基本輸入輸出控制方法。程序:#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("Arraya:\n");for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("Arrayb:\n");for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}}運(yùn)行結(jié)果:Arraya:123456Arrayb:
142536
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例8】輸出一個3X4的矩陣中最大元素的值及其所在行號和列號。
c5_8.cvoidmain(){inti,j,row=0,col=0,max;inta[3][4]={21,2,3,34,5,46,7,8,92,10,11,12};max=a[0][0];for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; col=j; }printf("max=%d,row=%d,col=%d\n",max,row,col);}
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例9】編寫函數(shù)strcopy(s1,s2),完成字符串的復(fù)制操作。c5_9.c#include<stdio.h>voidstrcopy(chars1[],chars2[]);main(){charstr1[20],str2[6]="China";strcopy(s1,s2);puts(s1);}
voidstrcopy(chars1[],chars2[]){inti=0;while(s1[i]
!='\0')
{s1[i]=s2[i];i++;}s1[i]='\0';}
程序可進(jìn)一步修改為:
voidstrcopy(chars1[],chars2[]){inti=0;while(s1[i]=s2[i])i++;}
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例10】將字符串轉(zhuǎn)換成等值的機(jī)內(nèi)數(shù)。將無符號八進(jìn)制數(shù)串轉(zhuǎn)換成十進(jìn)制機(jī)內(nèi)數(shù)。如:0556→366。分析:根據(jù)變換
556=5×8×8+5×8+6=(5×8+5)×8+6
得出計算中有一個累加過程,轉(zhuǎn)換方法是:從高位起,累加值=累加值×8+本位值。用一維數(shù)組表示八進(jìn)制數(shù)串。程序如下:c5_10.c
下頁#include<stdio.h>main(){inti,n;
chars[8];gets(s);i=0;n=0;while(s[i]!='\0'){n=n*8+s[i]-'0';
i++;}printf("%d\n",n);}
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例11】將十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)串。方法:反復(fù)除8求余數(shù),將余數(shù)從右向左排列程序如下:下頁#include<stdio.h>main(){inti=0,d,m,n;
chars[8];
scanf("%d",&n);do{m=n/8;d=n%8;s[i]='0'+d;n=m;i++;}while(n!=0);
for(i--;i>=0;i--)putchar(s[i]);
}12310…
3
s[0]1210…
2
s[1]110…
1
s[2]0nd
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例12】用選擇法排序。c5_12.c方法:設(shè)有n個元素,a[0],a[1],…,a[n-1]第一次,
從a[0]~a[n-1]中選出最小的元素a[min],將a[0]與a[min]交換,在a[0]中得到最小元素;第二次,
從a[1]~a[n-1]中選出最小的元素a[min],將a[1]與a[min]交換,在a[1]中得到次小元素;…依次類推。執(zhí)行n-1次選擇和交換后,將會得到有序數(shù)組。程序如下:下頁#include<stdio.h>main(){inti,j,n,temp,min,a[50];printf("EnterNum:");scanf("%d",&n);printf("Enterdata:\n");for(i=0;i<=n-1;i++)scanf("%d",&a[i]);printf("Thedateis:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);for(i=0;i<=n-1;i++){min=i;for(j=i+1;j<=n-1;j++)if(a[min]>a[j])min=j;if(i!=min){temp=a[i];a[i]=a[min];a[min]=temp;}}printf("\nAftersorted,thedatais:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);getch();}
5.5數(shù)組應(yīng)用程序設(shè)計實(shí)例
【實(shí)例13】編寫一個函數(shù),將一個整數(shù)插入上題已排序好的表中。分析:插入操作需知道:有序表的名字
表中元素的個數(shù)
插入數(shù)據(jù)插入操作后:表中的元素個數(shù)增加1。方法:插入方法分三步第一步找插入位置;第二步后移元素移出插入空位;第三步插入元素。程序如下:下頁插入算法實(shí)現(xiàn)如下:
inti,in;
for(i=n;i>0
;i--){i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房交易法律合同模板2024一
- 2025年度個人貸款合同風(fēng)險評估與管理規(guī)范4篇
- 二零二五年度國際貨物保險合同條款及理賠細(xì)則3篇
- 2025年度臨時臨時臨時停車場租賃合同2篇
- 2025年度個人股權(quán)分割及轉(zhuǎn)讓合同3篇
- 個人與個人2024年度汽車租賃合同3篇
- 二零二五年度寧波勞動合同模板:包含員工勞動合同變更條款
- 二零二五年度外匯借款合同風(fēng)險防范與應(yīng)對策略
- 2025年度個人一手房買賣合同社區(qū)配套服務(wù)范本2篇
- 二零二五年度培訓(xùn)協(xié)議與勞動合同整合方案協(xié)議
- 2024年資格考試-對外漢語教師資格證筆試參考題庫含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以兩位數(shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 五年級數(shù)學(xué)應(yīng)用題100道
- 西方經(jīng)濟(jì)學(xué)(第二版)完整整套課件(馬工程)
- 高三開學(xué)收心班會課件
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評定方法
- 科技計劃項(xiàng)目申報培訓(xùn)
評論
0/150
提交評論