東軟嵌入式高級(jí)C培訓(xùn)-Array.ppt_第1頁(yè)
東軟嵌入式高級(jí)C培訓(xùn)-Array.ppt_第2頁(yè)
東軟嵌入式高級(jí)C培訓(xùn)-Array.ppt_第3頁(yè)
東軟嵌入式高級(jí)C培訓(xùn)-Array.ppt_第4頁(yè)
東軟嵌入式高級(jí)C培訓(xùn)-Array.ppt_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

1、數(shù)組,構(gòu)造數(shù)據(jù)類型之一 數(shù)組:有序數(shù)據(jù)的集合,用數(shù)組名標(biāo)識(shí) 元素:屬同一數(shù)據(jù)類型,用數(shù)組名和下標(biāo)確定 一維數(shù)組 一維數(shù)組的定義 定義方式: 數(shù)據(jù)類型 數(shù)組名常量表達(dá)式;,合法標(biāo)識(shí)符,表示元素個(gè)數(shù) 下標(biāo)從0開(kāi)始, :數(shù)組運(yùn)算符 單目運(yùn)算符 左結(jié)合 不能用( ),例 int a6;,編譯時(shí)分配連續(xù)內(nèi)存 內(nèi)存字節(jié)數(shù)=數(shù)組維數(shù)* sizeof(元素?cái)?shù)據(jù)類型),數(shù)組名表示內(nèi)存首地址, 是地址常量,一維數(shù)組的引用 數(shù)組必須先定義,后使用 只能逐個(gè)引用數(shù)組元素,不能一次引用整個(gè)數(shù)組 數(shù)組元素表示形式: 數(shù)組名下標(biāo) 其中:下標(biāo)可以是常量或整型表達(dá)式,例 int i=15; int datai; (不能用變量定

2、義數(shù)組維數(shù)),例 int a10; printf(“%d”,a); () 必須 for(j=0;j10;j+) printf(“%dt”,aj); (),例 int data5; data5=10; /C語(yǔ)言對(duì)數(shù)組不作越界檢查,使用時(shí)要 注意,一維數(shù)組的初始化 初始化方式,在定義數(shù)組時(shí),為數(shù)組元素賦初值 (在編譯階段使之得到初值),int a5=1,2,3,4,5; 等價(jià)于:a0=1; a1=2; a2=3; a3=4; a4=5;,說(shuō)明: 數(shù)組不初始化,其元素值為隨機(jī)數(shù) 對(duì)static數(shù)組元素不賦初值,系統(tǒng)會(huì)自動(dòng)賦以0值,當(dāng)全部數(shù)組元素賦初值時(shí),可不指定數(shù)組長(zhǎng)度,如 int a5=6,2,3

3、; 等價(jià)于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等價(jià)于:a0=0; a1=0; a2=0; a3=0; a4=0;,只給部分?jǐn)?shù)組元素賦初值,int a=1,2,3,4,5,6; 編譯系統(tǒng)根據(jù)初值個(gè)數(shù)確定數(shù)組維數(shù),程序舉例,例 讀10個(gè)整數(shù)存入數(shù)組,找出其中最大值和最小值,步驟: 1. 輸入:for循環(huán)輸入10個(gè)整數(shù) 2. 處理: (a) 先令max=min=x0 (b) 依次用xi和max,min比較(循環(huán)) 若maxxi,令min=xi 3. 輸出:max和min,#include #defi

4、ne SIZE 10 main() int xSIZE,i,max,min; printf(Enter 10 integers:n); for(i=0;ixi) min=xi; printf(Maximum value is %dn,max); printf(Minimum value is %dn,min); ,例 用數(shù)組求Fibonacci數(shù)列前20個(gè)數(shù),#include main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(n); printf(%12d,fi);

5、 ,例 用冒泡法對(duì)10個(gè)數(shù)排序,排序過(guò)程: (1)比較第一個(gè)數(shù)與第二個(gè)數(shù),若為逆序a0a1,則交換;然 后比較第二個(gè)數(shù)與第三個(gè)數(shù);依次類推,直至第n-1個(gè)數(shù)和第 n個(gè)數(shù)比較為止第一趟冒泡排序,結(jié)果最大的數(shù)被安置在 最后一個(gè)元素位置上 (2)對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在 第n-1個(gè)元素位置 (3)重復(fù)上述過(guò)程,共經(jīng)過(guò)n-1趟冒泡排序后,排序結(jié)束,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,#include

6、main() int a11,i,j,t; printf(Input 10 numbers:n); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); for(i=1;i11;i+) printf(%d ,ai); ,例 用簡(jiǎn)單選擇法對(duì)10個(gè)數(shù)排序,排序過(guò)程: (1)首先通過(guò)n-1次比較,從n個(gè)數(shù)中找出最小的, 將它與第一個(gè)數(shù) 交換第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個(gè)元素位置上 (2)再通過(guò)n-2次比較,從剩余的n-1個(gè)數(shù)中找出關(guān)鍵字次小的記錄, 將它與第二個(gè)數(shù)交換第二趟選擇排序 (3)重復(fù)上述過(guò)程,共經(jīng)

7、過(guò)n-1趟排序后,排序結(jié)束,例,初始: 49 38 65 97 76 13 27 ,i=1,13,49,一趟: 13 38 65 97 76 49 27 ,i=2,27,38,六趟: 13 27 38 49 65 76 97 ,#include main() int a11,i,j,k,x; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d, ,#define N 6 main() int aN,bB-60,c=1,2,3,4,5,6,i; for(i=0;iN;i+) scanf(“%d%d”, ,數(shù)組定義:必須用常量表達(dá)式,數(shù)組元素引

8、用,二維數(shù)組及多維數(shù)組 二維數(shù)組的定義 定義方式: 數(shù)據(jù)類型數(shù)組名常量表達(dá)式常量表達(dá)式;,數(shù)組元素的存放順序 原因:內(nèi)存是一維的 二維數(shù)組:按行序優(yōu)先 多維數(shù)組:最右下標(biāo)變化最快,例 int a34; float b25; int c234; int a3,4; (),行數(shù),列數(shù),元素個(gè)數(shù)=行數(shù)*列數(shù),二維數(shù)組理解,每個(gè)元素ai由包含4個(gè)元素 的一維數(shù)組組成,二維數(shù)組a是由3個(gè)元素組成,二維數(shù)組元素的引用 形式: 數(shù)組名下標(biāo)下標(biāo) 二維數(shù)組元素的初始化 分行初始化:,按元素排列順序初始化,程序舉例,例 將二維數(shù)組行列元素互換,存到另一個(gè)數(shù)組中,例 求二維數(shù)組中最大元素值及其行列號(hào),#includ

9、e main() int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2; int i,j,row=0,colum=0,max; max=a00; for(i=0;imax) max=aij; row=i; colum=j; printf(max=%d,row=%d, colum=%dn,max,row,colum); ,例 讀入下表中值到數(shù)組,分別求各行、各列及表中所有數(shù)之和,#include main() int x54,i,j; for(i=0;i4;i+) for(j=0;j3;j+) scanf(%d, ,for(i=0;i5;i+) for(j=0;j4;j+)

10、 printf(%5dt,xij); printf(n); ,字符數(shù)組和字符串 字符數(shù)組 定義,字符數(shù)組的初始化 逐個(gè)字符賦值 用字符串常量 字符數(shù)組的引用,例 char c10, ch34;,例 輸出一個(gè)字符串,#include main() char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n); ,字符串 字符串及其結(jié)束標(biāo)志 無(wú)字符串變量,用字符數(shù)組處理字符串 字符串結(jié)束標(biāo)志:0,字符串的輸入輸出 逐個(gè)字符I/O: %c 整個(gè)字符串I/O: %s,例 用%c main() char str

11、5; int i; for(i=0;i5;i+) scanf(“%c”, ,例 用%s main() char str5; scanf(“%s”, str); printf(“%s”, str); ,用字符數(shù)組名,不要加 printf(“%s”,a); ,例 main( ) char a =“Hello”; printf(“%s”,a); ,結(jié)果:Hello#-=*,結(jié)果:Hello,用“%s”輸出時(shí),遇0結(jié)束,main() char a=h,e,l,0,l,o,0; printf(%s,a); ,例,輸出:hel,數(shù)組中有多個(gè)0時(shí), 遇第一個(gè)結(jié)束,main() int i; char a5;

12、 scanf(%s,a); for(i=0;i5;i+) printf(%d,ai); ,運(yùn)行情況: (1)若輸入 hel , 正常 (2)若輸入 hell , 正常 (3)若輸入 hello , 用%s 輸出時(shí),會(huì)出現(xiàn)問(wèn)題,輸入字符串長(zhǎng)度數(shù)組維數(shù),例 字符串輸入舉例,#include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a); ,運(yùn)行情況: 輸入:How are you? 輸出:a=How b=are c=you? 輸入:How

13、 are you? 輸出:a=How,scanf中%s輸入時(shí),遇空格或回車結(jié)束,運(yùn)行情況: 輸入:How are you?,例 若準(zhǔn)備將字符串“This is a string.”記錄下來(lái), 錯(cuò)誤的輸入語(yǔ)句為: (A)scanf(“%s”,s); (B)for(k=0;k17;k+) sk=getchar(); (C)while(c=getchar()!=n) sk+=c;,常用的字符串處理函數(shù) 包含在頭文件 string.h,字符串輸出函數(shù)puts 格式:puts(字符數(shù)組) 功能:向顯示器輸出字符串(輸出完,換行) 說(shuō)明:字符數(shù)組必須以0結(jié)束,字符串輸入函數(shù)gets 格式:gets(字符數(shù)

14、組) 功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中, 并自動(dòng)加0 說(shuō)明:輸入串長(zhǎng)度應(yīng)小于字符數(shù)組維數(shù),例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 輸入: How are you? 輸出: How are you ?,字符串連接函數(shù)strcat 格式:strcat(字符數(shù)組1,字符數(shù)組2) 功能:把字符數(shù)組2連到字符數(shù)組1后面 返值:返回字符數(shù)組1的首地址 說(shuō)明:字符數(shù)組1必須足夠大 連接前,兩串均以0結(jié)束;連接后,串1的0取消, 新串最后加0,字符串拷貝函

15、數(shù)strcpy 格式:strcpy(字符數(shù)組1,字符串2) 功能:將字符串2,拷貝到字符數(shù)組1中去 返值:返回字符數(shù)組1的首地址 說(shuō)明:字符數(shù)組1必須足夠大 拷貝時(shí)0一同拷貝 不能使用賦值語(yǔ)句為一個(gè)字符數(shù)組賦值,例 char str120,str220; str1=“Hello!”; () str2=str1; (),例 strcpy與strcat舉例,#include #include void main() char destination25; char blank = , c= C+, turbo = Turbo; strcpy(destination, turbo); strcat(

16、destination, blank); strcat(destination, c); printf(%sn, destination); ,Turbo C+,字符串比較函數(shù)strcmp 格式:strcmp(字符串1,字符串2) 功能:比較兩個(gè)字符串 比較規(guī)則:對(duì)兩串從左向右逐個(gè)字符比較(ASCII碼), 直到遇到不同字符或0為止 返值:返回int型整數(shù),a. 若字符串1 字符串2, 返回正整數(shù) c. 若字符串1= 字符串2, 返回零 說(shuō)明:字符串比較不能用“=”,必須用strcmp,字符串長(zhǎng)度函數(shù)strlen 格式:strlen(字符數(shù)組) 功能:計(jì)算字符串長(zhǎng)度 返值:返回字符串實(shí)際長(zhǎng)度,

17、不包括0在內(nèi),例 對(duì)于以下字符串,strlen(s)的值為: (1)char s10=A,0,B,C,0,D; (2)char s =“tv0willn”;,答案:1 3,How are you?Hello! Len1=6,Len2=12,Len3=18,例 有三個(gè)字符串,找出其中最大者,#include #include main() char string20,str320; int i; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0) strcpy(string,str2); printf(nThe largest string is:n%sn,string);

溫馨提示

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