C語言一維數(shù)組_第1頁
C語言一維數(shù)組_第2頁
C語言一維數(shù)組_第3頁
C語言一維數(shù)組_第4頁
C語言一維數(shù)組_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微信公眾號;自動化電氣系統(tǒng) QQ群;60886850 楊瀟,一維數(shù)組及其應(yīng)用,2021/2/6,數(shù)組的定義、引用、初始化和輸出 和數(shù)組有關(guān)的經(jīng)典算法 冒泡法、選擇法、折半查找法、求集合中最大或最小的元素 向函數(shù)傳遞一維數(shù)組,主要內(nèi)容,2021/2/6,重點、難點,對數(shù)組名的理解 和數(shù)組有關(guān)的經(jīng)典算法(難點) 冒泡法排序、選擇法排序 順序查找法、折半查找法,2021/2/6,假設(shè)集合中有班上30個同學(xué)的高數(shù)成績,找出高數(shù)成績的最高分,并將最高分打印到屏幕上 算法分析: 定義變量存放全班30個同學(xué)的高數(shù)成績,定義變量MaxScore,初值為0 MaxScore = 元素1; /*假設(shè)集合中第一個元

2、素值最大*/ for(i=0;i MaxScore) MaxScore = 元素i,找出全班高數(shù)成績的最高分,2021/2/6,保存大量同類型的相關(guān)數(shù)據(jù) 如矩陣運算,表格數(shù)據(jù)等,數(shù)組(Array)的作用,2021/2/6,數(shù)組的定義,語法格式: 類型名 數(shù)組名下標(biāo)1下標(biāo)2下標(biāo)n; 下標(biāo)為1個時為一維數(shù)組,依此類推 下標(biāo)必須是一個常量表達式,只能用方括符括起來 數(shù)組大小最好用宏來定義,以適應(yīng)未來可能的變化 #define SIZE 10int aSIZE; 數(shù)組特點 快速地隨機訪問 一旦定義,不能改變大小,2021/2/6,數(shù)組元素的引用,格式 數(shù)組名 下標(biāo); 下標(biāo)表示當(dāng)前元素相對于第一元素的偏

3、移量 當(dāng)使用數(shù)組名時,代表數(shù)組的首地址 二維數(shù)組的引用 注意區(qū)分數(shù)組定義和數(shù)組引用 注意下標(biāo)越界問題 數(shù)組不能整體引用 對數(shù)組每個元素的使用與普通變量無異,2021/2/6,全部賦初值 char ch4=h,a,l,0; int arr=3,7,5,8; 部分賦初值 float f10=1.7,2.1; 二維數(shù)組的初始化 int a23=1,2,3,4,5,6; int a3=1,2,3,4,5,6; int a3=1,2,4,數(shù)組的初始化,double arr3; arr3=1.1,2021/2/6,數(shù)組的物理存儲結(jié)構(gòu),按行順序存放數(shù)組,2021/2/6,只能逐個對數(shù)組元素進行操作(字符數(shù)組

4、例外,輸入方法,int a10,i,輸入第i個數(shù)組元素,scanf(%d,輸入整個數(shù)組元素,for (i=0;i10;i+) scanf(%d,輸出方法,輸出第i個數(shù)組元素,printf(%d,ai,輸出整個數(shù)組元素,for (i=0;i10;i+) printf(%d,ai,一維數(shù)組的輸入和輸出,2021/2/6,用法一:求表達式計算結(jié)果類型所占用的字節(jié)數(shù) sizeof(表達式) int a = 5; sizeof(a+5); 用法二:求某種類型所占用的字節(jié)數(shù) sizeof(數(shù)據(jù)類型名) x = sizeof(double)+2; printf(“%d”,x,sizeof運算符,2021/2

5、/6,include #define ARR_SIZE 30 int main() int scoreARR_SIZE=0, MaxScore=0, i; printf(Please enter scores:); for(i=0;iARR_SIZE;i+) scanf(%d,經(jīng)典算法:找出集合中最大元素,2021/2/6,MaxScore = score0; /* 假設(shè)第一個元素是最大值 */ for(i = 0;i ARR_SIZE; i+) if(MaxScore scorei) MaxScore = scorei; printf(MaxScore = %dn,MaxScore); re

6、turn 0;,2021/2/6,打印出成績?yōu)?00分同學(xué)的學(xué)號,int main() int scoreARR_SIZE=0, i,flag=1; for(i=0;iARR_SIZE;i+) /*順序掃描數(shù)組中每個元素*/ if(100=scorei) printf(No=%dt,i+1); flag=0; if(flag) printf( not found!n); return 0;,2021/2/6,折半查找,基本思想 使用均分確定法,找出區(qū)間中的中點元素,如果待查信息的值小于中點元素值,則找出中點前半部分的中點元素,反之找出后半部分的中點元素,再進行比較,然后再折半,直到區(qū)間無法繼續(xù)

7、二分 但折半法的前提是數(shù)據(jù)必須事先經(jīng)過排序,2021/2/6,int main() int scoreARR_SIZE=0, i; int low,high,mid; printf(Please enter scores:); for(i=0;iARR_SIZE;i+) scanf(%d,2021/2/6,low = 0; high = ARR_SIZE - 1; while(low scoremid) low = mid + 1; else printf(No %d,mid); return 0;,2021/2/6,按從高到低的分數(shù)對全班同學(xué)的成績進行排序 算法: 冒泡法 選擇法,對全班的高

8、數(shù)成績進行排序,2021/2/6,核心思想 將相鄰元素進行比較,較小(較大)的放在前面,冒泡法排序,5 6 7 8,6 5 7 8,6 7 5 8,6 7 8 5,6 7 8,7 6 8,7 8,8 7 6 5,7 8 6,int main() int scoreARR_SIZE = 0,i,j,temp; for(i=0;i ARR_SIZE - 1;i+) for(j=0;jARR_SIZE-i;j+) if(scorejscorej+1) temp = scorej; scorej = scorej+1; scorej+1 = temp; return 0;,核心代碼,2021/2/6,

9、冒泡法核心思想,共有m個數(shù),則需進行m-1輪比較,每輪比較完成后,最大(小)的值沉底,每輪比較交換m-i次 外層循環(huán)控制比較輪數(shù),內(nèi)層循環(huán)控制交換次數(shù),5 6 7 8,6 5 7 8,6 7 5 8,6 7 8 5,7 6 8 5,7 8 6 5,7 8 6 5,1,2,3,8 7 6 5,2021/2/6,交換法排序,2021/2/6,2021/2/6,int main() int scoreARR_SIZE=0,i,j,k,temp; for(i=0;iARR_SIZE;i+) k = i; /*假設(shè)第i個元素最大*/ for(j=i+1;jARR_SIZE;j+) if(scoreksc

10、orej) k=j; if(k!=i) temp = scorek; scorek = scorej; scorej = temp return 0;,核心代碼,2021/2/6,第i輪比較時,假設(shè)本論第一個待比較元素最大,然后找出i+1后面的所有數(shù)中最大的數(shù),將其下標(biāo)值賦給k,再用k和i進行比較,如果k不等于i,說明假設(shè)不成立,將k所對應(yīng)的數(shù)和所所對應(yīng)的數(shù)據(jù)進行交換 相較冒泡法排序,該算法雖然比較的次數(shù)不變,但是交換的次數(shù)最多只有i-1次,交換法核心思想,2021/2/6,作業(yè),分別用選擇法和冒泡法對數(shù)組進行排序 在排序后用折半法查找數(shù)組中是否有元素值為77,如果有,輸出該元素的下標(biāo) 下面程序模擬了骰子的6000次投擲,用rand()函數(shù)產(chǎn)生1-6之間的隨機數(shù)face,然后統(tǒng)計1-6每一面出現(xiàn)的機會(概率)存放到數(shù)組frequency中,include #include #include int main() int face, roll, frequency7 = 0; srand(time(NULL); for

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論