c語言教學第11講_第1頁
c語言教學第11講_第2頁
c語言教學第11講_第3頁
c語言教學第11講_第4頁
c語言教學第11講_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11講

數(shù)組的定義和使用教學目的與要求:掌握一維數(shù)組的定義和引用掌握二維數(shù)組的定義和引用教學內(nèi)容提要:1.一維數(shù)組的定義和引用

2.二維數(shù)組的定義和引用教學重點:一維數(shù)組的定義和引用教學難點:二維數(shù)組的定義和引用教學進度:P139~P151教學過程:1整理ppt數(shù)學中:a1,a2,a3,···,ai,···,anC程序中:a[0],a[1],a[2],···,a[i-1],···a[n-1]數(shù)組是數(shù)目固定,類型相同的若干變量的有序集合。數(shù)組中的每一個數(shù)稱為數(shù)組元素,數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型。在內(nèi)存中數(shù)組占有一段連續(xù)的存儲空間。2整理ppt一、一維數(shù)組1、一維數(shù)組的定義定義的格式:類型說明符數(shù)組名[整常量表達式];說明:

(1)類型說明符:表明該數(shù)組所屬類型,即數(shù)組元素的類型。(2)數(shù)組名:即數(shù)組的名稱,其命名方法同變量名遵循標識符定名規(guī)則。。例如:

inta[10];它表示數(shù)組名為a,此數(shù)組有10個整型元素。3整理ppt(3)[]:下標運算符,可通過該運算符的個數(shù)反映出數(shù)組的維數(shù)。不能用圓括弧,下面用法不對:inta(10);(4)常量表達式:表示元素的個數(shù),即數(shù)組長度。常量表達式中可以包括常量和符號常量,不能包含變量。也就是說,c不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值。例如,下面這樣定義數(shù)組是不行的:特點:數(shù)組元素的個數(shù)必須是確定的數(shù)組元素的類型必須一致4整理ppt下面是合法的數(shù)組定義:①charstr[20];/*定義一個有20個元素的字符型數(shù)組str*/②floatscore[8];/*定義一個有8個元素的浮點型數(shù)組score*/③#defineN5

longdata[N];/*定義一個有5個元素的長整型數(shù)組data*/

shortz[4*N];/*定義了一個有20個元素的短整型數(shù)組z*/其中③的數(shù)組長度使用的是符號常量

下面的定義是非法的:

intn=10;charc[n];/*數(shù)組長度不能使用變量*/charstr[];/*數(shù)組長度不確定*/5整理ppt例:試判斷下列數(shù)組定義是否合法:

intstudent[35]; charname[20]; floatscore[35];#definestudent35 floatn_student[student]; intscore_student[student*3];intperson(10);intn=10,a[n];6整理ppt一維數(shù)組在內(nèi)存中的存放方式:數(shù)組定義以后,編譯系統(tǒng)(計算機)將在內(nèi)存中開辟一塊連續(xù)的存儲單元用于存放數(shù)組元素(數(shù)組元素按數(shù)組下標從小到大連續(xù)存放)。數(shù)組名表示存儲單元的首地址,存儲單元的大小由數(shù)組的類型和數(shù)組的大小決定。例如

inta[5];inta[4]a[3]a[2]a[1]a[0]2字節(jié)2字節(jié)2字節(jié)2字節(jié)2字節(jié)7整理ppt

a代表首地址(數(shù)組起始地址),每個元素字節(jié)數(shù)相同,因此,根據(jù)數(shù)組元素序號可以求得數(shù)組各元素在內(nèi)存的地址,并可對數(shù)組元素進行隨機存取。

數(shù)組元素地址=

數(shù)組名+下標即:數(shù)組元素地址=數(shù)組首地址+元素下標*sizeof(數(shù)組類型)

設(shè)a的首地址為1000,數(shù)組a存儲示意圖如右圖所示1006a[0]a[1]a[2]a[3]a[4]aa+1a+2a+3a+4內(nèi)存1000a[3]的地址=a+3即:a[3]的地址=1000+3×2=10068整理ppt引用方式:數(shù)組名[下標]2、一維數(shù)組元素的引用說明:下界≤下標≤上界;下界=0;上界=整常量表達式-1。下標為整型表達式;

若有定義:inta[5];則數(shù)組a的元素分別為:

a[0]、a[1]、a[2]、a[3]、a[4];但a[5]不是。9整理ppt一維數(shù)組元素引用的規(guī)定:數(shù)組必須先定義后使用。數(shù)組元素只能逐個被引用,不能一次引用整個數(shù)組。對數(shù)組中所有元素逐個引用時,通??墒褂醚h(huán)結(jié)構(gòu)。一個數(shù)組元素實質(zhì)是一個變量,代表內(nèi)存中的一個存儲單元。引用后的數(shù)組變量也稱下標變量。如:a[0]=5;a[3]=a[1]+4;a[’D’-’B’]=3;scanf(“%d”,&a[4]);10整理ppt例1:輸入10個整數(shù),分別按順序和逆序輸出。#include<stdio.h>voidmain(){inti,a[10];

printf("input10numbers:\n");

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

printf("\n");for(i=0;i<=9;i++)printf("%d",a[i]);printf("\n");

for(i=9;i>=0;i--)printf("%d",a[i]);}程序的運行情況:input10numbers:12345678910↙1234567891010987654321注意:

1.循環(huán)控制變量的初值、終值及控制條件。

2.不能整體輸入/出數(shù)組如:printf(“%d”,a);學會如何對數(shù)組進行輸入輸出11整理ppt數(shù)組初始化:指定義數(shù)組時對數(shù)組元素賦以初值。3、一維數(shù)組的初始化格式:類型符數(shù)組名[表達式]={初值表};說明:給全部元素賦初值。inta[5]={0,1,2,3,4};給部分元素賦初值。intb[5]={1,2,3};給全部元素賦初值時可不指定數(shù)組的長度。

inta[]={1,2,3};但若被定義的數(shù)組長度與提供初值的個數(shù)不相同,則數(shù)組長度不能省略。例如,想定義數(shù)組長度為10,就不能省略數(shù)組長度的定義,而必須寫成inta[10]={1,2,3,4,5};只初始化前5個元素,后5個元素為默認值。

12整理ppt例2、數(shù)組初始化與未初始化比較#include<stdio.h>main(){inti,a[5]={3,4,5},b[5];printf(“\narrayais:”)for(i=0;i<5;i++)printf(“%6d”,a[i]);printf(“\narraybis:”)for(i=0;i<5;i++)printf(“%6d”,b[i]);}

運行結(jié)果:

arrayais:34500arraybis:-321398401170454考慮:數(shù)組b

的值的含義?13整理ppt程序如下:

main(){

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]);}}運行結(jié)果如下:

11235813213455891442333776109871597258441816765例1、用數(shù)組來處理求fibonacci數(shù)列問題。4、一維數(shù)組程序舉例14整理ppt#defineN5#include<stdio.h>main(){inti,j,k,max,min;staticinta[5];for(i=0;i<5;i++)scanf("%d",&a[i]);max=min=a[0];/*假定第一個元素既是最大的,也是最小的*/j=k=0;/*對分別記錄最大,最小元素下標的變量j,k初始化*/

for(i=0;i<5;i++){if(max<a[i]){max=a[i];j=i;}/*把當前最大值送max,下標送j*/elseif(min>a[i]){min=a[i];k=i;}}printf("max:a[%d]=%d,min:a[%d]=%d",j,max,k,min);}例2、從鍵盤上輸入5個數(shù),輸出最大、最小的元素以及它們的下標若輸入:823120-10↙輸出為:max:a[2]=312,min:a[4]=-1015整理ppt例3、

將10個人員的考試成績進行分段統(tǒng)計,考試成績放在a數(shù)組中,各分數(shù)段的人數(shù)存到b數(shù)組中:成績?yōu)?0到69的人數(shù)存到b[0]中,成績?yōu)?0到79的人數(shù)存到b[1],成績?yōu)?0到89的人數(shù)存到b[2],成績?yōu)?0到99的人數(shù)存到b[3],成績?yōu)?00的人數(shù)存到b[4],成績?yōu)?0分以下的人數(shù)存到b[5]中。

16整理pptvoidmain(){inti,a[10];staticintb[6];printf("enterthescore:\n");for(i=0;i<10;i++){scanf(“%d”,&a[i]);switch(a[i]/10) {case6:b[0]++;break;case7:b[1]++;break;case8:b[2]++;break;case9:b[3]++;break;case10:b[4]++;break;default:b[5]++;}}printf("theresultis:");for(i=0;i<6;i++)printf("%d\t",b[i]);}17整理ppt二、二維數(shù)組1、二維數(shù)組的定義和引用1)二維數(shù)組的定義格式:類型說明符數(shù)組名[整常量表達式1][整常量表達式2]

例:floata[3][4],b[5][10];

2)存儲方式:二維數(shù)組可看作特殊的一維數(shù)組;

在計算機中二維數(shù)組的元素按行順序存放。例:inta[2][3];它在內(nèi)存情況:18整理ppt3)二維數(shù)組的引用格式:數(shù)組名[下標1][下標2]注意:0≤下標1≤常量表達式1-1;0≤下標2≤常量表達式2-1。例:a[1][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]19整理ppt說明:給全部元素賦初值。

(1)分行初始化。如:

staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)按數(shù)組排列的順序?qū)⑺袛?shù)據(jù)寫在一個花括號內(nèi),如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};2、二維數(shù)組的初始化二維數(shù)組初始化通常是按行進行的。格式:類型符數(shù)組名[表達式1][表達式2]={初值表};20整理ppt說明:給部分元素賦初值。staticinta[3][4]={{,1},{0,6},{0,0,11}};0100060000110給二維數(shù)組的全部元素賦初值,可以不指定第一維的長度,但第二維的長度不能省略。staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

21整理ppt例1、用如下的3×3矩陣初始化數(shù)組a[3][3],求矩陣的轉(zhuǎn)置矩陣。 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9轉(zhuǎn)置矩陣:是將原矩陣元素按行列互換形成的矩陣方法1:轉(zhuǎn)置矩陣是將原矩陣元素按行列互換形成的。 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9方法2:沿主對角線將對稱位置元素互換即可。主對角線22整理ppt#include<stdio.h>main(){intj,k;inta[3][3]={1,2,3,4,5,6,7,8,9},b[3][3];for(j=0;j<3;j++) for(k=0;k<3;k++)b[j][k]=a[k][j];for(j=0;j<3;j++){for(k=0;k<3;k++) printf(“%6d”,b[j][k]); printf(“\n”);}} 23整理ppt例2:在N行M列的二維數(shù)組x中,找出數(shù)組的最大值以及此最大值所在的行、列下標。#defineN2#defineM3#include"stdio.h"voidmain(){inti,j,x[N][M],max,line,col;printf("inputarraynumbers:\n");for(i=0;i<N;i++)for(j=0;j<M;j++) scanf("%d",&x[i][j]);max=x[0][0];line=col=0;for(i=0;i<N;i++)for(j=0;j<M;j++)if(max<x[i][j]){max=x[i][j];line=i;c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論