![計(jì)算機(jī)軟件及應(yīng)用數(shù)組_第1頁(yè)](http://file4.renrendoc.com/view11/M02/29/00/wKhkGWVwW3aAReGUAANyhH16o6Y127.jpg)
![計(jì)算機(jī)軟件及應(yīng)用數(shù)組_第2頁(yè)](http://file4.renrendoc.com/view11/M02/29/00/wKhkGWVwW3aAReGUAANyhH16o6Y1272.jpg)
![計(jì)算機(jī)軟件及應(yīng)用數(shù)組_第3頁(yè)](http://file4.renrendoc.com/view11/M02/29/00/wKhkGWVwW3aAReGUAANyhH16o6Y1273.jpg)
![計(jì)算機(jī)軟件及應(yīng)用數(shù)組_第4頁(yè)](http://file4.renrendoc.com/view11/M02/29/00/wKhkGWVwW3aAReGUAANyhH16o6Y1274.jpg)
![計(jì)算機(jī)軟件及應(yīng)用數(shù)組_第5頁(yè)](http://file4.renrendoc.com/view11/M02/29/00/wKhkGWVwW3aAReGUAANyhH16o6Y1275.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
5.1數(shù)組概述
5.1數(shù)組概述(P131)
編寫(xiě)程序的目的是處理數(shù)據(jù),前面我們已經(jīng)提到,描述程序要處理的數(shù)據(jù)是程序設(shè)計(jì)很重要的一個(gè)方面。由程序處理的數(shù)據(jù)可能很簡(jiǎn)單,也可能很復(fù)雜,為了描述各種各樣不同的數(shù)據(jù),要求語(yǔ)言系統(tǒng)有足夠的數(shù)據(jù)表示能力。和大多數(shù)高級(jí)語(yǔ)言一樣,C語(yǔ)言也采用了下面的數(shù)據(jù)機(jī)制:
①把語(yǔ)言要處理的數(shù)據(jù)對(duì)象劃分為一些類(lèi)型,每個(gè)類(lèi)型是一個(gè)數(shù)據(jù)值的集合。
②提供一組基本數(shù)據(jù)類(lèi)型,確定書(shū)寫(xiě)方式和一組相關(guān)基本操作,以支持程序中對(duì)基本數(shù)據(jù)對(duì)象的表示和使用。
③提供一組由簡(jiǎn)單數(shù)據(jù)類(lèi)型、數(shù)據(jù)對(duì)象構(gòu)造更加復(fù)雜的數(shù)據(jù)類(lèi)型、數(shù)據(jù)對(duì)象的手段,以滿(mǎn)足程序中處理復(fù)雜數(shù)據(jù)的要求。
5.1數(shù)組概述
【實(shí)例1】如何處理大批量的數(shù)據(jù)?(c5_1.c)voidmain(){ inta[10],i; printf("輸入10個(gè)數(shù)據(jù):"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n輸出這10個(gè)數(shù)據(jù):\n"); for(i=0;i<10;i++) printf("%5d",a[i]);}
5.1數(shù)組概述
數(shù)組是C語(yǔ)言對(duì)一組相同性質(zhì)數(shù)據(jù)的順序存儲(chǔ)管理機(jī)制;利用數(shù)組可把多個(gè)具有相同類(lèi)型的數(shù)據(jù)對(duì)象組合在一起并作為一個(gè)整體來(lái)管理,這些數(shù)據(jù)對(duì)象稱(chēng)為數(shù)組的元素。C語(yǔ)言中用a[0]、a[1]……的形式表示數(shù)組元素,方括號(hào)內(nèi)的整數(shù)稱(chēng)為數(shù)組的下標(biāo)。使用下標(biāo)和數(shù)組名可以用同一方式處理一批或所有數(shù)組元素,也可處理個(gè)別元素。數(shù)組是最簡(jiǎn)單的構(gòu)造類(lèi)型,但是十分有用,許多問(wèn)題不用數(shù)組幾乎難以解決。本講介紹一維和二維數(shù)組的定義、數(shù)組元素引用、字符數(shù)組。字符串和數(shù)組應(yīng)用的基本算法。
5.2一維數(shù)組
5.2一維數(shù)組【實(shí)例2】10個(gè)整數(shù)排序。(c5_2.c)分析:我們這里使用冒泡方法來(lái)完成排序的操作。它的思路很簡(jiǎn)單,將相鄰兩個(gè)數(shù)組元素進(jìn)行比較,將小的調(diào)整到前面。排序過(guò)程:①比較第一個(gè)數(shù)與第二個(gè)數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個(gè)數(shù)與第三個(gè)數(shù);依次類(lèi)推,直至第n-1個(gè)數(shù)和第n個(gè)數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個(gè)元素位置上。②對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個(gè)元素位置。③重復(fù)上述過(guò)程,經(jīng)n-1趟冒泡排序后,排序結(jié)束。下頁(yè)
5.2一維數(shù)組
算法舉例2377148906682314770668第一趟第二趟14230668第三趟第四趟140623第五趟0614下頁(yè)
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)個(gè)數(shù),如果數(shù)組中每個(gè)元素只帶有一個(gè)下標(biāo),稱(chēng)為一維數(shù)組。一維數(shù)組的定義形式
類(lèi)型說(shuō)明符
數(shù)組名[常量表達(dá)式];說(shuō)明類(lèi)型說(shuō)明符指出數(shù)組元素的數(shù)據(jù)類(lèi)型;數(shù)組名是標(biāo)識(shí)符;常量表達(dá)式必須用方括號(hào)括起來(lái),指的是數(shù)組的元素個(gè)數(shù)(長(zhǎng)度),它是一個(gè)整型值,其中可包含常數(shù)和符號(hào)常量。下頁(yè)
5.2一維數(shù)組
C語(yǔ)言規(guī)定,數(shù)組變量的大小是固定不變的,因此需要在定義時(shí)規(guī)定元素類(lèi)型和元素個(gè)數(shù)。不能用變量定義數(shù)組維數(shù)。一維數(shù)組的存儲(chǔ)意義掌握一維數(shù)組在內(nèi)存中的存儲(chǔ)形式,有利于理解數(shù)組機(jī)制和數(shù)組元素的性質(zhì)。存儲(chǔ)
系統(tǒng)定義數(shù)組時(shí),根據(jù)定義語(yǔ)句中的空間需求分配足夠的連續(xù)存儲(chǔ)空間,數(shù)組元素順序存放在這些存儲(chǔ)單元中。下標(biāo)為0的元素排在最前面,每個(gè)元素占據(jù)的存儲(chǔ)空間完全相同。數(shù)組名的本質(zhì)是數(shù)組的內(nèi)存起始地址??梢园褦?shù)組名看作是一個(gè)表示存儲(chǔ)地址的常量。下頁(yè)
5.2一維數(shù)組
數(shù)組空間開(kāi)銷(xiāo)計(jì)算有兩種計(jì)算方法。①存儲(chǔ)容量=元素個(gè)數(shù)×sizeof(元素類(lèi)型名)②存儲(chǔ)容量=sizeof(數(shù)組名)
一維數(shù)組的引用數(shù)組元素表示形式:數(shù)組名[下標(biāo)]數(shù)組必須先定義,后使用。只能逐個(gè)引用數(shù)組元素,不能整體引用。下標(biāo)從0(下界)開(kāi)始順序編號(hào)。C語(yǔ)言系統(tǒng)并不自動(dòng)檢查數(shù)組的下標(biāo)是否越界,對(duì)下標(biāo)的控制由編程者完成。下頁(yè)
5.2一維數(shù)組
一維數(shù)組初始化概念在定義數(shù)組時(shí),為數(shù)組元素賦初值(在編譯階段使之得到初值)說(shuō)明存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中的(局部)數(shù)組不初始化,其元素值為隨機(jī)數(shù)??梢灾唤o部分?jǐn)?shù)組元素賦初值。全部數(shù)組元素賦初值時(shí),可不指定數(shù)組長(zhǎng)度。
inta[6]={1,2,3,4,5,6};等價(jià)于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;a[5]=6;inta[6]={1,2}等價(jià)于: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}下頁(yè)
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”);}下頁(yè)
5.3二維數(shù)組
二維數(shù)組的定義什么是二維數(shù)組如果數(shù)組中每個(gè)元素帶有兩個(gè)下標(biāo),稱(chēng)這樣的數(shù)組為二維數(shù)組。二維數(shù)組的定義形式
類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];說(shuō)明定義中除了使用兩個(gè)方括號(hào)和常量表達(dá)式外,與一維數(shù)組的要求相同??砂讯S數(shù)組看成是一個(gè)矩陣,常量表達(dá)式1表示矩陣的行數(shù),常量表達(dá)式2表示列數(shù)。下頁(yè)
5.3二維數(shù)組
可把二維數(shù)組看作一種特殊的一維數(shù)組,它的元素又是一維數(shù)組。即二維數(shù)組是數(shù)組的數(shù)組。例如inta[3][4];定義了一個(gè)二維數(shù)組a,數(shù)組元素是整型數(shù),數(shù)組有12(3×4)個(gè)元素,可以看成為3行4列的矩陣。同時(shí),可以把a(bǔ)看作是一個(gè)一維數(shù)組,它有3個(gè)元素,名字為a[0]、a[1]、a[2],每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(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]下頁(yè)
5.3二維數(shù)組
二維數(shù)組的存儲(chǔ)存儲(chǔ)二維數(shù)組在內(nèi)存中占據(jù)一系列連續(xù)的存儲(chǔ)單元,數(shù)組元素按行順序存放,先放行下標(biāo)是0的元素,再放行下標(biāo)是1的元素,依此類(lèi)推。下頁(yè)數(shù)組a[2][4]的存儲(chǔ)示意圖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]說(shuō)明每個(gè)下標(biāo)的值不能超越該下標(biāo)的上界和下界。不論是一維數(shù)組還是二維數(shù)組,都要注意數(shù)組引用和數(shù)組定義表示形式的區(qū)別。如定義中出現(xiàn)的a[3][4]表示數(shù)組的維數(shù)和各維數(shù)的大小,引用時(shí)a[3][4]的3和4是下標(biāo),a[3][4]代表一個(gè)數(shù)組元素。
下頁(yè)
5.3二維數(shù)組
二維數(shù)組的初始化作用二維數(shù)組定義時(shí)也可以用花括號(hào)對(duì)全部或前面一部分?jǐn)?shù)組元素進(jìn)行初始化。通過(guò)初始化可以定義二維數(shù)組。初始化形式分行初始化按元素排列順序初始化第一維長(zhǎng)度省略初始化初始化的原則分清每行元素的個(gè)數(shù)和行數(shù),沒(méi)有賦值的元素初值為0。下頁(yè)全部初始化: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ù)組的定義,編譯出錯(cuò):
inta[2][3]={1,2,3,4,5,6,7,8};×分行第一維長(zhǎng)度省略初始化:inta[][4]={{1,2,3},{4,5},{6}};000600540321按元素排列順序第一維長(zhǎng)度省略初始化: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");}下頁(yè)
5.4字符數(shù)組和字符串
字符數(shù)組定義元素?cái)?shù)據(jù)類(lèi)型是字符類(lèi)型的一維數(shù)組。字符數(shù)組的初始化方法都與一維數(shù)組相同。字符數(shù)組的引用字符數(shù)組的逐個(gè)字符引用,與引用數(shù)值數(shù)組元素類(lèi)似。
下頁(yè)逐個(gè)字符賦值
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ù)組元素個(gè)數(shù)
chars[]=
{'1','2','3','4','5'};s[4]s[3]s[2]s[1]s[0]54321
5.4字符數(shù)組和字符串
字符串定義用雙引號(hào)括起來(lái)的任意字符序列??梢园ㄗ帜?、數(shù)字、專(zhuān)用字符、轉(zhuǎn)義字符等。存儲(chǔ)無(wú)字符串變量,用字符數(shù)組連續(xù)、順序存放每一個(gè)字符,最后加字符'\0'做結(jié)束標(biāo)志。結(jié)束標(biāo)志'\0'代表ASCII碼為0的字符,表示一個(gè)“空操作”,只起一個(gè)標(biāo)志作用。因此可以對(duì)字符數(shù)組采用另一種方式進(jìn)行操作了──字符數(shù)組的整體操作。下頁(yè)5個(gè)字符占用的空間是5個(gè)字節(jié)
chars[5]=
{'1','2','3','4','5'};s[4]s[3]s[2]s[1]s[0]54321"12345"共5個(gè)字符,在內(nèi)存占6個(gè)字節(jié),字符串長(zhǎng)度5\054321例:①
charstr[]={"China"};
charstr[]="China";定義數(shù)組str的長(zhǎng)度是6個(gè)字符
②
charstr[10]={"China"};
str的前6個(gè)字符初始化,其他賦0
③charstr[5]="morning";×
用于初始化的數(shù)據(jù)多于數(shù)組的定義,編譯出錯(cuò)\0anihC\0\0\0\0\0anihC
5.4字符數(shù)組和字符串
實(shí)例5-輸出一個(gè)菱形圖案(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"); }}下頁(yè)
5.4字符數(shù)組和字符串
字符串?dāng)?shù)組定義字符串?dāng)?shù)組就是數(shù)組中的每一個(gè)元素都是存放字符串的數(shù)組。存儲(chǔ)利用C語(yǔ)言數(shù)組構(gòu)造的特點(diǎn),二維數(shù)組可以看作是一個(gè)一維數(shù)組,這個(gè)一維數(shù)組的元素又是一個(gè)一維數(shù)組。因此,可以將一個(gè)二維字符數(shù)組看作一個(gè)字符串?dāng)?shù)組。引用可以通過(guò)二維數(shù)組元素的形式引用其中的字符。如:str[1][1]的值是b。字符串?dāng)?shù)組的初始化方法
下頁(yè)例:①
charstr[3][5]={"a","ab","abc"};
charstr[][5]={"a","ab","abc"};\0cbastr[2]\0bastr[1]\0astr[0]
5.4字符數(shù)組和字符串
字符串函數(shù)概述字符與字符串是C程序處理的重要對(duì)象,C標(biāo)準(zhǔn)函數(shù)庫(kù)中提供了許多相關(guān)的函數(shù),它們的原型說(shuō)明在下面頭文件中:
ctype.h
說(shuō)明了一組字符類(lèi)型判斷函數(shù)
string.h說(shuō)明了許多字符串處理函數(shù)
stdio.h說(shuō)明了用于字符串I/O函數(shù)常用的字符串函數(shù)
1.字符串輸入輸出函數(shù)(頭文件:stdio.h)①scanf②printf③gets④puts2.字符串處理函數(shù)(頭文件:string.h)①strcpy②strcat③strlen④strcmp下頁(yè)
5.4字符數(shù)組和字符串
1.字符串輸入輸出①scanf的s格式串可以實(shí)現(xiàn)字符串的整體輸入
例如:charstr[20];scanf("%s",str);/*str是地址*/說(shuō)明:輸入字符依次放入以str為起點(diǎn)的存儲(chǔ)單元,并自動(dòng)在末尾加"\0"。遇到空格、回車(chē)和制表符都作為輸入數(shù)據(jù)分隔符而不能被輸入。輸入字符串的長(zhǎng)度不能超過(guò)字符數(shù)組所能容納的字符個(gè)數(shù)。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出②printf的s格式串可以實(shí)現(xiàn)字符串的輸出
例如:charstr[20];printf("%s",str);/*str是地址*/說(shuō)明:調(diào)用printf時(shí),將從str表示的地址開(kāi)始輸出存儲(chǔ)單元中的字符,直到遇到第一個(gè)"\0"為止。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出③gets用于從終端輸入字符串形式為:gets(str);說(shuō)明:gets用來(lái)從終端鍵盤(pán)讀入字符串(包括空格),直到讀入一個(gè)換行符為止。換行符不作為字符串的內(nèi)容,系統(tǒng)自動(dòng)加"\0"。str是存放字符串的起始地址。例如:gets(str);執(zhí)行時(shí)鍵入以goodmorning!
,將讀入該串并
用"\0"替代最后的換行符()。返回
5.4字符數(shù)組和字符串
1.字符串輸入輸出④puts用于從終端輸出字符串形式為:
puts(str);說(shuō)明:str是輸出字符串的起始地址,從這一地址開(kāi)始,依次輸出存儲(chǔ)單元中的字符,直到遇到第一個(gè)"\0"為止,并自動(dòng)輸出一個(gè)換行符。返回
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)①字符串復(fù)制函數(shù)strcpy
調(diào)用形式:strcpy(s1,s2);說(shuō)明:s2可以是字符數(shù)組名或字符串常量,s1是字符數(shù)組名函數(shù)把字符串s1復(fù)制到s2所指向的存儲(chǔ)空間中,并返回s1的值,s1指向的存儲(chǔ)空間必須足夠容納s2。復(fù)制時(shí)連同結(jié)束符一起復(fù)制。例如:
charstr[10];strcpy(str,"China");將常量字符串"China"復(fù)制到字符數(shù)組str中china\0返回注意:不能用賦值語(yǔ)句將一個(gè)字符串常量或者字符數(shù)組直接給一個(gè)字符數(shù)組。例如:str1=“china”; //錯(cuò)誤str1=str2; //錯(cuò)誤
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)②字符串連接函數(shù)strcat
調(diào)用形式:strcat(s1,s2);說(shuō)明:函數(shù)把字符串s2接到字符串s1的后面,自動(dòng)覆蓋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ù)③字符串長(zhǎng)度函數(shù)strlen
調(diào)用形式:strlen(s);說(shuō)明:函數(shù)用于計(jì)算并返回字符串s的長(zhǎng)度,不包括末尾的結(jié)束符"\0"。例如:
執(zhí)行strcpy(str,"China");strlen(str)的值是5。返回
5.4字符數(shù)組和字符串
2.字符串處理函數(shù)④字符串比較函數(shù)strcmp
調(diào)用形式:strcmp(s1,s2);說(shuō)明:函數(shù)用于比較字符串s1和s2:如果s1=s2,函數(shù)值返回0;s1>s2,函數(shù)值返回正數(shù);s1<s2,函數(shù)值返回負(fù)數(shù)。C語(yǔ)言中,字符串比較以字符比較為基礎(chǔ),字符比較等價(jià)于比較字符的ASCll編碼。有三種結(jié)果:等于、小于、大于。如比較字符c1和c2,如果c1==c2為真,結(jié)果為0;如果c1>c2為真,結(jié)果為正數(shù);c1<c2為真,結(jié)果為負(fù)數(shù)。返回
字符串比較規(guī)則:
自左向右逐個(gè)字符比較,直到出現(xiàn)不同的字符或遇到"\0"為止。如全部字符相同,則兩字符串相等;若出現(xiàn)不同字符,則以第一個(gè)不同字符的比較結(jié)果為準(zhǔn)。比較的結(jié)果由函數(shù)帶回。因此,如果兩個(gè)字符串相等,則它們不僅長(zhǎng)度相同,而且對(duì)應(yīng)位置的字符也相等。
5.5數(shù)組應(yīng)用程序設(shè)計(jì)實(shí)例
5.5數(shù)組應(yīng)用程序設(shè)計(jì)實(shí)例【實(shí)例5】用數(shù)組處理fibonacci數(shù)列問(wèn)題。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");}下頁(yè)
5.5數(shù)組應(yīng)用程序設(shè)計(jì)實(shí)例
【實(shí)例6】求一組成績(jī)的平均分?jǐn)?shù),設(shè)給定的數(shù)據(jù)是
87,90,85,98,65,80,74,67。c5_6.c分析:考慮用數(shù)組表示這組成績(jī),雖然給出的數(shù)據(jù)全是整數(shù)值,但考慮作為成績(jī)及可能需要進(jìn)行的運(yùn)算,使用實(shí)型數(shù)更合適。本例使用數(shù)組定義時(shí)初始化的方式來(lái)表示要計(jì)算的數(shù)據(jù),其次,為增加程序的通用性,考慮讓程序自動(dòng)判斷數(shù)據(jù)值的個(gè)數(shù),用于循環(huán)結(jié)束的控制條件。程序:下頁(yè)#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è)計(jì)實(shí)例
【實(shí)例7】將一個(gè)二維數(shù)組行和列的元素互換,存放到一個(gè)二維數(shù)組中。
c5_7.c分析:遍歷二維數(shù)組的每一個(gè)元素經(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è)計(jì)實(shí)例
【實(shí)例8】輸出一個(gè)3X4的矩陣中最大元素的值及其所在行號(hào)和列號(hào)。
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è)計(jì)實(shí)例
【實(shí)例9】編寫(xiě)函數(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è)計(jì)實(shí)例
【實(shí)例10】將字符串轉(zhuǎn)換成等值的機(jī)內(nèi)數(shù)。將無(wú)符號(hào)八進(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
得出計(jì)算中有一個(gè)累加過(guò)程,轉(zhuǎn)換方法是:從高位起,累加值=累加值×8+本位值。用一維數(shù)組表示八進(jìn)制數(shù)串。程序如下:c5_10.c
下頁(yè)#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è)計(jì)實(shí)例
【實(shí)例11】將十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)串。方法:反復(fù)除8求余數(shù),將余數(shù)從右向左排列程序如下:下頁(yè)#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è)計(jì)實(shí)例
【實(shí)例12】用選擇法排序。c5_12.c方法:設(shè)有n個(gè)元素,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]中得到次小元素;…依次類(lèi)推。執(zhí)行n-1次選擇和交換后,將會(huì)得到有序數(shù)組。程序如下:下頁(yè)#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è)計(jì)實(shí)例
【實(shí)例13】編寫(xiě)一個(gè)函數(shù),將一個(gè)整數(shù)插入上題已排序好的表中。分析:插入操作需知道:有序表的名字
表中元素的個(gè)數(shù)
插入數(shù)據(jù)插入操作后:表中的元素個(gè)數(shù)增加1。方法:插入方法分三步第一步找插入位置;第二步后移元素移出插入空位;第三步插入元素。程序如下:下頁(yè)插入算法實(shí)現(xiàn)如下:
inti,in;
for(i=n;i>0
;i--){i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公司消防應(yīng)急預(yù)案演練評(píng)估報(bào)告總結(jié)
- 二零二五版國(guó)際教育文化交流合作協(xié)議
- 單位用人申請(qǐng)書(shū)
- 2025年度土地儲(chǔ)備項(xiàng)目征地補(bǔ)償合同范本
- 2025年度工程建設(shè)項(xiàng)目投標(biāo)擔(dān)保合同范本
- 酒店轉(zhuǎn)正申請(qǐng)書(shū)范文
- 嬰兒改名申請(qǐng)書(shū)
- 工勤崗轉(zhuǎn)管理崗申請(qǐng)書(shū)
- 求職面試中的職場(chǎng)禮儀技巧分析
- 2025年午托班學(xué)生課后興趣小組活動(dòng)合同
- 快消品公司銷(xiāo)售部薪酬績(jī)效方案(快消品公司銷(xiāo)售KPI績(jī)效考核指標(biāo))
- 2025年初中地理八年級(jí)上冊(cè)全冊(cè)重點(diǎn)知識(shí)點(diǎn)復(fù)習(xí)課件
- 化學(xué)第五單元化學(xué)反應(yīng)的定量關(guān)系大單元備課-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)上冊(cè)
- PIR 灌注保溫裝飾板外墻保溫系統(tǒng)應(yīng)用技術(shù)規(guī)程規(guī)程征求意見(jiàn)稿
- 2024年中國(guó)網(wǎng)球游戲機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2024年日歷表電子版(帶農(nóng)歷-含周數(shù)-周一開(kāi)始-打印版)
- 三年級(jí)上冊(cè)科學(xué)全冊(cè)知識(shí)點(diǎn)2024年新青島版六三制
- DLT5155-2016 220kV~1000kV變電站站用電設(shè)計(jì)技術(shù)規(guī)程
- 2024年全國(guó)期貨從業(yè)資格之期貨投資分析考試歷年考試題(詳細(xì)參考解析)
- 產(chǎn)品生產(chǎn)及供貨方案(2篇)
- 期末情境卷考核-2023-2024學(xué)年語(yǔ)文二年級(jí)下冊(cè)統(tǒng)編版
評(píng)論
0/150
提交評(píng)論