版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
0102036.1一維數(shù)組6.2二維數(shù)組6.3字符數(shù)組和字符串
數(shù)組04056.4知識點強化與應(yīng)用6.5本章小結(jié)【學(xué)習(xí)要點】1.一維數(shù)組、二維數(shù)組的定義,元素引用及初始化方法2.字符數(shù)組的定義與初始化3.字符串輸入、輸出方法及常用的字符串處理函數(shù)的使用4.簡單的算法設(shè)計(排序,查找等算法)本章主要介紹一維和二維數(shù)組的定義與使用,字符數(shù)組的概念和使用,并培養(yǎng)使用數(shù)組對數(shù)據(jù)進行存儲的思想。完成10個學(xué)生信息的輸入(學(xué)號,性別,英語、高等數(shù)學(xué)、計算機考試成績),求出每個同學(xué)的考試平均分,并將所有同學(xué)信息按照格式輸出?!緦?dǎo)入案例:大量數(shù)據(jù)的存儲及處理】
若使用一般變量對案例中的數(shù)據(jù)進行處理,將需要定義10個變量存儲性別,10個變量存儲學(xué)號,10個變量存儲英語成績,10個變量存儲數(shù)學(xué)成績,10個變量存儲計算機成績,10個變量存儲總分,總共至少包含60個變量,很顯然用常規(guī)的思路處理是不太合適的,該如何完成這些大量的有一定關(guān)聯(lián)的數(shù)據(jù)存儲呢?分析
在前面的章節(jié)中,當(dāng)處理的數(shù)據(jù)個數(shù)很少時,會想到定義幾個變量來存儲這些數(shù)據(jù)。但當(dāng)需要處理的數(shù)據(jù)很多(幾十、上百甚至上萬個數(shù)據(jù))時,不可能一一去定義那么多變量來處理。例如,若需要將100個同學(xué)的計算機考試成績保存下來,此時去定義100個變量來存儲這些數(shù)據(jù)是不明智的,?!窘鉀Q方案】對于存儲大量的、相同意義的數(shù)據(jù)使用數(shù)組(Array)最為合適。分析6.1一維數(shù)組6.1.1一維數(shù)組的定義6.1.2一維數(shù)組元素的引用6.1.3一維數(shù)組元素的初始化6.1.1一維數(shù)組的定義方法:數(shù)組類型數(shù)組名[數(shù)組長度]如:inta[5];floatscore[66];charstr[100];1.數(shù)組類型:可以是前面介紹的所有的數(shù)據(jù)類型,也可以是后面將介紹的組合類型;2.數(shù)組名:命名規(guī)則同于前面介紹的變量的命名規(guī)則;3.數(shù)組長度:表示數(shù)組內(nèi)元素個數(shù),必須是整形常量或表達式,不能是變量。6.1.2一維數(shù)組元素的引用方法:數(shù)組名[元素下標(biāo)]如:a[3],score[5],str[10];1.該數(shù)組必須已經(jīng)在前面定義過;2.元素下標(biāo)可以是常量或表達式,也可以是變量,但是必須為整型;3.下標(biāo)的范圍為:[0,數(shù)組長度-1],否則將發(fā)生訪問越界;6.1.3一維數(shù)組元素的初始化方法:數(shù)據(jù)類型數(shù)組名[常量表達式]={初始化數(shù)據(jù)}主要包含以下情形:1、定義數(shù)組時,對全部元素賦值:inta[5]={1,2,3,4,5};2、對部分元素賦值:intb[5]={1,2};b[0]=1,b[1]=2;其余元素為?6.1.3一維數(shù)組元素的初始化(續(xù))3、
若所有元素賦值為0,可使用如下方法:
intc[5]={0,0,0,0,0};也可以使用:intc[5]={0};4、若要對數(shù)組的全部元素初始化,則可省略數(shù)組說明中的大小。intd[]={1,2,3,4,5};例1:從鍵盤動態(tài)輸入10個整數(shù),然后將10個數(shù)據(jù)順序輸出;分析:1.先定義正確類型的、合適長度的數(shù)組;2.結(jié)合for循環(huán)(推薦)使用循環(huán)變量控制數(shù)組下標(biāo),來逐個引用數(shù)組元素;3.使用前面學(xué)習(xí)過的函數(shù)完成數(shù)據(jù)的輸入輸出。參考代碼段:inta[10],i;
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
for(i=0;i<10;i++)
printf("%2d",a[i]);例2:從鍵盤動態(tài)輸入10個整數(shù),然后將10個數(shù)據(jù)前后交換存放;分析:1.先正確的完成數(shù)據(jù)的輸入與輸出;2.a[0]與a[9]交換,a[1]和a[8]交換,a[2]和a[7]交換,進而推理出a[
i]和a[9-i]交換;3.注意控制i的變化范圍。參考代碼段:for(i=0;i<10/2;i++)
{t=a[i];a[i]=a[9-i];a[9-i]=t; }若數(shù)據(jù)個數(shù)為n個,該如何實現(xiàn)呢?6.2二維數(shù)組6.2.1二維數(shù)組的定義6.2.2二維數(shù)組元素的引用6.2.3二維數(shù)組元素的初始化6.2.1二維數(shù)組的定義當(dāng)存儲全班5個同學(xué)的總分時,可以定義intsum[5]來存放,那么現(xiàn)在若需要存儲5個同學(xué)4門考試的分數(shù)時,可以考慮使用二維數(shù)組intscores[5][4]來存放。該二維數(shù)組可以理解成由5個一維數(shù)組構(gòu)成,其中每個一維數(shù)組包含有4個元素,在內(nèi)存中,二維數(shù)組以行為順序進行存放,即先存放第一行的第一個元素,再一行的第二個元素,以此類推……6.2.1二維數(shù)組的定義(續(xù))方法:數(shù)組類型數(shù)組名[常量表達式一][常量表達式二]如:inta[5][3];floatscore[5][4];charstr[3][100];1.數(shù)組類型、數(shù)組名的命名規(guī)則與一維數(shù)組的定義相同;2.常量表達式一和常量表達式二分別表示所定義的數(shù)組的行數(shù)和列數(shù),與一維數(shù)組中數(shù)組長度的定義規(guī)則相同;6.2.2一維數(shù)組元素的引用方法:數(shù)組名[行標(biāo)][列標(biāo)]如:a[3][0],score[2][3],str[2][10];1.該數(shù)組必須是在前面已經(jīng)定義過的數(shù)組;2.行標(biāo)、列標(biāo)表示所訪問元素的具體行位置和所在的列的位置,其可以是常量或表達式,也可以是變量,但是必須為整型;3.行標(biāo)、列標(biāo)的范圍為:[0,行數(shù)-1]、[0,列數(shù)-1]。6.2.3二維數(shù)組元素的初始化方法:分行進行初始化數(shù)據(jù)類型數(shù)組名[常量表達式一][常量表達式二]={{},{},{}};主要包含以下情形:1、定義數(shù)組時,對全部元素賦值分行賦值
inta[3][4]={{1,2,3,4},{5,6,7,8},{2,3,4,5}};也可以:inta[3][4]={1,2,3,4,5,6,7,8,2,3,4,5};6.2.3二維數(shù)組元素的初始化(續(xù))2、對部分元素初始化:
inta[3][4]={{1,4},{0,5}};3、在不產(chǎn)生歧異的情況下,可以省略第一維長度的說明
inta[][4]={{1,2,3,4},{5,6,7,8},{2,3,4,5}};數(shù)組a所有元素的值分別為多少?例3:定義一個3行4列的整型數(shù)組,數(shù)據(jù)從鍵盤動態(tài)輸入,最后按照行列的格式將該數(shù)組元素輸出;分析:1.先定義正確類型的、合適長度的數(shù)組;2.使用for循環(huán)嵌套(二維數(shù)組一般都需要)分別控制行標(biāo)和列標(biāo),來逐個引用數(shù)組元素;參考代碼段:inta[3][4],i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++) scanf("%d",&a[i][j]);6.3字符數(shù)組和字符串6.3.1字符數(shù)組的定義6.3.2字符數(shù)組的初始化6.3.3字符數(shù)組元素的引用6.3.4字符串的存儲6.3.5字符數(shù)組的輸入輸出6.3.6常用字符串處理函數(shù)6.3.1字符數(shù)組的定義方法:一維:char數(shù)組名[數(shù)組長度]二維:char數(shù)組名[行數(shù)][列數(shù)]6.3.2字符數(shù)組的初始化方法:
char數(shù)組名[數(shù)組長度]={初始化的一個一個字符}如:charstr[10]={‘b’,’o’,’y’};6.3.3字符數(shù)組元素的引用方法:一維:數(shù)組名[下標(biāo)]二維:數(shù)組名[行數(shù)][列數(shù)]字符數(shù)組就是類型為char型的數(shù)組,之前介紹的一維、二維數(shù)組的定義、初始化和元素引用都可以直接使用。6.3.4字符串的存儲字符串是由“”擴起來的以\0結(jié)束的零個或多個字符序列,如“welcome”在內(nèi)存的存放為:welcome\0C語言沒有提供專門的字符串類型,對字符串采用的思想是將字符串作為字符數(shù)組來處理,因此可以用如下方式對字符數(shù)組初始化:charstr[10]=“welcome”;6.3.5字符數(shù)組的輸入輸出輸入可以有以下方法:
1、用循環(huán)結(jié)合%c使用;
2、scanf函數(shù)結(jié)合%s使用;
3、調(diào)用gets函數(shù)。輸出可以有以下方法:
1、用循環(huán)結(jié)合%c使用;
2、printf函數(shù)結(jié)合%s使用;
3、調(diào)用puts函數(shù)。6.3.5字符數(shù)組的輸入輸出(續(xù))charstr[100],ch; inti;
for(i=0;(ch=getchar())!='\n';i++)
s[i]=ch;s[i]='\0';//方法1輸入
for(i=0;str[i]!=‘\0’;i++)
printf(“%c”,str[i]);//方法1輸出 scanf("%s",str);
//方法2輸入 printf(“%s”,str);
//方法2輸出
gets(str);//方法3輸入 puts(str);//方法3輸出6.3.5字符數(shù)組的輸入輸出(續(xù))1.方法1是將其完全當(dāng)作一般的數(shù)組來處理,這種處理方法不常見;2.方法2處理時,格式控制符需用%s,而不能用%c;輸入表列中的參數(shù),需直接給出字符數(shù)組的名稱,而不能用&str或&str[i]的形式;3.第2種方法在輸入過程中如檢測到空格則輸入結(jié)束,因此,當(dāng)輸入的有效字符中間包含字符,一般采用第3種方法。6.3.6常用的字符串處理函數(shù)1、strcat(str1,str2)//字符串連接函數(shù)功能:把字符串str2接到字符串str1的后面,結(jié)果較長的新的串放在字符串1中。
說明:
(1)字符數(shù)組1必須足夠長,以便容納連接后的新字符串,否則就會因長度不夠出錯;
(2)在連接前,兩個字符串的后面都有一個‘\0’,連接后將字符串1后面的‘\0’取消,只在新串最后保留一個‘\0’;
(3)字符數(shù)組2可以使一個字符串常量;6.3.6常用的字符串處理函數(shù)(續(xù))2、
strcpy(str1,str2)//字符串復(fù)制函數(shù)功能:將字符串2拷貝到字符數(shù)組1中去。說明:
(1)str1必須定義得足夠長,以便容納被拷貝的字符串。str1的長度不應(yīng)小于str12的長度;
(2)str1必須寫成數(shù)組名形式,str2可以是字符數(shù)組名,也可以是一個字符串常量。如strcpy(str1,“China”);6.3.6常用的字符串處理函數(shù)(續(xù))3、
strlen(str)//求字符串長度功能:求字符串str有效字符的個數(shù)。說明:
(1)函數(shù)的值為字符串中第一個‘\0’之前字符的個數(shù),不包括‘\0’在內(nèi)。如:charstr[10]={"China"};printf("%d",strlen(str));
輸出結(jié)果不是10,也不是6,而是5。
(2)也可以直接求字符串常量的長度,strlen(“China”)。6.3.6常用的字符串處理函數(shù)(續(xù))4、strcmp(str1,str2)//字符串大小比較函數(shù)功能:比較字符串1和字符串2的大小。說明:字符串比較的規(guī)則為:對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到‘\0’為止。如全部字符相同,則認為相等;若出現(xiàn)不相同的字符,則以第一個不相同的字符的比較結(jié)果為準(zhǔn),比較的結(jié)果由函數(shù)值帶回。①如果字符串1=字符串2,函數(shù)值為0。②如果字符串1>字符串2,函數(shù)值為一正整數(shù)。③如果字符串1<字符串2,函數(shù)值為一負整數(shù)。例4:自己編寫程序?qū)崿F(xiàn)函數(shù)strcat的功能;分析:1.先理解strcat函數(shù)的功能;2.使用循環(huán)將字符串2‘\0’之前的字符逐個拷貝到字符串1;3.在字符串1后加上\0作為字符串的結(jié)束標(biāo)志。參考代碼段:charstr1[100],str2[50]; inti,j; i=j=0; gets(str2);puts(str2); while(str2[j])str1[i++]=str2[j++];
str1[i]='\0'; puts(str1); puts(str2);6.4知識點強化與應(yīng)用例5:輸入10個整數(shù),求出最大值并將其輸出;分析:1.先定義合適大小,合適類型的數(shù)組,再通過循環(huán)為元素賦值;2.再假設(shè)第1個元素a[0]為最大,將其賦予變量max,然后將剩下的9個元素依次和max變量比較;若a[i]>max,則用a[i]更新max,即max=a[i];接著繼續(xù)與下一個元素進行比較,直到與數(shù)組中的所有元素比較完畢。此時,變量max中存放的就是這10個數(shù)中的最大值。6.4知識點強化與應(yīng)用例6:從鍵盤輸入10個整數(shù),用冒泡法對其排序后按照從小到大輸出輸出;冒泡法思想:將相鄰位置上的兩個數(shù)比較,將小的調(diào)到前頭。假設(shè)數(shù)組元素初始序列為:985420第一趟比較
經(jīng)過第一趟(共5次比較)后,最大的數(shù)9已“沉底”
,然后進行對余下的前面5個數(shù)進行第二趟比較。
經(jīng)過第二趟(共4次比較)后,得到次大的數(shù)8,接下來對剩下的4個數(shù)進行第三趟比較,依次類推……。第二趟比較如此進行下去,可以推知6個數(shù)要比較5趟。在第一趟中要進行兩兩比較5次,在第二趟中比4次,……第5趟比1次。如果有n個數(shù),則要進行n一1趟比較。在第j趟比較中要進行n一j次兩兩比較,流程圖可以表示為:參考程序:{
inti,j,m,a[11];for(i=1;i<=10;i++)scanf(“%d”,&a[i]);//輸入N個整數(shù)for(j=1;j<=10;j++)//N-1輪排序處理for(i=1;i<=10-j;i++)//N-j次相鄰數(shù)據(jù)比較if(a[i]>a[i+1]){m=a[i];//交換數(shù)據(jù)a[i]=a[i+1];
a[i+1]=m;
}
}6.4知識點強化與應(yīng)用例7:從鍵盤輸入10個整數(shù),在其中查找某一指定的元素是否存在,若存在,輸出其位置,若不存在,輸出提示結(jié)果。(假設(shè)10個數(shù)據(jù)不重復(fù))分析:1.先定義合適大小,合適類型的數(shù)組,再通過循環(huán)為元素賦值;2.定義一個標(biāo)志位flag以最后判定查找的數(shù)據(jù)是否存在于數(shù)組中,初始假定不存在,flag=0;3.從數(shù)組第一個元素開始逐一判斷其值是否與待查找的數(shù)值相等,若不相等則繼續(xù)判斷下一個,直到所有元素判斷完畢,若相等則記下當(dāng)前元素的下標(biāo)并更改flag為1,并強制退出循環(huán);4.最后根據(jù)flag的值判定元素是否存在于數(shù)組中,并將結(jié)果輸出。6.4知識點強化與應(yīng)用例8:有一個3×4的矩陣,編程求出每行中的最大元素及其所在的行號和列號。分析:對于一個二維數(shù)組,可以理解為由多個一維數(shù)組組成。對于3×4數(shù)組,可理解為由3個一維數(shù)組構(gòu)成,每個一維數(shù)組有4個元素。求每行的最大值即為求每個一維數(shù)組的最大值,用循環(huán)逐行求出該行中最大的元素及其所在的位置并將結(jié)果輸出,每行處理結(jié)束以后再跳轉(zhuǎn)到下一行。6.4知識點強化與應(yīng)用例9:找出3個字符串中最大的那個字符串。分析:1.定義一個二維字符數(shù)組str[3][100]存放這三個字符串,調(diào)用gets函
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版建筑工程安全措施費用合同
- 急診護士工作計劃
- 五年級上冊音樂教學(xué)計劃模板合集五篇
- 教學(xué)管理教學(xué)總結(jié)
- 給朋友道歉信15篇
- 學(xué)法工作計劃合集七篇
- 新媒體營銷(第三版) 課件 項目一 新媒體營銷認知
- 酒店的辭職報告模板八篇
- 川教版信息技術(shù)九年級上冊全冊教案
- 安防基礎(chǔ)知識培訓(xùn)(三星)
- 公安學(xué)基礎(chǔ)智慧樹知到期末考試答案章節(jié)答案2024年山東警察學(xué)院
- DB44-T 2480-2024 鋁及鋁合金深井鑄造安全技術(shù)規(guī)范
- 中醫(yī)適宜技術(shù)發(fā)展現(xiàn)狀
- 部編人教版四年級數(shù)學(xué)上冊期末考試卷(可打印)
- 一例阿爾茨海默病患者的護理查房
- 農(nóng)貿(mào)市場安全生產(chǎn)工作方案
- 咸陽租房合同
- 《鋼筋保護層檢測》課件
- YJ-T 27-2024 應(yīng)急指揮通信保障能力建設(shè)規(guī)范
- 合伙人協(xié)議書決策機制
- 西藏畜牧獸醫(yī)知識培訓(xùn)課件
評論
0/150
提交評論