一維數(shù)組課件《C語言程序設(shè)計(jì)》同步教學(xué)_第1頁
一維數(shù)組課件《C語言程序設(shè)計(jì)》同步教學(xué)_第2頁
一維數(shù)組課件《C語言程序設(shè)計(jì)》同步教學(xué)_第3頁
一維數(shù)組課件《C語言程序設(shè)計(jì)》同步教學(xué)_第4頁
一維數(shù)組課件《C語言程序設(shè)計(jì)》同步教學(xué)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語言程序設(shè)計(jì)

2023翻轉(zhuǎn)課堂實(shí)用教程7.1一維數(shù)組1234導(dǎo)入數(shù)組導(dǎo)入案例數(shù)組的定義引用初始化存儲(chǔ)方式知識(shí)點(diǎn)數(shù)組的使用案例案例分析練習(xí)數(shù)組的使用練習(xí)題導(dǎo)入案例(1)案例7.1.1:輸入5個(gè)整數(shù),分別表示5名應(yīng)屆畢業(yè)生的月薪,計(jì)算并輸出這5名應(yīng)屆畢業(yè)生的平均月薪(小數(shù)點(diǎn)后保留2位小數(shù))。解決步驟:(1)采用循環(huán)求和方式計(jì)算出總和,(2)然后除以個(gè)數(shù)就可以得到平均值。注意:在計(jì)算平均數(shù)時(shí)建議用實(shí)數(shù)類型保存和,這樣在用和除以個(gè)數(shù)時(shí)得到的均值也是實(shí)數(shù)。導(dǎo)入案例(1)#include<stdio.h>intmain(){ inti,salary; doubleaverage,sum=0; for(i=0;i<5;i++){ scanf("%d",&salary); sum=sum+salary; } average=sum/5; printf("%.2f",average); return0;}輸入數(shù)據(jù):70008100750069007300輸出數(shù)據(jù):7360.00運(yùn)行結(jié)果案例7.1.1程序代碼導(dǎo)入案例(2)案例7.1.2:輸入5個(gè)整數(shù),分別表示5名應(yīng)屆畢業(yè)生的月薪,計(jì)算并輸出這5名應(yīng)屆畢業(yè)生的平均月薪(小數(shù)點(diǎn)后保留兩位小數(shù)),以及高于平均月薪的工資數(shù)。本例題要求輸出所有大于平均月薪的工資數(shù),此時(shí)就需要保存輸入的所有月薪,等平均值月薪計(jì)算出來后,再將高于平均月薪的工資數(shù)輸出。導(dǎo)入案例(2)intmain(){inti,salary1,salary2,salary3,salary4,salary5;doubleaverage,sum=0;scanf("%d",&salary1);scanf("%d",&salary2);scanf("%d",&salary3);scanf("%d",&salary4);scanf("%d",&salary5);sum=sum+salary1+salary2+salary3+salary4+salary5;average=sum/5;printf("平均月薪為:%.2f\n",average);printf("高于平均月薪的工資數(shù)為:");if(salary1>average)printf("%d\n",salary1);if(salary2>average)printf("%d\n",salary2);if(salary3>average)printf("%d\n",salary3);if(salary4>average)printf("%d\n",salary4);if(salary5>average)printf("%d\n",salary5);return0;}輸入:70006500710068007000輸出:平均月薪為:6880.00高于平均月薪的工資數(shù)為:700071007000運(yùn)行結(jié)果案例7.1.2程序代碼如果此時(shí)應(yīng)屆畢業(yè)生人數(shù)由5名變?yōu)?0名、100名,如何解決?7.1.1一維數(shù)組知識(shí)點(diǎn)數(shù)組:若干相同類型的數(shù)據(jù)的集合數(shù)組中每一個(gè)數(shù)據(jù)叫做數(shù)組元素。元素均具有相同的數(shù)據(jù)類型,具有統(tǒng)一的變量名即數(shù)組名,并用不同編號(hào)來區(qū)分每個(gè)元素。數(shù)組的概念可以等同于班級(jí)中的小組,假如小組1有10名學(xué)生,為這10名學(xué)生依次編號(hào)為0、1、2...9,用小組1的0號(hào)學(xué)生、小組1的1號(hào)學(xué)生…小組1的9號(hào)學(xué)生就可以找到這10名學(xué)生。1、一維數(shù)組的定義一維數(shù)組的定義方式為:

數(shù)據(jù)類型名數(shù)組名[數(shù)組長(zhǎng)度];舉例://定義一個(gè)含有10個(gè)整型數(shù)據(jù)的數(shù)組arrayintarray[10];//定義一個(gè)含有20個(gè)雙精度浮點(diǎn)型數(shù)據(jù)的數(shù)組numdoublenum[20];//定義一個(gè)含有30個(gè)字符型數(shù)據(jù)的數(shù)組strcharstr[30];7.1.1一維數(shù)組知識(shí)點(diǎn)每個(gè)元素的類型整型常量,指出元素個(gè)數(shù),稱為數(shù)組長(zhǎng)度合法標(biāo)識(shí)符在定義數(shù)組時(shí),[]方括號(hào)中的數(shù)值是數(shù)組中元素的個(gè)數(shù)2、一維數(shù)組的引用一維數(shù)組中各個(gè)元素的引用方式:

數(shù)組名[元素的下標(biāo)];7.1.1一維數(shù)組知識(shí)點(diǎn)(1) 先定義,再引用。(2) 數(shù)組中按照元素的順序,從0開始為每個(gè)元素進(jìn)行編號(hào),這個(gè)編號(hào)稱為下標(biāo),合理的下標(biāo)取值依次為:0、1...(數(shù)組長(zhǎng)度-1),分別對(duì)應(yīng)著數(shù)組中第一個(gè)元素、第二個(gè)元素...最后一個(gè)元素。(3) 下標(biāo)也可以為整型表達(dá)式,其取值范圍為[0,數(shù)組長(zhǎng)度-1],不在這個(gè)范圍內(nèi)的下標(biāo)值為越界,越界會(huì)導(dǎo)致溢出。上溢或者下溢會(huì)導(dǎo)致程序出現(xiàn)不可預(yù)料的錯(cuò)誤。(4) 只能逐個(gè)引用數(shù)組元素,不能一次性引用整個(gè)數(shù)組。對(duì)數(shù)組元素的引用是自由的,通過數(shù)組名和元素下標(biāo)即可唯一確定一個(gè)數(shù)組元素。在引用時(shí),[]方括號(hào)中數(shù)值給出了將要引用的元素的下標(biāo)值。7.1.1一維數(shù)組知識(shí)點(diǎn)以下關(guān)于數(shù)組的說法,不正確的選項(xiàng)為:引用數(shù)組元素時(shí),數(shù)組下標(biāo)可以是整形常量或者整形表達(dá)式2、一維數(shù)組的引用一維數(shù)組中各個(gè)元素的引用方式:

數(shù)組名[元素的下標(biāo)];7.1.1一維數(shù)組知識(shí)點(diǎn)舉例: intarray[10];array[0]、array[1]、array[2]、array[3]、array[4]、array[5]、array[6]、array[7]、array[8]、array[9]

0

1

2

3

4

5

6

7

8

97.1.1一維數(shù)組知識(shí)點(diǎn)現(xiàn)定義了一維數(shù)組inta[4];關(guān)于數(shù)組元素的引用,正確的選項(xiàng)為:3、一維數(shù)組的初始化(1)在定義數(shù)組時(shí)初始化

數(shù)據(jù)類型名數(shù)組名[數(shù)組長(zhǎng)度]={元素初值表};7.1.1一維數(shù)組知識(shí)點(diǎn)在定義數(shù)組時(shí),根據(jù)元素初值表中給出的元素的個(gè)數(shù),分三種情況為數(shù)組進(jìn)行初始化:①元素初值表給出所有元素值②元素初值表只給出部分元素值③沒有元素初值表3、一維數(shù)組的初始化(1)在定義數(shù)組時(shí)初始化

數(shù)據(jù)類型名數(shù)組名[數(shù)組長(zhǎng)度]={元素初值表};7.1.1一維數(shù)組知識(shí)點(diǎn)①元素初值表給出所有元素值賦值的原則為:將初始表中給出的初值依次賦值給全部數(shù)組元素。舉例:intarray[10]={1,2,3,4,5,6,7,8,9,10};等價(jià)于a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10。若對(duì)所有元素賦值,可以省略數(shù)組長(zhǎng)度,但不建議省略元素初值表中的初值個(gè)數(shù)不能超過數(shù)組長(zhǎng)度。3、一維數(shù)組的初始化(1)在定義數(shù)組時(shí)初始化

數(shù)據(jù)類型名數(shù)組名[數(shù)組長(zhǎng)度]={元素初值表};7.1.1一維數(shù)組知識(shí)點(diǎn)②元素初值表只給出部分元素值賦值的原則為:將初始表中給出的初值依次賦值給數(shù)組元素,其余元素自動(dòng)賦值為0。舉例:intnum[10]={1,2,3};等價(jià)于num[0]=1,num[1]=2,num[2]=3,num[3]~num[9]均為0。如何給全部元素賦初值為0intnum[10]={0};3、一維數(shù)組的初始化(1)在定義數(shù)組時(shí)初始化

數(shù)據(jù)類型名數(shù)組名[數(shù)組長(zhǎng)度]={元素初值表};7.1.1一維數(shù)組知識(shí)點(diǎn)③沒有元素初值表分兩種情況:普通數(shù)組intgrade[10];//動(dòng)態(tài)數(shù)組,所有元素的值是一個(gè)隨機(jī)值。定義時(shí)加上static關(guān)鍵字的靜態(tài)數(shù)組staticintgrade[10];//若沒有對(duì)靜態(tài)數(shù)組元素賦初值,所有元素自動(dòng)被賦初值0。3、一維數(shù)組的初始化(2)在定義數(shù)組后,單獨(dú)對(duì)數(shù)組元素賦值7.1.1一維數(shù)組知識(shí)點(diǎn)賦值的原則為:此時(shí)需要挨個(gè)為數(shù)組元素賦值。舉例:①

intgrade[10];

grade[0]=80,grade[1]=90,grade[2]=85,grade[3]=75;

其他沒有賦值的元素,其值為隨機(jī)值。②for(i=0;i<10;i++) scanf("%d",&grade[i]);//是否正確?intscore[20];score[20]={80,90};4、一維數(shù)組的存儲(chǔ)方式系統(tǒng)根據(jù)每個(gè)元素的數(shù)據(jù)類型、元素的個(gè)數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識(shí)點(diǎn)舉例

intarray[10]={1,2,3,4,5,6,7,8,9,10};4、一維數(shù)組的存儲(chǔ)方式系統(tǒng)根據(jù)每個(gè)元素的數(shù)據(jù)類型、元素的個(gè)數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識(shí)點(diǎn)舉例

intarray[10]={1,2,3,4,5,6,7,8,9,10};內(nèi)存單元下標(biāo)01234567894、一維數(shù)組的存儲(chǔ)方式系統(tǒng)根據(jù)每個(gè)元素的數(shù)據(jù)類型、元素的個(gè)數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識(shí)點(diǎn)舉例

intarray[10]={1,2,3,4,5,6,7,8,9,10};內(nèi)存單元12345678910下標(biāo)01234567894、一維數(shù)組的存儲(chǔ)方式系統(tǒng)根據(jù)每個(gè)元素的數(shù)據(jù)類型、元素的個(gè)數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識(shí)點(diǎn)舉例

intarray[10]={1,2,3,4,5,6,7,8,9,10};數(shù)組引用a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]內(nèi)存單元12345678910下標(biāo)0123456789整形數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),若首地址為80004、一維數(shù)組的存儲(chǔ)方式系統(tǒng)根據(jù)每個(gè)元素的數(shù)據(jù)類型、元素的個(gè)數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識(shí)點(diǎn)舉例

inta[10]={1,2,3,4,5,6,7,8,9,10};數(shù)組引用a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]內(nèi)存單元12345678910下標(biāo)0123456789地址信息8000808480888092809681008104810881128116整形數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),若首地址為8000案例分析一維數(shù)組的編程方法7.1.4分析一維世界中新冠病毒感染情況7.1.5在一系列數(shù)據(jù)中刪除第k個(gè)數(shù)據(jù)演示數(shù)組中每個(gè)元素的賦值和輸出方法演示查找某個(gè)數(shù)據(jù),并刪除數(shù)組中元素的方法。下標(biāo)作為循環(huán)變量,采用循環(huán)結(jié)構(gòu)對(duì)數(shù)組進(jìn)行操作巧用數(shù)組下標(biāo),簡(jiǎn)化問題解決。演示下標(biāo)的其他用處,如坐標(biāo)點(diǎn)。7.1.2一維數(shù)組案例分析7.1.3放射加密方法對(duì)一系列數(shù)據(jù)進(jìn)行加密案例7.1.3:用放射加密方法對(duì)一系列數(shù)據(jù)進(jìn)行加密,并輸出加密后的數(shù)據(jù)。要求:輸入10個(gè)數(shù)據(jù),保存到數(shù)組中,并采用放射加密法對(duì)每個(gè)數(shù)據(jù)進(jìn)行加密,最后輸出加密后的10個(gè)數(shù)據(jù)。加密的公式:加密后數(shù)據(jù)=(7*數(shù)據(jù)+21)%26。問題分析:定義整型數(shù)組num保存這10個(gè)數(shù)據(jù),數(shù)組長(zhǎng)度定為10,定義i作為數(shù)組的下標(biāo),并將數(shù)組的下標(biāo)i作為循環(huán)變量,通過循環(huán)變量i從0變到n-1,來逐個(gè)訪問數(shù)組中的a[0]到a[n-1],并對(duì)其進(jìn)行相應(yīng)的操作。7.1.2一維數(shù)組案例分析#include<stdio.h>#defineN10/*定義符號(hào)常量N為10,后續(xù)代碼N的地方*/intmain(void){inti;/*i既作為數(shù)組下標(biāo),又作為循環(huán)變量*/intnum[N]={50,34,40,68,60,45,39,47,51,30};for(i=0;i<N;i++){num[i]=(7*num[i]+21)%26;

}

printf("放射加密后的數(shù)據(jù)為:\n");for(i=0;i<N;i++){printf("%d",num[i]);}return0;}放射加密后的數(shù)據(jù)為:72515325248121423運(yùn)行結(jié)果案例7.1.3程序代碼7.1.2一維數(shù)組案例分析案例7.1.4:分析一維世界中新冠病毒感染情況要求:從2019年12月開始,新冠病毒在全球傳播開來,該病毒傳染性極強(qiáng),只要某人與攜帶了該病毒的感染者在活動(dòng)范圍內(nèi)有交集,則有被感染的可能。為了簡(jiǎn)化運(yùn)算,假設(shè)人生活在一維世界中,Ta到過的地方為一個(gè)區(qū)間[begin,end],其中0≤begin≤end≤200。假設(shè)有二個(gè)人,A、B,其中A為新冠病毒感染者,B為健康者,依次給出4個(gè)整數(shù)beginAendAbeginBendB,分別為這A、B二人的活動(dòng)區(qū)間,請(qǐng)分析B是否有被感染的可能。7.1.2一維數(shù)組案例分析案例7.1.4:分析一維世界中新冠病毒感染情況問題分析:在一維世界中,人的活動(dòng)范圍為[0,200],共201個(gè)點(diǎn),定義intmark[201]={0}來記錄這201點(diǎn)是否為感染者的活動(dòng)點(diǎn)。假設(shè)0≤i≤200,若mark[i]=0,表示i這個(gè)點(diǎn)不是感染者的活動(dòng)點(diǎn),若mark[i]=1,表示i這個(gè)點(diǎn)是感染者的活動(dòng)點(diǎn)。7.1.2一維數(shù)組案例分析O感染者A的活動(dòng)范圍beginAendAmark[beginA]~mark[endA]賦值為1beginBendBB循環(huán)判斷mark[beginB]~mark[endB]中的值是否有1的情況#include<stdio.h>intmain(){intn,m,i,j,flag=0;//flag為0表示未被感染intbeginA,endA,beginB,endB;intmark[201]={0};//用于在0到200這些坐標(biāo)點(diǎn)標(biāo)記scanf("%d%d%d%d",&beginA,&endA,&beginB,&endB);//標(biāo)記A活動(dòng)過的坐標(biāo)點(diǎn)for(i=beginA;i<=endA;i++){mark[i]=1;

//表示i這個(gè)坐標(biāo)點(diǎn)為A感染者的活動(dòng)點(diǎn)。}for(j=beginB;j<=endB;j++){/*若j這個(gè)坐標(biāo)點(diǎn)已經(jīng)被標(biāo)記為1,說明B的活動(dòng)點(diǎn)j是A感染者活動(dòng)的點(diǎn)*/if(mark[j]==1){flag=1;//可能被感染時(shí)flag置為1break;}}if(flag==1)//通過flag的值來判斷B是否可能被感染printf("B有可能被感染!");elseprintf("B暫無可能被感染!");return0;}運(yùn)行結(jié)果1:5068345B暫無可能被感染!運(yùn)行結(jié)果2:23453490B有可能被感染!運(yùn)行結(jié)果案例7.1.4程序代碼數(shù)組的下標(biāo)還可以有其他的含義,比如坐標(biāo)點(diǎn)。解決某些實(shí)際問題時(shí),好好利用下標(biāo),會(huì)簡(jiǎn)化問題的求解。7.1.2一維數(shù)組案例分析#include<stdio.h>intmain(){intn,m,i,j,flag=0;//flag為0表示未被感染intbeginA,endA,beginB,endB;intmark[201]={0};//用于在0到200這些坐標(biāo)點(diǎn)標(biāo)記scanf("%d%d%d%d",&beginA,&endA,&beginB,&endB);//標(biāo)記A活動(dòng)過的坐標(biāo)點(diǎn)for(i=beginA;i<=endA;i++){mark[i]=1;

//表示i這個(gè)坐標(biāo)點(diǎn)為A感染者的活動(dòng)點(diǎn)。}for(j=beginB;j<=endB;j++){/*若j這個(gè)坐標(biāo)點(diǎn)已經(jīng)被標(biāo)記為1,說明B的活動(dòng)點(diǎn)j是A感染者活動(dòng)的點(diǎn)*/if(mark[j]==1){flag=1;//可能被感染時(shí)flag置為1break;}}if(flag==1)//通過flag的值來判斷B是否可能被感染printf("B有可能被感染!");elseprintf("B暫無可能被感染!");return0;}運(yùn)行結(jié)果1:5068345B暫無可能被感染!運(yùn)行結(jié)果2:23453490B有可能被感染!運(yùn)行結(jié)果案例7.1.4程序代碼數(shù)組的下標(biāo)還可以有其他的含義,比如坐標(biāo)點(diǎn)。解決某些實(shí)際問題時(shí),好好利用下標(biāo),會(huì)簡(jiǎn)化問題的求解。7.1.2一維數(shù)組案例分析案例7.1.5:在一系列數(shù)據(jù)中刪除第k個(gè)數(shù)據(jù)要求:輸入10個(gè)整數(shù),將其保存到數(shù)組中。再輸入一個(gè)要?jiǎng)h除數(shù)據(jù)的下標(biāo)index(從0開始),若該index值合法(0~9),則將該位置的數(shù)據(jù)從數(shù)組中刪除,不合法則不執(zhí)行任何操作。問題分析:定義長(zhǎng)度為10的arr數(shù)組來保存10個(gè)數(shù)據(jù),i作為數(shù)組的下標(biāo),index來保存要?jiǎng)h除數(shù)據(jù)的下標(biāo)值,刪除了該下標(biāo)處的數(shù)據(jù)后,該位置后面的數(shù)據(jù)要往前移動(dòng)。7.1.2一維數(shù)組案例分析#include<stdio.h>intmain(){intarr[10]={0};intindex,i;for(i=0;i<=9;i++)scanf("%d",&arr[i]);scanf("%d",&index);if(index>=0&&index<=9){//先輸出最開始的數(shù)組printf("原始數(shù)組為:\n");for(i=0;i<=9;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論