《C語(yǔ)言程序設(shè)計(jì)》 課件 第5章 數(shù)組_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 第5章 數(shù)組_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 第5章 數(shù)組_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 第5章 數(shù)組_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 第5章 數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章數(shù)組信息工程學(xué)院主講人:XXX內(nèi)容提要41一維數(shù)組的定義和引用12二維數(shù)組的定義和引用423字符數(shù)組42數(shù)組的應(yīng)用42524445.1一維數(shù)組的定義和引用一維數(shù)組的定義數(shù)組中的每個(gè)元素只帶有一個(gè)下標(biāo)時(shí),這樣的數(shù)組稱為一維數(shù)組。

定義格式如下:數(shù)據(jù)類型說(shuō)明符數(shù)組名[常量表達(dá)式];例如:inta[8];它表示定義了一個(gè)整型數(shù)組,數(shù)組名為a,數(shù)組中有8個(gè)元素。說(shuō)明如下:(1)數(shù)據(jù)類型說(shuō)明符用來(lái)說(shuō)明數(shù)組的類型,即數(shù)組中元素值的類型,可以是整型、符點(diǎn)型,或是其它的數(shù)據(jù)類型,本例中數(shù)據(jù)類型說(shuō)明符表明數(shù)組a中8個(gè)元素的數(shù)據(jù)類型是整型。(2)數(shù)組名的命名規(guī)則遵循標(biāo)識(shí)符的命名規(guī)則,和變量名的命名規(guī)則相同。(3)在定義數(shù)組時(shí),需要指定數(shù)組元素的個(gè)數(shù),其中方括號(hào)中的內(nèi)容只能是整型常量或整型常量表達(dá)式,方括號(hào)中的值指定數(shù)組元素的個(gè)數(shù)。(4)數(shù)組名不能與其它變量名相同。5.1一維數(shù)組的定義和引用一維數(shù)組的引用數(shù)組元素引用的格式:數(shù)組名[下標(biāo)]其中,“下標(biāo)”是個(gè)整型表達(dá)式。如x[0],x[j],x[i+k]都是對(duì)數(shù)組元素的合法引用。但數(shù)組下標(biāo)表達(dá)式的值必須大于等于0,并且小于等于數(shù)組上界的值。另外一個(gè)數(shù)組元素就是一個(gè)變量名,代表內(nèi)存中一個(gè)存儲(chǔ)單元?!纠?.1】對(duì)數(shù)組元素的引用#include<stdio.h>voidmain(){inti,a[8];for(i=0;i<=7;i++)a[i]=i;for(i=7;i>=0;i--)printf("%d",a[i]);}運(yùn)行結(jié)果:5.1一維數(shù)組的定義和引用一維數(shù)組的初始化定義數(shù)組時(shí)給數(shù)組元素賦值就是一維數(shù)組的初始化。格式如下:數(shù)據(jù)類型說(shuō)明符數(shù)組名[數(shù)組長(zhǎng)度]={值1,值2,值3,......,值n};例如:inta[8]={0,1,2,3,4,5,6,7};(1)所賦的值放在等號(hào)后的一對(duì)花括號(hào)中,數(shù)值類型必須與所說(shuō)明的數(shù)據(jù)類型一致,所賦值之間用逗號(hào)隔開(kāi),系統(tǒng)會(huì)按賦值順序自動(dòng)進(jìn)行分配。(2)當(dāng)在賦值時(shí)花括號(hào)中的值的個(gè)數(shù)少于賦值元素的個(gè)數(shù)時(shí),將自動(dòng)給后面的元素賦值0。5.1一維數(shù)組的定義和引用一維數(shù)組的初始化(3)可以通過(guò)賦初值來(lái)指定數(shù)組的大小,這時(shí)數(shù)組名后的一對(duì)方括號(hào)中可以不指定數(shù)組的大小,但方括號(hào)不能省略。例如:inta[5]={1,1,1,1,1};可以寫(xiě)成inta[]={1,1,1,1,1};(4)數(shù)組初始化時(shí),初始值的個(gè)數(shù)不能大于數(shù)組元素的個(gè)數(shù),否則會(huì)出現(xiàn)錯(cuò)誤。例如:inta[5]={1,1,1,1,1,1,1,1};//這是錯(cuò)誤的(5)數(shù)組元素只能逐個(gè)賦值,不能對(duì)數(shù)組整體賦值。5.1一維數(shù)組的定義和引用【例5.3】編寫(xiě)一個(gè)程序,通過(guò)鍵盤(pán)給數(shù)組a中的5個(gè)元素賦初值。#include<stdio.h>voidmain(){inta[5];inti;for(i=0;i<5;i++){scanf("%d",&a[i]);printf("a[%d]=%d",i,a[i]);}}運(yùn)行結(jié)果:一維數(shù)組程序舉例5.1一維數(shù)組的定義和引用【例5.4】用數(shù)組求Fibonacci數(shù)例的前20項(xiàng)(1,1,2,3,5,8,13,21,.....)。#include<stdio.h>voidmain(){inti;intf[20]={1,1};//定義并初始化一維數(shù)組,使f[0]=1,f[1]=1,其余元素為0for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];//數(shù)例中的每i項(xiàng)等于i-2項(xiàng)加上i-1項(xiàng)的和for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%8d",f[i]);}printf("\n");}運(yùn)行結(jié)果:一維數(shù)組程序舉例5.1一維數(shù)組的定義和引用【例5.5】輸入5個(gè)整數(shù),輸出其中的最大值和最小值。#include<stdio.h>voidmain(){intmax,min,a[5],i;printf("請(qǐng)輸入5個(gè)數(shù):\n");for(i=0;i<5;i++)scanf("%d,",&a[i]);max=min=a[0];for(i=0;i<5;i++){if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}printf("最大值max=%d\n",max);printf("最小值min=%d\n",min);}運(yùn)行結(jié)果:一維數(shù)組程序舉例5.2二維數(shù)組的定義和引用二維數(shù)組的定義數(shù)組中的每個(gè)元素有兩個(gè)下標(biāo)時(shí),這樣的數(shù)組稱為二維數(shù)組。定義格式如下:數(shù)據(jù)類型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];其中兩個(gè)方括號(hào)中的常量表達(dá)式只能是正整數(shù)。如果將二維數(shù)組看做表格,那么常量表達(dá)式1就代表行數(shù),常量表達(dá)式二就代表列數(shù)。例如:inta[3][4];說(shuō)明如下:(1)定義了一個(gè)數(shù)組名為a的二維數(shù)組。(2)數(shù)組中的每個(gè)元素都是整型變量。(3)數(shù)組a中共有3×4=12(3行4列)個(gè)元素。(4)數(shù)組a的邏輯結(jié)構(gòu)是一個(gè)具有3行4列的矩陣。5.2二維數(shù)組的定義和引用二維數(shù)組的引用二維數(shù)組元素引用的格式:數(shù)組名[下標(biāo)1][下標(biāo)2]其中,第1個(gè)下標(biāo)表示行下標(biāo),第2個(gè)下標(biāo)表示列下標(biāo),通過(guò)行下標(biāo)和列下標(biāo)確定數(shù)組元素在二維數(shù)組中的位置。例如:inta[3][4];說(shuō)明如下:(1)引用二維數(shù)組元素時(shí),要把二維數(shù)組的下標(biāo)分別放在兩個(gè)方括號(hào)內(nèi)。不可以把a(bǔ)[0][1]寫(xiě)成a[0,1]。(2)二維數(shù)組元素的下標(biāo)值應(yīng)該在已經(jīng)定義的數(shù)組大小的范圍之內(nèi)。(3)二維數(shù)組名a表示二維數(shù)組的首地址。(4)二維數(shù)組元素可以參加表達(dá)式運(yùn)算,也可以賦值。5.2二維數(shù)組的定義和引用【例5.7】二維數(shù)組元素的使用。程序如下:#include<stdio.h>voidmain(){inta[2][3];inti,j;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%3d”,a[i][j]);printf(“\n”);}}運(yùn)行結(jié)果:二維數(shù)組的引用舉例5.2二維數(shù)組的定義和引用二維數(shù)組的初始化同一維數(shù)組一樣,C語(yǔ)言允許在定義二維數(shù)組時(shí)對(duì)二維數(shù)組進(jìn)行初始化,對(duì)二維數(shù)組初始化可以通過(guò)下面的方式實(shí)現(xiàn)。(1)通過(guò)分行賦初值給二維數(shù)組,所賦值的個(gè)數(shù)與二維數(shù)組元素的個(gè)數(shù)相同。如:inta[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};(2)通過(guò)分行賦初值給二維數(shù)組,所賦值的個(gè)數(shù)與二維數(shù)組元素的個(gè)數(shù)不相同。(3)對(duì)二維數(shù)組賦初值時(shí)可以省略內(nèi)花括號(hào)對(duì)。(4)對(duì)全部數(shù)組元素賦初值時(shí),可以省略第一個(gè)方括號(hào)中的常量表達(dá)式,不能省略第二個(gè)方括號(hào)中的常量表達(dá)式,即第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省略。5.2二維數(shù)組的定義和引用5.2.4二維數(shù)組的程序舉例【例5.8】將二維數(shù)組的行列元素互換,存到另外一個(gè)二維數(shù)組中。例如:析如下:(1)通過(guò)外層循環(huán)控制行,讓變量i依次等于0,1,.....,行長(zhǎng)度-1。(2)通過(guò)內(nèi)層循環(huán)控制列,讓變量j依次等于0,1,.....,列長(zhǎng)度-1。(3)內(nèi)層循環(huán)的循環(huán)體為:將a[i][j]的值賦給b[j][i]。二維數(shù)組程序舉例5.2二維數(shù)組的定義和引用程序如下:#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(“數(shù)組a:\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(“數(shù)組b:\n”);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}二維數(shù)組程序舉例運(yùn)行結(jié)果:5.2二維數(shù)組的定義和引用【例5.9】通過(guò)鍵盤(pán)輸入3行4列的數(shù)組元素,求出數(shù)組中的最大值及所在行、列的下標(biāo)。#include<stdio.h>voidmain(){inta[3][4],max,row,col,i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);max=a[0][0];row=col=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(max<a[i][j]){max=a[i][j];row=i;col=j;}printf(“max=a[%d][%d]=%d\n”,row,col,max);}運(yùn)行結(jié)果:二維數(shù)組程序舉例5.3二維數(shù)組的定義和引用二維數(shù)組的定義數(shù)組中的每個(gè)元素有兩個(gè)下標(biāo)時(shí),這樣的數(shù)組稱為二維數(shù)組。定義格式如下:數(shù)據(jù)類型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];其中兩個(gè)方括號(hào)中的常量表達(dá)式只能是正整數(shù)。如果將二維數(shù)組看做表格,那么常量表達(dá)式1就代表行數(shù),常量表達(dá)式二就代表列數(shù)。例如:inta[3][4];說(shuō)明如下:(1)定義了一個(gè)數(shù)組名為a的二維數(shù)組。(2)數(shù)組中的每個(gè)元素都是整型變量。(3)數(shù)組a中共有3×4=12(3行4列)個(gè)元素。(4)數(shù)組a的邏輯結(jié)構(gòu)是一個(gè)具有3行4列的矩陣。5.3字符數(shù)組字符數(shù)組的定義

字符數(shù)組是用來(lái)存放字符數(shù)據(jù)的數(shù)組。字符數(shù)組的每一個(gè)元素中存放一個(gè)字符。字符數(shù)組的定義格式同前面介紹的數(shù)值型數(shù)組方法類似,例如:charc[8];說(shuō)明如下:(1)它表示定義了一個(gè)字符型數(shù)組,數(shù)組名為a,數(shù)組有8個(gè)元素,它們都為字符型數(shù)據(jù)。(2)由于字符型和整型是相互通用的,所以上面的定義也可以寫(xiě)成:intc[8];只是char型占用1個(gè)字節(jié),int型占用4個(gè)字節(jié),這樣容易造成空間浪費(fèi)。(3)二維字符數(shù)組的定義同前,不再贅述。5.3字符數(shù)組字符數(shù)組的初始化字符數(shù)組允許在定義時(shí)對(duì)其進(jìn)行初始化,一維數(shù)組的初始化有以下幾種方式:(1)用字符常量對(duì)字符數(shù)組初始化charc[8]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a(chǎn)’,‘m’,‘\0’};賦值后各元素如圖5-11所示。5.3字符數(shù)組字符數(shù)組的初始化(2)用字符串對(duì)字符數(shù)組初始化

通過(guò)字符串(C語(yǔ)言規(guī)定用“”括起來(lái)的多個(gè)字符叫字符串)給字符數(shù)組賦值時(shí),編譯系統(tǒng)會(huì)自動(dòng)在字符串尾部加字符串結(jié)束標(biāo)志‘\0’。‘\0’在字符數(shù)組中也占一個(gè)元素的空間,因些,在聲明字符串長(zhǎng)度時(shí)要預(yù)留出結(jié)束標(biāo)志的空間。例如:charc[6]={“Happy”};charc[6]=“Happy”;charc[]=“Happy”;charc[6]={‘H,‘a(chǎn)’,‘p’,‘p’,‘y’,‘\0’};charc[]={‘H,‘a(chǎn)’,‘p’,‘p’,‘y’,‘\0’};charc[6]={‘H,‘a(chǎn)’,‘p’,‘p’,‘y’};

上面的語(yǔ)句都是定義字符數(shù)組c,數(shù)組的長(zhǎng)度都為6;字符數(shù)組的值為字符串Happy,字符串本身的長(zhǎng)度為5。5.3字符數(shù)組字符數(shù)組的引用可以通過(guò)引用字符數(shù)組中的一個(gè)元素得到一個(gè)字符,字符數(shù)組的引用和前面一維數(shù)組和二維數(shù)組類似?!纠?.10】通過(guò)字符數(shù)組輸出一個(gè)字符串。#include<stdio.h>voidmain(){charc[14]={‘I’,‘’,‘a(chǎn)’,‘m’,‘’,‘a(chǎn)’,‘’,‘s’,‘t’,‘u’,‘d’,‘e’,‘n’,‘t’};inti;for(i=0;i<14;i++)printf(“%c”,c[i]);printf(“\n”);}運(yùn)行結(jié)果:5.3字符數(shù)組字符數(shù)組的引用【例5.11】通過(guò)字符數(shù)組輸出一個(gè)菱形。#include<stdio.h>voidmain(){chara[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%c",a[i][j]);printf("\n");}}運(yùn)行結(jié)果:5.3字符數(shù)組字符串處理函數(shù)1、puts函數(shù)其一般形式:puts(字符數(shù)組)該函數(shù)的作用是將一個(gè)字符串(以‘\0’為結(jié)束標(biāo)志的字符序列)輸出。2、gets函數(shù)其一般形式:gets(字符數(shù)組)該函數(shù)的作用是從鍵盤(pán)上輸入一個(gè)字符串給字符數(shù)組,然后得到一個(gè)函數(shù)值。該函數(shù)的值是字符數(shù)組的地址。5.3字符數(shù)組字符串處理函數(shù)3、strcat函數(shù)其一般形式:strcat(字符數(shù)組1,字符串2)該函數(shù)的作用是把兩個(gè)字符數(shù)組中的字符串連接起來(lái),把字符串2連接到字符串1的后面,并刪除字符串1后面的結(jié)束標(biāo)志符‘\0’,最后把鏈接后的結(jié)果存放在字符數(shù)組1中。4、strcpy函數(shù)其一般形式:strcpy(字符數(shù)組1,字符串2)該函數(shù)是字符串復(fù)制函數(shù),作用是將字符串2復(fù)制到字符數(shù)組1中。字符串復(fù)制起到字符串賦值運(yùn)算的功能。5.3字符數(shù)組字符串處理函數(shù)7、strlwr函數(shù)其一般形式:Strlwr(字符數(shù)組)該函數(shù)的作用是將字符串中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母。函數(shù)的實(shí)際參數(shù)只能是字符數(shù)組,不能是字符串。8、strupr函數(shù)其一般形式:strupr(字符數(shù)組)該函數(shù)的作用是將字符串中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母。函數(shù)的實(shí)際參數(shù)只能是字符數(shù)組,不能是字符串。5.3字符數(shù)組字符串處理函數(shù)5、字符串比較函數(shù)strcmp其一般形式:strcmp(字符串1,字符串2)該函數(shù)的作用是比較字符串1和字符串2。6、strlen函數(shù)其一般形式:strlen(字符數(shù)組)該函數(shù)的作用是返回字符串的長(zhǎng)度(不包括字符串結(jié)束標(biāo)志符‘\0’),返回的是字符串的實(shí)際長(zhǎng)度,和字符數(shù)組的長(zhǎng)度有區(qū)別。5.3字符數(shù)組【例5.12】從鍵盤(pán)輸入一個(gè)英文句子(一行字符),統(tǒng)計(jì)有多少個(gè)單詞,單詞之間用空格分隔。#include<stdio.h>voidmain(){charstr[255];inti,num=0;gets(str);if(str[0]!='')num=1;for(i=0;(str[i]);i++)if(str[i]==''&&str[i+1]!='')num++;printf("Thereare%dwordsintheline.\n",num);}運(yùn)行結(jié)果:字符數(shù)組應(yīng)用舉例5.3字符數(shù)組【例5.13】通過(guò)鍵盤(pán)輸入三個(gè)英文單詞,輸出其中最大的單詞。#include<stdio.h>#include<string.h>voidmain(){chars1[20],s2[20],s3[20],max[20];gets

溫馨提示

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