《C語(yǔ)言程序設(shè)計(jì)》 課件 蔡玲芳 第六章 數(shù)組_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 蔡玲芳 第六章 數(shù)組_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 蔡玲芳 第六章 數(shù)組_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 蔡玲芳 第六章 數(shù)組_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》 課件 蔡玲芳 第六章 數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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ù)組的定義與初始化1.一維數(shù)組的定義類型說(shuō)明符數(shù)組名[正整型常量表達(dá)式]

;類型說(shuō)明符:數(shù)組的類型。數(shù)組名同變量名命名規(guī)則相同。常量表達(dá)式指明數(shù)組中元素個(gè)數(shù),必須大于零。可以是數(shù)值常量、符號(hào)常量和字符常量。說(shuō)明floatmark[100]; char str[200];int a[10];例如:1.一維數(shù)組的定義存儲(chǔ)學(xué)生成績(jī)用實(shí)型數(shù)組例如:mark[100],存儲(chǔ)一行文字用字符數(shù)組str[200],存儲(chǔ)一個(gè)4*6的矩陣用二維整型數(shù)組a[4][6]。其中mark、str、a是數(shù)組名。方括號(hào)內(nèi)是數(shù)組的長(zhǎng)度。下標(biāo)的個(gè)數(shù)稱為數(shù)組的維數(shù),mark、str是一維數(shù)組、a是二維數(shù)組。數(shù)組的成員稱為數(shù)組元素。數(shù)組元素的類型稱為該數(shù)組的基類型。數(shù)組mark的基類型是float,數(shù)組str的基類型是char。1.一維數(shù)組的定義說(shuō)明:(1)數(shù)組名后是用方括號(hào)而不是圓括號(hào)。(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個(gè)數(shù)。必須是大于零的常量。如:inta[0],d(6);/*錯(cuò)誤*/intb[-8];/*錯(cuò)誤*/intc[2+3];/*正確*/1.一維數(shù)組的定義(3)C語(yǔ)言中不允許使用變量對(duì)數(shù)組的大小進(jìn)行定義。數(shù)組的說(shuō)明語(yǔ)句必須在可執(zhí)行語(yǔ)句之前。#define N 5int a[N];int n;scanf(“%d” , &n );{int

a[n];……}int

n=10,a[n];2.一維數(shù)組的初始化在數(shù)組定義時(shí)為數(shù)組元素賦初值稱為數(shù)組初始化。(1)對(duì)全部元素初始化。方法:將初值依次寫在花括號(hào){}內(nèi)。如:

inta[5]={2,4,6,

8,10

};存儲(chǔ)形式:存儲(chǔ)單元2.一維數(shù)組的初始化(2)給數(shù)組中部分元素賦初值,其他元素按零值處理。例int

a[9]={1,2};則a[0]=1, a[1]=2,a[2]~a[8]值全為0。(3)對(duì)數(shù)組元素全部賦值可以不指定長(zhǎng)度。例int a[]={0,1,2,3,5};等價(jià)于:int

a[5]={0,1,2,3,5};(4)一維數(shù)組賦初值的個(gè)數(shù)不能超過(guò)數(shù)組總元素的個(gè)數(shù)。例int

a[3]={1,2,3,4};語(yǔ)法錯(cuò)!感謝觀看一維數(shù)組的引用引用C語(yǔ)言規(guī)定,只能引用單個(gè)數(shù)組元素,不能一次引用整個(gè)數(shù)組。數(shù)組元素的引用形式: 數(shù)組名[下標(biāo)] 如a[3]下標(biāo)指出在數(shù)組中第幾個(gè)元素下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:a[3]=a[0] +a[i+1];下標(biāo)的值是數(shù)組元素的序號(hào),且從0開始,直到n-1.int a[10], 說(shuō)明數(shù)組a一共有10個(gè)元素,起始值是0。數(shù)組a的10個(gè)元素分別是:a[0]、a[1]、…、a[9]。注意區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用。一維數(shù)組的輸入輸出可以對(duì)數(shù)組中任何一個(gè)元素進(jìn)行單獨(dú)的輸入輸出,每個(gè)元素等同于一個(gè)普通變量。數(shù)組的引用離不開循環(huán)。將數(shù)組的下標(biāo)作為循環(huán)變量,通過(guò)循環(huán),就可以對(duì)數(shù)組的所有元素逐個(gè)進(jìn)行處理。(1)數(shù)組元素輸入main(){ charas[26];inti

;for(i=0;i<26;i++)scanf("%c",&as[i]);…...}(2)⑵

數(shù)組元素輸出main(){charas[26];inti

;for(i=0;i<26;

i++)printf("%c",as[i]);…...}控制下標(biāo)是關(guān)鍵引用數(shù)組元素的注意事項(xiàng):數(shù)組中的每個(gè)元素在功能上等價(jià)于一個(gè)一般的變量x。例如:輸入100個(gè)學(xué)生成績(jī),并求出總成績(jī)。float x, sum=0; 簡(jiǎn)單變量for (i=0; i<100; i++){ scanf(”%f”, &x);sum += x;}float m[100],sum=0;for ( i=0; i<100; i++ ){ scanf(”%f”, &m[i]);sum += m[i];}數(shù)組方式優(yōu)點(diǎn):數(shù)據(jù)重用數(shù)據(jù)有序856385148summ[0]m[1]m[2]m[99]82

85

63

78 9085148226316sum

7950827950下標(biāo)與地址的關(guān)系[]為下標(biāo)運(yùn)算符,數(shù)組名、數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù)。數(shù)組名是數(shù)組的首地址,是一個(gè)地址常量。數(shù)組元素則是數(shù)值。引用數(shù)組元素時(shí),根據(jù)首地址和下標(biāo),自動(dòng)計(jì)算出該元素的實(shí)際地址,取出該地址的內(nèi)容進(jìn)行操作。如引用

mark[2]:(1)計(jì)算2000+2*4=2008(2)取出2008的內(nèi)容2000H86.5mark[0]2004H92.0mark[1]2008H77.5mark[2]200CH52.0mark[3]218CH94.0mark[99]如何使兩個(gè)數(shù)組的值相等解決方法:方法1:

逐個(gè)元素賦值b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];方法2:

通過(guò)循環(huán)賦值int i;for

(i=0;i<4;i++){b[i]=

a[i];}原因:數(shù)組名b表示數(shù)組的首地址,即b[0]的地址,其值不可改變,不能被賦值!main(){inta[4]={1,2,3,4},

b[4];b=

a;}如何使兩個(gè)數(shù)組的值相等從鍵盤上輸入10個(gè)實(shí)型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個(gè)數(shù)。例#include

<stdio,h>main(){float

a[10];int

i;for(i=0;i<10;

i++)scanf("%f",&a[i]);for(i=9;i>=0;i--)printf("%10.2f",a[i]);}對(duì)數(shù)組元素賦值逆序輸出數(shù)組元素[例] 從鍵盤上輸入10個(gè)數(shù),求出其中最大值并輸出。算法分析:采用打擂臺(tái)的方法,先把10個(gè)數(shù)存在數(shù)組中。任意指定某數(shù)為擂主,然后擂主依次與其他數(shù)比較,若某數(shù)大于擂主,則該數(shù)為擂主。循環(huán)結(jié)束,擂主一定是最大的數(shù)。例:

#include<stdio.h

>main(){int

a[10],i,max;for(i=0;i<10;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<10;i++)if(a[i]>max)

max=a[i];printf("max=%d\n",max);}指定第1個(gè)元素為擂主感謝觀看二維數(shù)組的定義與初始化1.二維數(shù)組的定義定義二維數(shù)組的一般方式:類型說(shuō)明符

數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];第一個(gè)下標(biāo)表示行數(shù)第二個(gè)下標(biāo)表示列數(shù)Inta[3][3];例a

a00a01a02a10a11a12a20a21a221.二維數(shù)組的定義存儲(chǔ)形式:二維數(shù)組在內(nèi)存中按行的順序存放,即先存放第一行的元素,再存放第二行的元素。

例:Floata[3][4];1.二維數(shù)組的定義

說(shuō)明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)組全部類似。二維數(shù)組定義中的常見錯(cuò)誤①

int

a[0][3];用于定義數(shù)組長(zhǎng)度的常量表達(dá)式的值必須是大于0的正整數(shù)。②

int i=3 , j=4 ;

int a[i][j];定義數(shù)組元素的個(gè)數(shù)必須使用常量表達(dá)式,而不能使用變量。2.二維數(shù)組的初始化分行給二維數(shù)組賦初值。(1)將所有數(shù)據(jù)寫在一個(gè){

}內(nèi),按順序賦值。(2)如:int

a[2][3]={{2,3,1},{1,2,3}};

2

3

1

a

1 2 3即按數(shù)組元素在內(nèi)存中排列的順序賦初值。如:int

a[2][3]={2,3,1,1,2,3};2.二維數(shù)組的初始化對(duì)部分元素賦值(3)inta[3][3]={{1},{

},{0,0,1}};相當(dāng)矩陣int

a[2][3]={{5,6},{7,8}};相當(dāng)矩陣:

5 6 0

8

70

0

5 6 7

8 0

int

a[3][3]={{1},{0,1},{0,0,1}};相當(dāng)矩陣:int

a[2][3]={5,6,7,8};相當(dāng)矩陣:1000100011000000012.二維數(shù)組的初始化對(duì)數(shù)組全部元素賦初值(4)第一個(gè)下標(biāo)可省略,但第二個(gè)下標(biāo)不可省略。

例:a[3][4]={{0,1,3,1},{2,1,0,2},{1,1,2,0}};可寫成a[][4]={0,1,3,1,2,1,0,2,1,1,2,0};感謝觀看二維數(shù)組的引用

二維數(shù)組的引用與引用一維數(shù)組元素一樣,也用下標(biāo)法引用二維數(shù)組元素。

二維數(shù)組元素表示形式:數(shù)組名[下標(biāo)1][下標(biāo)2]下標(biāo)1和下標(biāo)2是整型常量、整型變量或整型表達(dá)式。其編號(hào)從0開始的。注意下標(biāo)不要越界!276.3.2二維數(shù)組的引用例:若

inta[2*5][3*4],i=15;則使用

a[3*3][0],a[1][i-5]都是合法的。說(shuō)明:數(shù)組名a代表的是數(shù)組a在內(nèi)存中的首地址,可以用數(shù)組名a來(lái)代表數(shù)組元素a[0][0]的地址。數(shù)組名是常量,不可對(duì)它賦值。286.3.2二維數(shù)組的引用inta[2][3],i,j;for(i=0;i<2;i++)for(j=0;j<3;

j++)scanf("%d",

&a[i][j]);29inta[2][3],i,j;for(i=0;i<2;i++)for(j=0;j<3;

j++)printf("%5d",

a[i][j]);二維數(shù)組的輸入和輸出:采用兩重循環(huán)方式進(jìn)行。1. 二維數(shù)組的輸入 2. 二維數(shù)組的輸出6.3.2二維數(shù)組的引用感謝觀看二維數(shù)組程序示例[例1]

將一個(gè)矩陣a

2×3轉(zhuǎn)置存到另一個(gè)矩陣b

3×2中。

3 6

1 2 3

4 5 6

a

b

2

5

1 4

分析:用數(shù)組a、b分別代表矩陣a、b;a

數(shù)組的行數(shù)必須要等于b

數(shù)組的列數(shù)。執(zhí)行:b[j][i]=a[i][j];

即可完成轉(zhuǎn)換。涉及到兩個(gè)下標(biāo)的,一般用兩重循環(huán)。6.3.3二維數(shù)組程序示例#include<stdio.h

>intmain(

){int

a[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(“arraya:\n”);for(i=0;i<2;

i++){ for(j=0;j<3;

j++){printf("%5d",

a[i][j]);b[j][i]=a[i][j];

}printf("\n");}printf("arrayb:

\n");for(i=0;i<3;

i++){ for(j=0;j<2;j++)printf("%5d",b[i][j]);printf("\n");

}return

0;}

運(yùn)行結(jié)果如下:array

a:1 2 34 5 6array

b:1 42 53 633#include<stdio.h

>intmain(

){ inti,j,row=0,colum=0,

max;int

a[3][4]={{1,2,3,4},{9,7,4,6},{-1,2,0,8}};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; colum=j;}printf("max=%d,row=%d,colum=%d\n",max,row,colum);return0;}運(yùn)行結(jié)果:

max=9,row=1,colum=0[例2] 求3×4矩陣中最大元素的值及其所在行和列號(hào)。

8

1 2

1 2 3 4

a

9 7 4 6

0[例3] 求方陣A4*4的轉(zhuǎn)置陣,并將該轉(zhuǎn)置陣輸出array

a:1 2 3 45 6 7 89 10 11 1213 14 15 16rotated

a:1 5 9 132 6 10 143 7 11 154 8 12 16矩陣轉(zhuǎn)置算法1:for(i=0;i<4-1;i++)for(j=i+1;j<4;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; }矩陣轉(zhuǎn)置算法2:for(i=1;i<4;i++)for(j=0;j<i;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}程序運(yùn)行演示感謝觀看字符數(shù)組的定義用來(lái)存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。 C語(yǔ)言用字符數(shù)組存放字符串,字符數(shù)組中的各元素依次存放字符串的各字符。格式:char

數(shù)組名[常量表達(dá)式]例:char

c[6];C 數(shù)組具有6個(gè)元素,可以存放長(zhǎng)度等于或小于5的字符串。6.4.1字符數(shù)組的定義CHINA\039強(qiáng)調(diào):字符串實(shí)際占有單元的數(shù)量等于字符串長(zhǎng)度+1。定義時(shí)應(yīng)注意考慮元素總個(gè)數(shù)應(yīng)比實(shí)際長(zhǎng)度多1。字符串的存儲(chǔ)例:char

c[6]=“CHINA”;該數(shù)組在計(jì)算機(jī)中存儲(chǔ)的形式為串長(zhǎng)=5c[0] c[1] c[2] c[3] c[4] c[5]感謝觀看字符數(shù)組的初始化CHINA\042c[0]c[1]c[2]c[3]c[4]c[5]1.用單個(gè)字符對(duì)字符數(shù)組初始化例如:charc[6]={‘C’,‘H’,‘I’,‘N’,‘A’,’\0’};把5個(gè)字符分別賦給c[0]到c[4]。在內(nèi)存中存放情況:串長(zhǎng)=56.4.2字符數(shù)組的初始化說(shuō)明:43(1)

初值的個(gè)數(shù)不能超過(guò)數(shù)組元素的個(gè)數(shù),否則語(yǔ)法錯(cuò)初值的個(gè)數(shù)小于數(shù)組長(zhǎng)度,系統(tǒng)自動(dòng)添入結(jié)束符‘\0’

初值的個(gè)數(shù)與數(shù)組元素相等,定義時(shí)可省略長(zhǎng)度

因字符串常量自動(dòng)加\0,因此常人為地在字符數(shù)組后加一個(gè)‘\0’。2. 用字符串常量對(duì)字符數(shù)組初始化:[例]44(1)charch[6]={"CHINA"};(2)charch[6]="CHINA";/* 省略 { } */(3)charch[]

="CHINA";/*

省略長(zhǎng)度值

*/(4)chard[12]="How are you"與 char

d[]={‘H’,’o’,’w’,‘

‘,’a’,’r’,’e’,‘

‘,’y’,’o’,’u

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論