版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、7.1 一維數(shù)組第 7 章 多維數(shù)組1一維數(shù)組的定義語句形式: 類型說明符 數(shù)組名表達(dá)式說明: 數(shù)組名定名規(guī)則和變量名相同。 常量表達(dá)式表示數(shù)組元素的個數(shù),即數(shù)組的長度。如: int a10;表示a數(shù)組有10個元素:a0,a1,a2, a9,沒有a10。注意:數(shù)組的下標(biāo)是從0開始的。12一維數(shù)組元素的引用 C不允許對數(shù)組進(jìn)行動態(tài)定義。以下作法是錯誤的。 int n; scanf(“%d”,&n); int an; 數(shù)組必須先定義,然后再使用。C的數(shù)組元素只能逐個引用而不能一次引用整個數(shù)組。 一維數(shù)組元素的表示形式為: 數(shù)組名下標(biāo)下標(biāo)可以是整型常量或整型表達(dá)式。2例7.1 main( ) int
2、 i,a10; for (i=0; i=0; i-) printf(“%2d”,a i); 輸出結(jié)果:10 9 8 7 6 5 4 3 2 133一維數(shù)組的初始化賦值語句和輸入語句均可使數(shù)組中的元素賦初值,但占用運行時間。簡捷的方法是在程序運行之前使數(shù)組初始化。對數(shù)組元素初始化的方法有:1) 在定義數(shù)組時對數(shù)組元素賦以初值。如: static int a10=0,1,2,3,4,5,6,7,8,9;說明: 依次賦予數(shù)組元素的初值必須用 括起來。 “static”是C的一個關(guān)鍵字,意為“靜態(tài)存儲”。C規(guī)定只有靜態(tài)存儲(static)數(shù)組和外部存儲(extern)數(shù)組才能初始化。2) 可以只給一部
3、分元素賦值。如: static int a10=0,1,2,3,4;3) 在C中系統(tǒng)會自動對所定義的靜態(tài)數(shù)組的每個元素賦初值0。4) 對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。如: static int a5=1,2,3,4,5;可以寫成: static int a =1,2,3,4,5;4例7.2 將一個十進(jìn)制正整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。main( ) int i, k, r, x, b16; printf(“Enter an integer x :”); scanf(“%d”,&x); printf(“%6d binary number is :n”,x); k = -1; do r =x%2
4、; b+k= r ; x/=2; while (x != 0); for ( i=k; i=0; i-) printf(“%d”,bi); printf(“n”);5例7.3 用冒泡法將10個數(shù)按從小到大排序。當(dāng)有n個數(shù)時需要作n1趟這樣的搜索,每趟搜索要作n1次比較。main( ) int i, j,t,a11; printf(“input 10 numbers :n”); for (i=1; i11; i+) scanf(“%d”,&ai); printf(“n”); for ( j=1; j=9; j+) for ( i=1; iai+1) t=ai; ai=ai+1; ai+1= t;
5、 printf(“the sorted numbers :n”); for (i=1; i11; i+) printf(“%d ”,ai);67.2. 二維數(shù)組語句形式: 類型說明符 數(shù)組名常量表達(dá)式1 常量表達(dá)式2如:float a34;定義a是一個3x4 (3行4列)的數(shù)組,即a數(shù)組有12個元素。但不得寫成:float a3,4;注意: 二維數(shù)組中元素的排列順序為按行按列。即存放完第1 行的元素后再接著存放第 2 行的元素,依次類推。 C允許定義多維數(shù)組。如: float a345;7static int a34=1,5,9;static int a34=1,0,6,0,0,11;stat
6、ic int a34=1,5,6;static int a34=1, ,9;注意:所賦給的值是按行按列對號入座的。 對二維數(shù)組的全部元素賦初值時,可以不指定第一維的長度,但不得省去第二維的長度。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以寫成:static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;同樣,static int a 4=0,0,3, ,0,10; 也是正確的。 可以對部分元素賦初值。如:8例7.4 將一個二維數(shù)組行和列的元素互換后存到另一個數(shù)組中。如:main( ) static int a23=1,2,
7、3,4,5,6; static int b32, i, j; printf(“array a:n”); for (i=0; i=1; i+) for ( j=0; j=2; j+) printf(“%5d”,ai j); b ji=ai j; / 元素互換 / printf(“n”); printf(“array b:n”); for (i=0; i=2; i+) for ( j=0; j=1; j+) printf(“%5d”,bi j); printf(“n”); 9例7.5 輸出一個3 4數(shù)組中每行中的最大元素之值及其位置。main( ) int i, j, c, max ; stati
8、c int a34=6,-5,11,3,8,9,4,7,2,13,1,-10; for (i=0; i=2; i+) max=a i0; c=0; for ( j=0; jmax) max=ai j; c=j; printf(“max=%2d,row=%d,colum=%dn”,max,i+1,c+1); 輸出結(jié)果:max=11, row=1, colum=3max= 9, row=2, colum=2max=13, row=3, colum=2107.3 多維數(shù)組與二維數(shù)組的定義類似例如: int a345, b2453;分別為定義的三維、四維數(shù)組。其中,a有60個元素,b有120個元素。7
9、.4字符數(shù)組與字符串117.4.1 字符數(shù)組的逐個字符操作例7.6 從鍵盤輸入一個字符串,回車鍵結(jié)束,并將字符串在屏幕上輸出。 main( ) int i; static char str80; clrscr(); for(i=0;i80;i+) stri=getch(); /*逐次給數(shù)組元素stri賦值,但不回顯在屏幕上*/ printf(*); /*以星號代替輸入字符的個數(shù)*/ if(stri=x0d) break;/*若輸入回車則終止循環(huán)*/ i=0; while(stri!=x0d) printf(%c,stri+);/*逐次輸出字符數(shù)組的各個元素*/ printf(n); getch
10、();/*程序暫停*/ 121字符數(shù)組的定義1維字符數(shù)組,用于存儲和處理1個字符串,其定義格式與1維數(shù)值數(shù)組一樣。2維字符數(shù)組,用于同時存儲和處理多個字符串,其定義格式與2維數(shù)值數(shù)組一樣。2字符數(shù)組的初始化字符數(shù)組的初始化,可以通過為每個數(shù)組元素指定初值字符來實現(xiàn)。3字符數(shù)組的引用 字符數(shù)組的逐個字符引用,與引用數(shù)值數(shù)組元素類似。13 (1)字符數(shù)組的輸入 除了可以通過初始化使字符數(shù)組各元素得到初值外,也可以使用getchar()或scanf()函數(shù)輸入字符。 例如: char str10;for(i=0; i10; i+) scanf(%c, &stri); fflush(stdin);/*
11、清除鍵盤輸入緩沖區(qū)*/ 14 (2)字符數(shù)組的輸出 字符數(shù)組的輸出,可以用putchar()或printf()函數(shù)。 例如: char str10=c language;for(i=0; i10; i+) printf(%c, stri);printf(n); 注意:逐個字符輸入、輸出時,要指出元素的下標(biāo),而且使用“%c”格式符。另外,從鍵盤上輸入字符時,無需輸入字符的定界符單引號;輸出時,系統(tǒng)也不輸出字符的定界符。15#include main( ) char name13; int i; for (i =0; i =12; i +)scanf(“ %c”,&namei); for (i =
12、0; i =12; i +)printf(“ %c”,namei); scanf(“ %s”,name); printf(“ %s”,name);例7e_1:采用不同的方式輸入輸出字符串運行結(jié)果:Pear & Apple Pear & ApplePear & Apple Pear16#include #include main( )int i; char name74=sun,mon,tue,wed, thu,wen,sat; printf(Result is:n); name03=&; name23=&; name53=&; for (i=0;i7;i+) printf(%sn,namei)
13、; getch();例: 7e_2字符串?dāng)?shù)組值的改變。17程序運行結(jié)果:sun&monmontue&wedwedthuwen&satsat賦初值:改變后:187.4.2 字符數(shù)組的整體操作例7.7 字符數(shù)組的整體輸入與輸出。 將2維字符數(shù)組進(jìn)行初始化,并在屏幕上輸出*/main() int i; char name510=“zhangshan, “l(fā)isi, “wangwu, “zhaolui, “l(fā)uiqi; for(i=0;i5;i+) printf(n%st,namei); /*namei代表該行數(shù)組元素的首地址*/ getch(); 1字符串及其結(jié)束標(biāo)志 所謂字符串,是指若干有效字符的
14、序列。C語言中的字符串,可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。C語言規(guī)定:以0作為字符串結(jié)束標(biāo)志(0代表ASCII碼為0的字符,表示一個“空操作”,只起一個標(biāo)志作用)。因此可以對字符數(shù)組采用另一種方式進(jìn)行操作了字符數(shù)組的整體操作。19 注意:由于系統(tǒng)在存儲字符串常量時,會在串尾自動加上1個結(jié)束標(biāo)志,所以無需人為地再加1個。另外,由于結(jié)束標(biāo)志也要在字符數(shù)組中占用一個元素的存儲空間,因此在說明字符數(shù)組長度時,至少為字符串所需長度加1。2字符數(shù)組的整體初始化字符串設(shè)置了結(jié)束標(biāo)志以后,對字符數(shù)組的初始化,就可以用字符串常量來初始化字符數(shù)組。3字符數(shù)組的整體引用(1)字符串的輸入除了可以通過初始化使
15、字符數(shù)組各元素得到初值外,也可以使用scanf()函數(shù)輸入字符串。(2)字符串的輸出printf()函數(shù),不僅可以逐個輸出字符數(shù)組元素,還可以整體輸出存放在字符數(shù)組中的字符串。207.4.3 常用的字符串處理函數(shù)字符串標(biāo)準(zhǔn)函數(shù)的原型在頭文件string.h中。1輸入字符串gets()函數(shù)(1)調(diào)用方式:gets(字符數(shù)組)(2)函數(shù)功能:從標(biāo)準(zhǔn)輸入設(shè)備(stdin)鍵盤上,讀取1個字符串(可以包含空格),并將其存儲到字符數(shù)組中去。(3)使用說明 1)gets()讀取的字符串,其長度沒有限制,編程者要保證字符數(shù)組有足夠大的空間,存放輸入的字符串。 2)該函數(shù)輸入的字符串中允許包含空格,而scan
16、f()函數(shù)不允許。212輸出字符串puts()函數(shù)(1)調(diào)用方式:puts(字符數(shù)組)(2)函數(shù)功能:把字符數(shù)組中所存放的字符串,輸出到標(biāo)準(zhǔn)輸出設(shè)備中去,并用n取代字符串的結(jié)束標(biāo)志0。所以用puts()函數(shù)輸出字符串時,不要求另加換行符。( 3)使用說明1)字符串中允許包含轉(zhuǎn)義字符,輸出時產(chǎn)生一個控制操作。2)該函數(shù)一次只能輸出一個字符串,而printf()函數(shù)也能用來輸出字符串,且一次能輸出多個。221. 輸入(用printf(“%s”)(2) 輸入多個字符串,可用空格隔開。 static char str15, str25, str35; scanf(%s%s%s, str1, str2,
17、str3);(1) 輸入字符串時,系統(tǒng)自動加上0輸入 How are you str1得到: H o w0 str2得到: a r e0 str3得到: y o u 0232.輸入(用gets() static char str 15, gets(str); 輸入:how are you 則str得到: how are you0 例7e_3(演示) #include #include main() static char str15,str25,str35,str15; scanf(%s%s%s, str1, str2,str3); /*輸入 how are you回車*/ printf(%s
18、%s%s%sn, str1, str2,str3); puts(str1);puts(str2);puts(str3); /*puts()將0轉(zhuǎn)換為n*/ fflush(stdin); /*清除鍵盤緩沖區(qū),內(nèi)部位置指針置首位*/ gets(str); /*輸入 how are you回車*/ puts(str); 運行屏幕顯示:how are youhowareyouhowareyouhow are youhow are you24例7e_4(演示)從鍵盤按下面次序輸入,分析程序結(jié)果: aa bb回車cc dd回車#include #include main()char a15,a25,a35
19、,a45; scanf(“%s%s”,a1,a2); gets(a3);gets(a4); puts(a1); puts(a2); puts(a3); puts(a4);程序運行結(jié)果:aabbcc dd25說明:輸入流為一隊列 aabbccddscanf(“%s”,);從隊列中一個一個地讀字符,每讀一個,標(biāo)準(zhǔn)輸入設(shè)備文件stdin內(nèi)部指針向右移動一個字符位置;以非空白字符開始,以第一個空白字符結(jié)束.gets();從隊列中一個一個地讀字符,每讀一個,標(biāo)準(zhǔn)輸入設(shè)備文件內(nèi)部指針向右移動一個字符位置;以為串輸入結(jié)束標(biāo)志.則:a15:aa0 a25:bb0a35:0 a45:ccdd0263字符串比較s
20、trcmp()函數(shù)(1)調(diào)用方式:strcmp(字符串1 ,字符串2)其中“字符串”可以是串常量,也可以是1維字符數(shù)組。(2)函數(shù)功能:比較兩個字符串的大小。如果:字符串1=字符串2,函數(shù)返回值等于0; 字符串1字符串2,函數(shù)返回值正整數(shù)。(3)使用說明1)如果一個字符串是另一個字符串從頭開始的子串,則母串為大。2)不能使用關(guān)系運算符“”來比較兩個字符串,只能用strcmp() 函數(shù)來處理。27例7.8 gets函數(shù)和strcmp函數(shù)的應(yīng)用。 /*功能:簡單密碼檢測程序*/#include stdio.hmain() char pass_str80; /*定義字符數(shù)組pass_str*/ in
21、t i=0; /*檢驗密碼*/ while(1) clrscr(); printf(請輸入密碼n); gets(pass_str); /*輸入密碼*/28/*假定正確口令為password*/ if(strcmp(pass_str,“password”)!=0) printf(口令錯誤,按任意鍵繼續(xù)); else break; /*輸入正確的密碼,中止循環(huán)*/ getch(); i+; if(i=3) exit(0);/*輸入三次錯誤的密碼,退出程序*/ /*以下為輸入正確密碼所進(jìn)入的程序段*/ printf(密碼正確!歡迎你進(jìn)入!); 294拷貝字符串strcpy()函數(shù)(1)調(diào)用方式:st
22、rcpy(字符數(shù)組, 字符串)其中“字符串”可以是串常量,也可以是字符數(shù)組。(2)函數(shù)功能:將“字符串”完整地復(fù)制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。(3)使用說明1)字符數(shù)組必須定義得足夠大,以便容納復(fù)制過來的字符串。復(fù)制時,連同結(jié)束標(biāo)志0一起復(fù)制。2)不能用賦值運算符“”將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)來處理。30 5連接字符串strcat()函數(shù)(1)調(diào)用方式:strcat(字符數(shù)組, 字符串)(2)函數(shù)功能:把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中。“字符數(shù)組”中原來的結(jié)束標(biāo)志,被“字符串”的第一個字符覆蓋,而“字符串”
23、在操作中未被修改。(3)使用說明 1)由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后的目標(biāo)字符串;否則,會因長度不夠而產(chǎn)生問題。 2)連接前兩個字符串都有結(jié)束標(biāo)志0,連接后“字符數(shù)組”中存儲的字符串的結(jié)束標(biāo)志0被舍棄,只在目標(biāo)串的最后保留一個0。316求字符串長度strlen()函數(shù)(len是length的縮寫)(1)調(diào)用方式:strlen(字符串)(2)函數(shù)功能:求字符串(常量或字符數(shù)組)的實際長度(不包含結(jié)束標(biāo)志)。7將字符串中大寫字母轉(zhuǎn)換成小寫strlwr()函數(shù)(1)調(diào)用方式:strlwr(字符串)(2)函數(shù)功能:將字符串中的大寫字母轉(zhuǎn)換成小寫,其它字符(包
24、括小寫字母和非字母字符)不轉(zhuǎn)換。8將字符串中小寫字母轉(zhuǎn)換成大寫strupr()函數(shù)(1)調(diào)用方式:strupr(字符串)(2)函數(shù)功能:將字符串中小寫字母轉(zhuǎn)換成大寫,其它字符(包括大寫字母和非字母字符)不轉(zhuǎn)換。327.5 數(shù)組作為函數(shù)參數(shù)數(shù)組用作函數(shù)參數(shù)有兩種形式:一種是把數(shù)組元素(又稱下標(biāo)變量)作為實參使用;另一種是把數(shù)組名作為函數(shù)的形參和實參使用。 7.5.1 數(shù)組元素作為函數(shù)參數(shù) 7.5.2 數(shù)組名作為函數(shù)的形參和實參 337.5.1 數(shù)組元素作為函數(shù)參數(shù) 數(shù)組元素就是下標(biāo)變量,它與普通變量并無區(qū)別。數(shù)組元素只能用作函數(shù)實參,其用法與普通變量完全相同:在發(fā)生函數(shù)調(diào)用時,把數(shù)組元素的值傳送給形參,實現(xiàn)單向值傳送。例7.9 寫一函數(shù),統(tǒng)計字符串中字母的個數(shù)。/*功能:數(shù)組元素作為函數(shù)實參*/int isalp(char c) if (c=a&c=A&c=Z) return(1); else return(0); 34main() int i,num=0; char str255; printf(Input a string: ); gets(str); for(i=0;stri!=0;i+) if (isalp(stri) num+; puts(str); printf(num=
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)器人課程主題課程設(shè)計
- 綠建筑復(fù)合風(fēng)管施工創(chuàng)新方案
- 地方國企職工安置與社會保障方案
- 2024年合作共建協(xié)議:工程項目的聯(lián)建條款
- 機(jī)器人大專課程設(shè)計
- 本科建筑電氣課程設(shè)計
- 本科中藥制作課程設(shè)計
- 本地水車施工方案
- 2024至2030年移動翻轉(zhuǎn)式黑板項目投資價值分析報告
- 木格柵施工方案
- 萬盛關(guān)于成立醫(yī)療設(shè)備公司組建方案(參考模板)
- 停線管理規(guī)定
- 《我和小姐姐克拉拉》閱讀題及答案(一)
- 大型展會對城市會展業(yè)發(fā)展影響文獻(xiàn)綜述會展專業(yè)
- 鄉(xiāng)鎮(zhèn)結(jié)核病防治工作職責(zé)
- 機(jī)組啟動試運行工作報告
- 禮儀隊工作計劃三篇
- 互補(bǔ)輸出級介紹
- 中波廣播發(fā)送系統(tǒng)概述
- (完整版)管道代號對照
- 市森林消防(防汛)專業(yè)隊管理制度森林防火撲火隊管理制度.doc
評論
0/150
提交評論