已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第 7 章 數(shù) 組,7.1 一維數(shù)組的定義和引用,語句形式 :,類型說明符 數(shù)組名常量表達式,說明 :, 數(shù)組名定名規(guī)則和變量名相同。, 常量表達式表示數(shù)組元素的個數(shù),即數(shù)組的長度。,如:,int a10;,表示a數(shù)組有10個元素:a0,a1,a2, a9,沒 有a10。,注意:數(shù)組的下標是從 0 開始的。,1 一維數(shù)組的定義, C不允許對數(shù)組進行動態(tài)定義。以下作法是錯誤的。,int n; scanf(“%d”,2 一維數(shù)組元素的引用,數(shù)組必須先定義,然后再使用。C的數(shù)組元素只能 逐個引用而不能一次引用整個數(shù)組。,一維數(shù)組元素的表示形式為:,數(shù)組名下標,下標可以是整型常量或整型表達式。,例7.1 main( ) int i,a10; for (i=0; i=0; i-) printf(“%2d”,ai); ,輸出結(jié)果: 10 9 8 7 6 5 4 3 2 1,3 一維數(shù)組的初始化,賦值語句和輸入語句均可使數(shù)組中的元素賦初值,但占用運 行時間。簡捷的方法是在程序運行之前使數(shù)組初始化。,對數(shù)組元素初始化的方法有:,1. 在定義數(shù)組時對數(shù)組元素賦以初值,如:,int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;,說明:,依次賦予數(shù)組元素的初值必須用 括起來。,2. 可以只給一部分元素賦值,如:,int a10 = 0, 1, 2, 3, 4 ;,3. 在C中系統(tǒng)會自動對所定義的數(shù)組的每個元素賦初值0,4. 對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度,如:,int a5 = 1, 2, 3, 4, 5 ;,可以寫成:,int a = 1, 2, 3, 4, 5 ;,如:,int a10 = 0;或int a10=0,0,0,0,0,0,0,0,0,0,main( ) int i, k, r, x, b16; printf(“Enter an integer x :”); scanf(“%d”, ,例: 將一個十進制整數(shù)轉(zhuǎn)換成二進制數(shù)。,例7.3 用冒泡法將 10 個數(shù)按從小到大排序。,冒泡法的思路是:將相鄰兩個數(shù)進行比較,將小的調(diào)到前頭。,若有這樣一組數(shù):9 8 4 5 2 0,則按如下圖所示進行操作。,9 8 4 5 2 0,9,8,9,4,比較與交換的操作直到數(shù)字 9 調(diào)到最后的位置,然后將剩下 的 5個數(shù) 8 4 5 2 0 進行下一輪比較與交換,直至排好序為止。,當(dāng)有n個數(shù)時需要作n1 趟這樣的搜索, 每趟搜索 要作n1次比較。,main( ) int i, j,t,a11; 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); ,7.2 二維數(shù)組的定義和引用,定義形式:,類型說明符 數(shù)組名常量表達式1 常量表達式2,如: float a34;,定義a是一個3x4 (3行4列)的數(shù)組,即a數(shù)組有12個元素。,但不得寫成:float a3,4;,注意:, C允許定義多維數(shù)組。, 二維數(shù)組中元素的排列順序為按行按列。即存放完第 1 行的元素后再接著存放第 2 行的元素,依次類推。,float a345;,如:,1 二維數(shù)組的定義,2 二維數(shù)組的引用,二維數(shù)組元素的表示形式為:,數(shù)組名 下標1 下標2,如:,a00 表示二維數(shù)組a中第1行的第1個元素。,a23 表示二維數(shù)組a中第3行的第4個元素。,下標可以是整型常量或整型表達式,但其值不得超過上限,3 二維數(shù)組的初始化,二維數(shù)組的初始化可用下列方法之一:, 按行給二維數(shù)組賦初值。,如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,這種賦初值的方法比較直觀,一行對一行,不易遺漏, 易于檢查。, 順序按行按列給二維數(shù)組賦初值。,如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;, 可以對部分元素賦初值。,如:,int a34=1, 5, 9;,int a34=1, 5,6 ;,int a34=1, , 9 ;,注意:,所賦給的值是按行按列對號入座的。, 對二維數(shù)組的全部元素賦初值時,可以不指定第一維 的長度,但不得省去第二維的長度。,如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,可以寫成:,int a 4=1,2,3,4,5,6,7,8,9,10,11,12;,同樣:,int a 4=0,0,3, , 0,10 ;,也是正確的。,例7.4 將一個二維數(shù)組行和列的元素互換后存到另一個數(shù)組中。,如:,main( ) static int a23=1,2,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 j i = a i 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”); ,例7.5 輸出一個34數(shù)組中每行中的最大元素之值及其位置。,main( ) int i, j, c, max ; static int a34=6,-5,11,3,8,9,4,7,2,13,1,-10; for (i=0; imax) max=a i j; c=j; printf(“max=%2d,row=%d,colum=%dn”,max,i+1,c+1); ,輸出結(jié)果: max=11, row=1, colum=3 max= 9, row=2, colum=2 max=13, row=3, colum=2,7.3 字符數(shù)組,1. 字符數(shù)組的定義,char c10;,以上都是定義 c 有10個元素的字符數(shù)組。,注:,字符數(shù)組的每個元素只能存放 1 個字符。,2. 字符數(shù)組的初始化,對字符數(shù)組初始化的方法是逐個給各元素賦予1個字符。,如:,static char c10=I, ,a,m, ,h,a,p,p,y;, 如果賦予的字符個數(shù)多于字符數(shù)組元素的個數(shù),將產(chǎn)生 語法錯誤。, 如果賦予的字符個數(shù)少于字符數(shù)組元素的個數(shù),則多 余的元素自動賦空字符( 0 )。, 如果賦初值的字符個數(shù)等于字符數(shù)組元素的個數(shù),則 在定義時可省略數(shù)組長度。系統(tǒng)將自動根據(jù)初值個數(shù) 確定數(shù)組長度。,或,int c10;, 可以定義和初始化一個二維字符數(shù)組。,如:,char d33 = *, ,* , ,*, ,*, ,*;,3. 字符數(shù)組的引用,引用字符數(shù)組中的一個元素將得到一個字符。,如:,d01 取得第一行第二個字符 。,4. 字符串和字符串結(jié)束標志,C在每個字符串的末尾自動加上一個字符串結(jié)束標 志0,即在0前面的字符的個數(shù)為該字符串的有效長 度。在用printf函數(shù)輸出字符串時,當(dāng)遇到0時就停止 輸出。,字符數(shù)組并不要求它的最后一定要加 0。是否加 0,完全視需要而定。,5. 字符數(shù)組的輸入輸出,字符數(shù)組的輸入輸出有兩種方法:, 用“%c”格式符逐個的輸入或輸出字符數(shù)組的字符。, 用“%s”格式符將整個字符串一次輸入或輸出。,如:,char c =“China”; printf(“%s”,c);, 用scanf(“%s”,c)可以輸入一個字符串,以回車鍵而 不必以結(jié)束符0結(jié)束輸入,系統(tǒng)會自動加上一個結(jié) 束符0。這里c為字符數(shù)組名,而不是數(shù)組元素名。 同時字符數(shù)組名c前也不再加地址符&。, 若用一個scanf 函數(shù)輸入多個字符串,則以空格作為 字符串之間的分隔。, printf(“%s”,c)中c是字符數(shù)組名,不是數(shù)組元素名。 輸出時并不輸出結(jié)束符0。, 如果字符數(shù)組的長度大于字符串的實際長度,也只會 輸出到0為止。, 如果字符數(shù)組中有多個0 ,則遇到第一個0時停止 輸出。,6. 字符串處理函數(shù),C中常用的字符串處理函數(shù)有:,1) puts( ) 函數(shù),puts( )函數(shù)將一個以0結(jié)束的字符串輸出到終端, 且字符串中可以包含轉(zhuǎn)義字符。,如:,static char str = “ChinanBeijing”; puts(str);,輸出: China Beijing, 字符數(shù)組必須足夠大,以便容納被拷貝的字符串。, 字符數(shù)組必須以數(shù)組名的形式出現(xiàn),字符串可以是數(shù) 組名,也可以是字符串常量。, 拷貝時連同字符串后的0也一起拷貝到字符數(shù)組中。,2) gets( ) 函數(shù),gets( )函數(shù)從終端輸入一個字符串到字符數(shù)組,且 得到字符數(shù)組的起始地址。,3) strcpy(字符數(shù)組, 字符串 , n),將字符串前面的n個字符拷貝到字符數(shù)組中。,char str110, str25; char str3 =“China”; strcpy(str1, str3); strcpy(str2, str3, 2);,注:,如:,gets(str), 不能用賦值語句將一個字符串常量或字符數(shù)組直接 賦給一個字符數(shù)組。,如:,str1=“China”; str2=str1;,是不合法的。,4) strcmp(字符串1, 字符串2),自左至右按ASC I I值對兩個字符串中的相應(yīng)的字符 進行比較,直到出現(xiàn)不同的字符或遇到 0 為止。若全 部字符相同, 則認為相等;若出現(xiàn)不相同的字符,則以 第一個不相同的字符的比較結(jié)果為準。, 若字符串1 = 字符串2 ,函數(shù)值為 0 。, 若字符串1 字符串2 ,函數(shù)值為一正整數(shù)。, 若字符串1 字符串2 ,函數(shù)值為一負整數(shù)。,例:,strcmp(str1, str2);,strcmp(“China”,“Korea”);,strcmp(str1,“Beijing”);,str1和str2為字符數(shù)組名,注:,兩個字符串進行比較,不能用以下形式: if (str1=str2) printf(“yes”);,而只能用 if (strcmp(str1, str2)=0) printf(“yes”);,5) strlen( )函數(shù),strlen( )函數(shù)測試字符串的實際長度(不包括0在內(nèi))。,如:,static char str10=“China”; printf(“%d”,strlen(str);,輸出: 5, 字符數(shù)組必須足夠大,以便容納連接后的新字符串。,連接前兩個字符串的后面都有一個0,連接時將字符 串1后的0取消,只在新串最后保留一個0。,6) strcat(字符數(shù)組1, 字符數(shù)組2),連接兩個字符數(shù)組中的字符串,將字符串2接到字符串1 的后面,結(jié)果放在字符數(shù)組1中。,char str130=“Peoples Republic of”; char str2 =“China”; Printf(“%s”,strcat(str1,str2);,注:,如:,輸出:,Peoples Republic of China,例7.8 輸入一行字符,統(tǒng)計其中有多少個單詞,用空格分隔。,#include “stdio.h” main( ) char c, string81; int i, num=0, word=0; gets(string); for ( i=0; (c=stringi)!=0; i+) if (c= ) word=0; else if (word=0) word=1; num+; printf(“There are %d words in the linen”,num); ,從鍵盤輸入一個字符串,運行結(jié)果: I am a boy There are 4 words in the line,例7.9: 有3個字符串,要求找出其中最大者。,#include #incl
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年塔城b2考貨運資格證要多久
- 2025個人蝦池承包養(yǎng)殖資源整合與開發(fā)合同3篇
- 二零二五版智能農(nóng)業(yè)監(jiān)測系統(tǒng)采購合同提升農(nóng)業(yè)效率4篇
- 二零二五學(xué)校與家長聯(lián)合實施家校共育行動計劃3篇
- 2025年度北京商品房買賣合同(含智能家居系統(tǒng)升級承諾)3篇
- 2025年個人間信息保密與責(zé)任承擔(dān)協(xié)議書3篇
- 二零二五年度城市綜合體運營顧問服務(wù)協(xié)議3篇
- 二零二五年度卵石市場調(diào)研與銷售預(yù)測合作協(xié)議3篇
- 2024版股權(quán)自由轉(zhuǎn)讓協(xié)議快速執(zhí)行權(quán)利義務(wù)
- 2024私家車緊急公務(wù)借用服務(wù)協(xié)議范本3篇
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護保密協(xié)議與信息安全風(fēng)險評估合同3篇
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 光伏工程施工組織設(shè)計
- DB4101-T 121-2024 類家庭社會工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測試方法考核試卷
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
- 作品著作權(quán)獨家授權(quán)協(xié)議(部分授權(quán))
- 取水泵站施工組織設(shè)計
評論
0/150
提交評論