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

下載本文檔

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

文檔簡介

C語言程序設(shè)計

2023翻轉(zhuǎn)課堂實用教程7.1一維數(shù)組1234導(dǎo)入數(shù)組導(dǎo)入案例數(shù)組的定義引用初始化存儲方式知識點數(shù)組的使用案例案例分析練習(xí)數(shù)組的使用練習(xí)題導(dǎo)入案例(1)案例7.1.1:輸入5個整數(shù),分別表示5名應(yīng)屆畢業(yè)生的月薪,計算并輸出這5名應(yīng)屆畢業(yè)生的平均月薪(小數(shù)點后保留2位小數(shù))。解決步驟:(1)采用循環(huán)求和方式計算出總和,(2)然后除以個數(shù)就可以得到平均值。注意:在計算平均數(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運行結(jié)果案例7.1.1程序代碼導(dǎo)入案例(2)案例7.1.2:輸入5個整數(shù),分別表示5名應(yīng)屆畢業(yè)生的月薪,計算并輸出這5名應(yīng)屆畢業(yè)生的平均月薪(小數(shù)點后保留兩位小數(shù)),以及高于平均月薪的工資數(shù)。本例題要求輸出所有大于平均月薪的工資數(shù),此時就需要保存輸入的所有月薪,等平均值月薪計算出來后,再將高于平均月薪的工資數(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運行結(jié)果案例7.1.2程序代碼如果此時應(yīng)屆畢業(yè)生人數(shù)由5名變?yōu)?0名、100名,如何解決?7.1.1一維數(shù)組知識點數(shù)組:若干相同類型的數(shù)據(jù)的集合數(shù)組中每一個數(shù)據(jù)叫做數(shù)組元素。元素均具有相同的數(shù)據(jù)類型,具有統(tǒng)一的變量名即數(shù)組名,并用不同編號來區(qū)分每個元素。數(shù)組的概念可以等同于班級中的小組,假如小組1有10名學(xué)生,為這10名學(xué)生依次編號為0、1、2...9,用小組1的0號學(xué)生、小組1的1號學(xué)生…小組1的9號學(xué)生就可以找到這10名學(xué)生。1、一維數(shù)組的定義一維數(shù)組的定義方式為:

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

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

數(shù)組名[元素的下標(biāo)];7.1.1一維數(shù)組知識點舉例: 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ù)組知識點現(xiàn)定義了一維數(shù)組inta[4];關(guān)于數(shù)組元素的引用,正確的選項為:3、一維數(shù)組的初始化(1)在定義數(shù)組時初始化

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

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

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

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

intgrade[10];

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

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

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

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

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

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個字節(jié),若首地址為80004、一維數(shù)組的存儲方式系統(tǒng)根據(jù)每個元素的數(shù)據(jù)類型、元素的個數(shù)在內(nèi)存中分配一塊連續(xù)的內(nèi)存空間用于存放該數(shù)組。數(shù)組名便是這塊連續(xù)內(nèi)存空間的首地址/起始地址。7.1.1一維數(shù)組知識點舉例

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個字節(jié),若首地址為8000案例分析一維數(shù)組的編程方法7.1.4分析一維世界中新冠病毒感染情況7.1.5在一系列數(shù)據(jù)中刪除第k個數(shù)據(jù)演示數(shù)組中每個元素的賦值和輸出方法演示查找某個數(shù)據(jù),并刪除數(shù)組中元素的方法。下標(biāo)作為循環(huán)變量,采用循環(huán)結(jié)構(gòu)對數(shù)組進(jìn)行操作巧用數(shù)組下標(biāo),簡化問題解決。演示下標(biāo)的其他用處,如坐標(biāo)點。7.1.2一維數(shù)組案例分析7.1.3放射加密方法對一系列數(shù)據(jù)進(jìn)行加密案例7.1.3:用放射加密方法對一系列數(shù)據(jù)進(jìn)行加密,并輸出加密后的數(shù)據(jù)。要求:輸入10個數(shù)據(jù),保存到數(shù)組中,并采用放射加密法對每個數(shù)據(jù)進(jìn)行加密,最后輸出加密后的10個數(shù)據(jù)。加密的公式:加密后數(shù)據(jù)=(7*數(shù)據(jù)+21)%26。問題分析:定義整型數(shù)組num保存這10個數(shù)據(jù),數(shù)組長度定為10,定義i作為數(shù)組的下標(biāo),并將數(shù)組的下標(biāo)i作為循環(huán)變量,通過循環(huán)變量i從0變到n-1,來逐個訪問數(shù)組中的a[0]到a[n-1],并對其進(jìn)行相應(yīng)的操作。7.1.2一維數(shù)組案例分析#include<stdio.h>#defineN10/*定義符號常量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運行結(jié)果案例7.1.3程序代碼7.1.2一維數(shù)組案例分析案例7.1.4:分析一維世界中新冠病毒感染情況要求:從2019年12月開始,新冠病毒在全球傳播開來,該病毒傳染性極強,只要某人與攜帶了該病毒的感染者在活動范圍內(nèi)有交集,則有被感染的可能。為了簡化運算,假設(shè)人生活在一維世界中,Ta到過的地方為一個區(qū)間[begin,end],其中0≤begin≤end≤200。假設(shè)有二個人,A、B,其中A為新冠病毒感染者,B為健康者,依次給出4個整數(shù)beginAendAbeginBendB,分別為這A、B二人的活動區(qū)間,請分析B是否有被感染的可能。7.1.2一維數(shù)組案例分析案例7.1.4:分析一維世界中新冠病毒感染情況問題分析:在一維世界中,人的活動范圍為[0,200],共201個點,定義intmark[201]={0}來記錄這201點是否為感染者的活動點。假設(shè)0≤i≤200,若mark[i]=0,表示i這個點不是感染者的活動點,若mark[i]=1,表示i這個點是感染者的活動點。7.1.2一維數(shù)組案例分析O感染者A的活動范圍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)點標(biāo)記scanf("%d%d%d%d",&beginA,&endA,&beginB,&endB);//標(biāo)記A活動過的坐標(biāo)點for(i=beginA;i<=endA;i++){mark[i]=1;

//表示i這個坐標(biāo)點為A感染者的活動點。}for(j=beginB;j<=endB;j++){/*若j這個坐標(biāo)點已經(jīng)被標(biāo)記為1,說明B的活動點j是A感染者活動的點*/if(mark[j]==1){flag=1;//可能被感染時flag置為1break;}}if(flag==1)//通過flag的值來判斷B是否可能被感染printf("B有可能被感染!");elseprintf("B暫無可能被感染!");return0;}運行結(jié)果1:5068345B暫無可能被感染!運行結(jié)果2:23453490B有可能被感染!運行結(jié)果案例7.1.4程序代碼數(shù)組的下標(biāo)還可以有其他的含義,比如坐標(biāo)點。解決某些實際問題時,好好利用下標(biāo),會簡化問題的求解。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)點標(biāo)記scanf("%d%d%d%d",&beginA,&endA,&beginB,&endB);//標(biāo)記A活動過的坐標(biāo)點for(i=beginA;i<=endA;i++){mark[i]=1;

//表示i這個坐標(biāo)點為A感染者的活動點。}for(j=beginB;j<=endB;j++){/*若j這個坐標(biāo)點已經(jīng)被標(biāo)記為1,說明B的活動點j是A感染者活動的點*/if(mark[j]==1){flag=1;//可能被感染時flag置為1break;}}if(flag==1)//通過flag的值來判斷B是否可能被感染printf("B有可能被感染!");elseprintf("B暫無可能被感染!");return0;}運行結(jié)果1:5068345B暫無可能被感染!運行結(jié)果2:23453490B有可能被感染!運行結(jié)果案例7.1.4程序代碼數(shù)組的下標(biāo)還可以有其他的含義,比如坐標(biāo)點。解決某些實際問題時,好好利用下標(biāo),會簡化問題的求解。7.1.2一維數(shù)組案例分析案例7.1.5:在一系列數(shù)據(jù)中刪除第k個數(shù)據(jù)要求:輸入10個整數(shù),將其保存到數(shù)組中。再輸入一個要刪除數(shù)據(jù)的下標(biāo)index(從0開始),若該index值合法(0~9),則將該位置的數(shù)據(jù)從數(shù)組中刪除,不合法則不執(zhí)行任何操作。問題分析:定義長度為10的arr數(shù)組來保存10個數(shù)據(jù),i作為數(shù)組的下標(biāo),index來保存要刪除數(shù)據(jù)的下標(biāo)值,刪除了該下標(biāo)處的數(shù)據(jù)后,該位置后面的數(shù)據(jù)要往前移動。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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論