C語(yǔ)言程序設(shè)計(jì) 課件 單元5 數(shù)組-同類型數(shù)據(jù)處理便捷方式_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 單元5 數(shù)組-同類型數(shù)據(jù)處理便捷方式_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 單元5 數(shù)組-同類型數(shù)據(jù)處理便捷方式_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 單元5 數(shù)組-同類型數(shù)據(jù)處理便捷方式_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 單元5 數(shù)組-同類型數(shù)據(jù)處理便捷方式_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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)介

單元五

數(shù)組—同類型數(shù)據(jù)處理便捷方式導(dǎo)學(xué)【問(wèn)題】什么是數(shù)組?

在前面所學(xué)的章節(jié)中,定義的變量都屬于基本數(shù)據(jù)類型,每個(gè)變量都是單一的存儲(chǔ)空間,當(dāng)數(shù)據(jù)比較多的時(shí)候,基本的數(shù)據(jù)類型就不能滿足數(shù)據(jù)存儲(chǔ),為此,C語(yǔ)言還提供了數(shù)組類型,本章將帶領(lǐng)大家一起學(xué)習(xí)數(shù)組的相關(guān)內(nèi)容。一維數(shù)組2二維數(shù)組3字符數(shù)組4數(shù)組綜合運(yùn)用目錄1一維數(shù)組——數(shù)組相關(guān)概念數(shù)組:是用一個(gè)名字表示的一組相同類型的數(shù)據(jù)的集合,這個(gè)名字就稱為數(shù)組名。

如定義:floata[10];a是數(shù)組名。一維數(shù)組——數(shù)組相關(guān)概念下標(biāo)變量(或數(shù)組元素):數(shù)組中的數(shù)據(jù)分別存儲(chǔ)在用下標(biāo)區(qū)分的變量中,這些變量稱為下標(biāo)變量或數(shù)組元素。如:a[0]、a[1]…a[i]。每個(gè)下標(biāo)變量相當(dāng)于一個(gè)簡(jiǎn)單變量,數(shù)組的類型也就是該數(shù)組的下標(biāo)變量的數(shù)據(jù)類型。一維數(shù)組——定義

一維數(shù)組是一組用來(lái)存放多個(gè)相同類型數(shù)據(jù)的集合,該集合中的成員稱為元素,每個(gè)數(shù)組元素都由數(shù)組名和一個(gè)下標(biāo)來(lái)唯一確定。

一維數(shù)組的定義方式為:類型說(shuō)明符

數(shù)組名[常量表達(dá)式];一維數(shù)組——定義(1)類型說(shuō)明符可以是任意基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型(2)數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符,即數(shù)組元素共同的名字(3)方括號(hào)中的常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),數(shù)組元素的個(gè)數(shù)也稱為數(shù)組長(zhǎng)度。一維數(shù)組——定義以下數(shù)組定義是正確的:#defineN10……floatscore1[N],score2[N];intnum[10+N];charc[26];以下數(shù)組定義是不正確的:intn;floatscore[n];charstr[];

一維數(shù)組——數(shù)組元素引用數(shù)組元素引用:定義數(shù)組后,就可以通過(guò)引用數(shù)組元素的方式使用該數(shù)組中的元素,一維數(shù)組的引用格式為:數(shù)組名[下標(biāo)表達(dá)式]例如:輸入學(xué)生成績(jī)for(i=0;i<5;i++)scanf("%f",&score[i]);例如:n=3;fib[n]=fib[n-1]+fib[n-2];一維數(shù)組——數(shù)組初始化數(shù)組初始化:在定義數(shù)組時(shí)給數(shù)組元素賦初值。數(shù)組初始化是在編譯階段進(jìn)行的,這樣能減少運(yùn)行時(shí)間,提高效率。初始化賦值有以下幾種形式:(1)在定義數(shù)組時(shí),對(duì)全部數(shù)組元素賦初值例如:inta[5]={0,1,2,3,4};此時(shí)可以省略數(shù)組長(zhǎng)度,例如:inta[]={0,1,2,3,4};

(2)在定義數(shù)組時(shí),對(duì)部分?jǐn)?shù)組元素賦初值

例如:inta[5]={1,2,3};系統(tǒng)為其余元素賦0。

(3)當(dāng)初值的個(gè)數(shù)多于數(shù)組元素的個(gè)數(shù)時(shí),編譯出錯(cuò)

例如:inta[5]={0,1,2,3,4,5};/*編譯出錯(cuò)*/一維數(shù)組——例題【例5-1】從鍵盤輸入10個(gè)數(shù)據(jù),并輸出。一維數(shù)組——例題#include<stdio.h>intmain(){inta[10],i;printf("請(qǐng)輸入數(shù)組元素的值:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("輸出數(shù)組元素的值:\n");for(i=0;i<10;i++)printf("%3d",a[i]);return0;}#include<stdio.h>intmain(){inta[10],i;printf("請(qǐng)輸入數(shù)組元素的值:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("輸出數(shù)組元素的值:\n");for(i=0;i<10;i++)printf("%3d",a[i]);return0;}一維數(shù)組——例題【例5-2】某演講比賽有10位評(píng)委,輸入評(píng)委的打分結(jié)果,根據(jù)給分情況,找出該選手的最高分和最低分。一維數(shù)組——例題#include<stdio.h>intmain(){inta[10],i;intmax,min;//max表示最高分,min表示最低分printf("請(qǐng)輸入十個(gè)評(píng)委打分:");for(i=0;i<10;i++)//輸入評(píng)委打分scanf("%d",&a[i]);max=min=a[0];//假設(shè)最高分和最低分均為a[0]for(i=1;i<10;i++)//依次和各個(gè)元素比較{if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}printf("最高分為:%d,最低分為:%d.",max,min);//輸出最高分和最低分return0;}#include<stdio.h>intmain(){inta[10],i;intmax,min;//max表示最高分,min表示最低分printf("請(qǐng)輸入十個(gè)評(píng)委打分:");for(i=0;i<10;i++)//輸入評(píng)委打分scanf("%d",&a[i]);max=min=a[0];//假設(shè)最高分和最低分均為a[0]for(i=1;i<10;i++)//依次和各個(gè)元素比較{if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}printf("最高分為:%d,最低分為:%d.",max,min);//輸出最高分和最低分return0;}一維數(shù)組2二維數(shù)組3字符數(shù)組4數(shù)組綜合運(yùn)用目錄1二維數(shù)組——定義1.二維數(shù)組的定義二維數(shù)組的定義與一維數(shù)組相似,其一般形式為:類型說(shuō)明符

數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];其中,常量表達(dá)式1表示行數(shù),常量表達(dá)式2表示列數(shù),數(shù)組元素個(gè)數(shù)為常量表達(dá)式1*常量表達(dá)式2,下標(biāo)值從0開(kāi)始。例如:inta[3][4]說(shuō)明a是一個(gè)三行四列的整型數(shù)組,該數(shù)組的下標(biāo)變量共有3*4個(gè),即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ù)組在概念上是二維的,但在存儲(chǔ)器中是按一維線性排列的,即是按行排列的。例如上面提到的數(shù)組a[3][4],先放第一行,a[0][0]、a[0][1]、a[0][2]、a[0][3];再放第2行,a[1][0]、a[1][1]、a[1][2]、a[1][3];再放第3行,a[2][0],a[2][1],a[2][2],a[2][3]。二維數(shù)組——引用2.二維數(shù)組的引用二維數(shù)組的引用格式為:數(shù)組名[行下標(biāo)][列下標(biāo)]例如,b[2][3]表示數(shù)組b第3行第4列的元素二維數(shù)組——初始化3.二維數(shù)組的初始化(1)按行賦初值。例:intb[2][3]={{3,4,5},{6,7,8}}初始化后結(jié)果:345

678

(2)按數(shù)組元素在內(nèi)存中排列的順序?qū)Ω髟刭x初值。例:inta[2][3]={1,2,3,4,5,6}二維數(shù)組——初始化(3)給部分元素賦初值。例:inta[2][3]={{1},{4}};

初始化后結(jié)果:100

400

未賦值元素初值默認(rèn)為0。

(4)數(shù)組初始化時(shí),行長(zhǎng)度可省略,列長(zhǎng)度不能省略。

例如:inta[][3]={1,2,3,4,5,6,7};

intb[][4]={{1},{4,5}};二維數(shù)組——例題【例5-3】從鍵盤輸入3行4列的數(shù)組,并輸出?!驹创a】#include<stdio.h>main(){inta[3][4],i,j;

for(i=0;i<3;i++)//二維數(shù)組的輸入for(j=0;j<4;j++)scanf("%d",&a[i][j]);

for(i=0;i<3;i++)//二維數(shù)組的輸出{for(j=0;j<4;j++)printf("%d",a[i][j]);

printf("\n");}//每輸出一行后換行二維數(shù)組——例題【例5-4】將一個(gè)3*3的矩陣存入二維數(shù)組中,找出其中的最大值以及對(duì)應(yīng)的行下標(biāo)和列下標(biāo)。二維數(shù)組——例題#include<stdio.h>intmain(){inta[3][3],i,j;intmax,row=0,colum=0;printf("請(qǐng)輸入二維數(shù)組的值:\n");for(i=0;i<3;i++)//二維數(shù)組的輸入for(j=0;j<3;j++)scanf("%d",&a[i][j]);max=a[0][0];for(i=0;i<3;i++)//二維數(shù)組的輸出for(j=0;j<3;j++)if(max<a[i][j]){max=a[i][j];row=i;colum=j;}printf("最大值是%d,行下標(biāo)為%d,列下標(biāo)為%d.\n",max,row,colum);return0;}一維數(shù)組2二維數(shù)組3字符數(shù)組4數(shù)組綜合運(yùn)用目錄1字符數(shù)組——定義1.字符數(shù)組的定義定義字符數(shù)組的方法與定義數(shù)值型數(shù)組的方法類似,只是字符數(shù)組的數(shù)據(jù)類型為char型。例如:charb[5],定義了一維字符數(shù)組bchara[3][4],定義了二維字符數(shù)組a字符數(shù)組——引用2.字符數(shù)組的引用字符數(shù)組與數(shù)值型數(shù)組的引用方式一樣,可以使用下標(biāo)的形式,例如,為上面定義的數(shù)組a和數(shù)組b中的第1個(gè)元素賦值,方法如下:b[0]=’a’;a[0][0]=’b’字符數(shù)組——初始化字符數(shù)組允許在定義時(shí)進(jìn)行賦值,例如:chara[6]={‘M’,’o’,’n’,’d’,’a’,’y’}初始化后各元素的值為:a[0]=‘M’、a[1]=‘o’、a[2]=‘n’、a[3]=‘d’、a[4]=‘a(chǎn)’、a[5]=‘y’。字符數(shù)組——初始化字符數(shù)組初始化時(shí),如果字符數(shù)組提供的數(shù)據(jù)個(gè)數(shù)小于數(shù)組元素的個(gè)數(shù),那么多余的數(shù)組元素初始化為空字符’\0’。例如:charh[5]=[‘p’,’e’,’n’];初始化后各元素的值為:h[0]=’p’、h[1]=’e’、h[2]=’n’、h[3]=’\0’、h[4]=’\0’字符數(shù)組——字符串在c語(yǔ)言中沒(méi)有專門的字符串變量,通常用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串。在引用或處理字符串前,須首先定義和初始化字符串。字符串初始化有兩種方法,一種是用字符常量初始化數(shù)組,另一種是用字符串常量初始化數(shù)組。例如:charstring1[7]={‘p’,’e’,’n’,’c’,’i’,’l’};charstring2[7]={“pencil”};charstring3[7]=”pencil”;字符串總是以‘\0’作為串的結(jié)束符,用字符串方式賦值比用字符逐個(gè)賦值要多占一個(gè)字節(jié),用于存放這個(gè)字符結(jié)束標(biāo)志‘\0’

字符數(shù)組——字符串輸入輸出函數(shù)1.字符串輸入輸出函數(shù)字符串輸入輸出函數(shù)包括字符串輸入函數(shù)gets()和字符串輸出函數(shù)puts(),其調(diào)用格式和功能如下表所示:函數(shù)調(diào)用格式功能gets(字符串名)字符串輸入puts(字符串名)字符串輸出

字符數(shù)組——字符串處理函數(shù)

常見(jiàn)的字符串處理函數(shù)包括字符串長(zhǎng)度函數(shù)strlen()、字符串連接函數(shù)strcat()、字符串拷貝函數(shù)strcpy()等,其調(diào)用和功能如下表所示。

函數(shù)調(diào)用格式功能strlen(字符串)檢測(cè)字符串的實(shí)際長(zhǎng)度strcat(字符串1,字符串2)將字符串2連接到字符串1的后面strcpy(字符串1,字符串2)將字符串2復(fù)制給字符串1strlwr(字符串)將字符串中的字母轉(zhuǎn)換成小寫字母strupr(字符串)將字符串中的字母轉(zhuǎn)換成大寫字母strcmp(字符串1,字符串2)將兩個(gè)字符串從左到右逐個(gè)比較字符ASCII碼的大小字符數(shù)組——字符串【例5-5】閱讀下列程序,寫出程序運(yùn)行后的輸出結(jié)果。#include<string.h>#include<stdio.h>main(){chars[3][20]={"2345","123456","2347"};inti,k;for(k=0,i=1;i<3;i++)if(strcmp(s[k],s[i])<0)k=i;puts(s[k]);}字符數(shù)組——字符串【例5-6】輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開(kāi)?!驹创a】#include<stdio.h>main(){charstring[81];inti,num=0;intword=0;charc;gets(string);for(i=0;(c=string[i])!='\0';i++)if(c=='')word=0;elseif(word==0){word=1;num++;}printf("thereare%dwordsintheline.\n",num);}字符數(shù)組——字符串一維數(shù)組2二維數(shù)組3字符數(shù)組4數(shù)組綜合運(yùn)用目錄1數(shù)組綜合運(yùn)用【例5-7】從鍵盤輸入10個(gè)學(xué)生的成績(jī),要求從小到大顯示這些成績(jī)數(shù)組綜合運(yùn)用#include<stdio.h>intmain(){inti,j;floatt,a[10];printf("請(qǐng)輸入學(xué)生的成績(jī):\n");for(i=0;i<10;i++)scanf("%f",&a[i]);for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("\n排序結(jié)果:\n");for(i=0;i<10;i++)printf("%6.1f",a[i]);printf("\n");return0;}數(shù)組綜合運(yùn)用【例5-8】已知某數(shù)組中有9個(gè)元素,按降序排列,再?gòu)慕K端輸入第10個(gè)數(shù),要求將它插入數(shù)組,仍按降序排列。數(shù)組綜合運(yùn)用#include<stdio.h>main(){inti,j,p,n,s,a[10]={27,6,3,28,60,87,105,54,162};for(i=0;i<9;i++){for(j=i+1;j<9;j++)if(a[i]<=a[j])p=a[i],a[i]=a[j],a[j]=p;}printf("輸入?yún)⑴c排序的數(shù)字:");scanf("%d",&n);a[9]=n;for(i=0;i<10;i++)if(a[9]>a[i])p=a[i],a[i]=a[9],a[9]=p;for(i=0;i<10;i++)printf("%d",a[i]);}【例5-9】現(xiàn)有一個(gè)3行3列的數(shù)組,求二維數(shù)組中最大元素值及行列號(hào)數(shù)組綜合運(yùn)用數(shù)組綜合運(yùn)用#include<stdio.h>intmain(){inti,j,x,y,a[3][3];intmax;printf("請(qǐng)輸入9個(gè)數(shù):");f

溫馨提示

  • 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)論