C語言 數(shù)組 課件_第1頁
C語言 數(shù)組 課件_第2頁
C語言 數(shù)組 課件_第3頁
C語言 數(shù)組 課件_第4頁
C語言 數(shù)組 課件_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 第六章第六章 數(shù)數(shù) 組組 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 6.1 6.1 一維數(shù)組一維數(shù)組 6.2 6.2 二維數(shù)組二維數(shù)組 6.3 6.3 字符數(shù)組字符數(shù)組 6.4 6.4 本章小結(jié)本章小結(jié) 本章內(nèi)容本章內(nèi)容 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 數(shù)據(jù)類型數(shù)據(jù)類型 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型 int float char string int short

2、 int long int 數(shù)組 指針 結(jié)構(gòu)體 共用體 double 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后 賦值,再使用。如:賦值,再使用。如:int a,b,c ; a = 5; b=10;c=23; printf(“%d,%d,%d”,a,b,c); 當(dāng)變量個(gè)數(shù)比較多,并且有內(nèi)在的關(guān)系時(shí),例如當(dāng)變量個(gè)數(shù)比較多,并且有內(nèi)在的關(guān)系時(shí),例如 :全:全 班有班有3030個(gè)人,每人一個(gè)成績個(gè)人,每人一個(gè)成績 如:如:int int c c1,1,c

3、c2,2,,c c30 30 (可以利用數(shù)組可以利用數(shù)組) 數(shù)組是怎么構(gòu)成的?數(shù)組是怎么構(gòu)成的? 一組有序數(shù)據(jù)的集合一組有序數(shù)據(jù)的集合,各個(gè)元素屬于各個(gè)元素屬于同一個(gè)類型同一個(gè)類型,用用統(tǒng)一的名稱統(tǒng)一的名稱 標(biāo)識(shí)這一組數(shù)標(biāo)識(shí)這一組數(shù),用用下標(biāo)唯一下標(biāo)唯一地確定這組數(shù)中的每一個(gè)值,這就構(gòu)成地確定這組數(shù)中的每一個(gè)值,這就構(gòu)成 了了“數(shù)組數(shù)組”。 數(shù)組的基本概念數(shù)組的基本概念 :有限個(gè):有限個(gè)相同數(shù)據(jù)類型相同數(shù)據(jù)類型的數(shù)據(jù)分量的有序集合。的數(shù)據(jù)分量的有序集合。 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 一一 、一維數(shù)組的定義、一維數(shù)組的定義 格式

4、:格式: 類型 類型 標(biāo)識(shí)符標(biāo)識(shí)符 長度長度 所有元素為所有元素為 同一類型同一類型 變量名,變量名, 即數(shù)組名即數(shù)組名 數(shù)組中所含數(shù)組中所含 元素的個(gè)數(shù)元素的個(gè)數(shù) int a10;由由10個(gè)整數(shù)個(gè)整數(shù) 組成的數(shù)組,共同擁組成的數(shù)組,共同擁 有數(shù)組名有數(shù)組名 2、數(shù)組長度必須是、數(shù)組長度必須是整型量整型量 int a2*3 說明:說明: 1、用、用方括號(hào)方括號(hào)將數(shù)組的將數(shù)組的長度長度括起來括起來 3、數(shù)組長度也可以用、數(shù)組長度也可以用常量表達(dá)式常量表達(dá)式 4、不能對(duì)長度做、不能對(duì)長度做動(dòng)態(tài)定義動(dòng)態(tài)定義,或者,或者不定義長度不定義長度 如:如:int n;n=10; int an; 6 6.1

5、.1 一維數(shù)組的定義和使用一維數(shù)組的定義和使用 例如:例如:int a5;int a5; 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 數(shù)組的三要素:數(shù)組的三要素: (1)相同的數(shù)據(jù)類型()相同的數(shù)據(jù)類型(定義數(shù)組時(shí)規(guī)定定義數(shù)組時(shí)規(guī)定) (2)有限的成員個(gè)數(shù))有限的成員個(gè)數(shù) (定義數(shù)組時(shí)規(guī)定定義數(shù)組時(shí)規(guī)定) (3)彼此有序的排列)彼此有序的排列 (引用數(shù)組元素時(shí)的下標(biāo)引用數(shù)組元素時(shí)的下標(biāo)) int a5; a0=1;a1=2;a2=3;a3=4;a4=5; 6 6.1 .1 一維數(shù)組的定義和使用一維數(shù)組的定義和使用 第六章 數(shù)組 2010年4月

6、21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 常量表達(dá)式常量表達(dá)式 初始化數(shù)據(jù);初始化數(shù)據(jù);格式:格式: 1.定義數(shù)組時(shí),對(duì)定義數(shù)組時(shí),對(duì)全部元素全部元素賦值賦值 int a5=1,2,3,4,5; 2. 對(duì)對(duì)部分元素部分元素賦值賦值 float x5 = 1.9 ,2.0 ; x0=1.9;x1=2.0; 3.3.若要對(duì)數(shù)組的若要對(duì)數(shù)組的全部元素初始化全部元素初始化,則,則可省略可省略數(shù)組的數(shù)組的長度長度 int a = 1,2,3,4; 二、二、 一維數(shù)組的初始化一維數(shù)組的初始化 6 6.1 .1 一維數(shù)組的定義和使用一維數(shù)組的定義和使

7、用 用用 包括所有初值,包括所有初值, 用用逗號(hào)逗號(hào)分隔各數(shù)值分隔各數(shù)值,且初值的,且初值的 個(gè)數(shù)個(gè)數(shù)不能大于數(shù)組不能大于數(shù)組長度。長度。 按按順序順序給前給前2個(gè)元素賦值個(gè)元素賦值, 其余元素為均為其余元素為均為 0 數(shù)組數(shù)組長度長度=元素的元素的個(gè)數(shù)個(gè)數(shù) 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 三三 、一維數(shù)組元素的引用、一維數(shù)組元素的引用 1、數(shù)組必須先定義,后賦值,再使用、數(shù)組必須先定義,后賦值,再使用 2、數(shù)組中的元素必須、數(shù)組中的元素必須逐一引用逐一引用 3、通過通過數(shù)組名數(shù)組名及其元素的及其元素的下標(biāo)下標(biāo)引用引用 定義定義:

8、 類型類型 數(shù)組名數(shù)組名長度長度 如如: int a10 引用引用: 數(shù)組名數(shù)組名下標(biāo)下標(biāo) a0,a1,a9為數(shù)組為數(shù)組a10中的所有元素中的所有元素 (1 1)下標(biāo)下標(biāo)表示了元素在數(shù)組中的位置表示了元素在數(shù)組中的位置 (2 2)下標(biāo)下標(biāo)可以用表達(dá)式可以用表達(dá)式 a2*3相當(dāng)于相當(dāng)于a6 說明說明 6 6.1 .1 一維數(shù)組的定義和使用一維數(shù)組的定義和使用 下標(biāo)范圍從下標(biāo)范圍從 0 0 到到長度長度-1-1 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例1:main() int i; int a10 = 1,2,3,4,5,6,7,8,9,

9、10; for(i=0;i10;i+) printf(%3d,ai); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:1 2 3 4 5 6 7 8 9 10 6 6.1 .1 一維數(shù)組的定義和使用一維數(shù)組的定義和使用 int a10; for(i=0;i10;i+) scanf(%d, 通過數(shù)組名和下標(biāo),通過數(shù)組名和下標(biāo), 引用數(shù)組中的每一個(gè)元素引用數(shù)組中的每一個(gè)元素 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例:有一個(gè)數(shù)組例:有一個(gè)數(shù)組, ,內(nèi)有內(nèi)有1010個(gè)元素個(gè)元素, ,求出最小的元素和它的求出最小的元素和它的 下標(biāo)。下標(biāo)。 713326 68 1 53 2

10、06512int a10 a0 a i a9 1.定義兩個(gè)臨時(shí)變量定義兩個(gè)臨時(shí)變量 min和和 k 2.假定第一個(gè)元素就是最小的假定第一個(gè)元素就是最小的,min=a0,k=0 3.用用min與數(shù)組中的與數(shù)組中的每一個(gè)每一個(gè)元素元素ai比較比較, 若若ai比比min小小, 將將ai 賦給賦給min, 同時(shí)同時(shí)將下標(biāo)將下標(biāo)i賦給賦給k, 否則否則,繼續(xù)比較。繼續(xù)比較。 6 6.1 .1 一維數(shù)組的定義和使用一維數(shù)組的定義和使用 分析:分析: 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 26 713326 68 1 53 206512 min=a0

11、 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 1326 min=a1 k=1 33 min和和k的值不變的值不變 133 203 min和和k的值不變的值不變 11 min和和k的值不變的值不變 1 for(i=0;i10;i+) scanf ( “%d”, min=a0;k=0; for(i=1;iai ) min=ai ; k=i ; printf(“%d,%d”,k,min); 循環(huán)輸入循環(huán)輸入10個(gè)數(shù)個(gè)數(shù) 循環(huán)找出最小的循環(huán)找出最小的 輸出最小值和原始下標(biāo)輸出最小值和原始下標(biāo) 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)

12、語言程序設(shè)計(jì) 例例 1. 將將6個(gè)實(shí)數(shù)由小到大排序。個(gè)實(shí)數(shù)由小到大排序。 5 8 9 4 7 2 5 8 9 4 7 21 5 8 9 4 7 22 5 8 9 4 7 23 4 8 9 5 7 24 4 8 9 5 7 2 5 第一輪結(jié)束:第一輪結(jié)束: 2 8 9 5 7 4 2 8 9 5 7 4 第一輪第一輪 2 4 9 8 7 5 第二輪第二輪 2 4 5 9 8 7 第三輪第三輪 2 4 5 7 9 8 第四輪第四輪 2 4 5 7 8 9 第五輪第五輪 結(jié)結(jié) 果:果:2 4 5 7 8 9 算法一:選擇排序法算法一:選擇排序法 選擇排序思路選擇排序思路:將數(shù)組中的每一個(gè)元素和其后面

13、所有的元素:將數(shù)組中的每一個(gè)元素和其后面所有的元素 進(jìn)行比較,如果某一個(gè)元素小于該數(shù),將互換位置。進(jìn)行比較,如果某一個(gè)元素小于該數(shù),將互換位置。 第一輪開始:第一輪開始: 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) #include main() int a6=5,8,9,4,7,2; int i,j,t; for(i=0;i5;i+) /i為比較的第幾輪 for(j=i+1;jaj) t=ai;ai=aj;aj=t; for(i=0;i6;i+) /將比較后的記過輸出來 printf(%5d,ai); 程序代碼一:程序代碼一: 第六章 數(shù)組

14、 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) #include main() int a6=5,8,9,4,7,2,i,j,t,k; /*k為數(shù)組的下標(biāo)為數(shù)組的下標(biāo) */ for(i=0;i5;i+) /* i循環(huán)比較的輪數(shù)循環(huán)比較的輪數(shù)*/ k=i; for(j=i+1;jaj) k=j; /* 記下較小的元素的下標(biāo)記下較小的元素的下標(biāo)*/ t=ai; ai=ak; ak=t; /*每輪結(jié)束后交換每輪結(jié)束后交換*/ for (i=0;i6;i+) printf(a%d=%dn,i,ai); 程序代碼二:程序代碼二: 第六章 數(shù)組 2010年4月21日星期

15、三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 算法二:算法二: 冒泡排序冒泡排序 冒泡法的思路冒泡法的思路:將相鄰兩個(gè)數(shù)比較,如果相鄰的兩個(gè)值是升序排:將相鄰兩個(gè)數(shù)比較,如果相鄰的兩個(gè)值是升序排 列的,就保持原樣,如果是降序排列的,就交換它們的值。(實(shí)列的,就保持原樣,如果是降序排列的,就交換它們的值。(實(shí) 質(zhì):大的沉下去,小的浮上來)質(zhì):大的沉下去,小的浮上來) start: a0 a1 a2 a3 a4 a5 a6 a7 2 57 29 89 42 34 16 1 1 times:2 29 57 42 34 16 1 89 2 times: 2 29 42 34 16 1 57

16、 89 3 times: 2 29 34 16 1 42 57 89 4 times: 2 29 16 1 34 42 57 89 5 times: 2 16 1 29 34 42 57 89 6 times: 2 1 16 29 34 42 57 89 7 times: 1 2 16 29 34 42 57 89 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) main()() int a10=2,57,29,89,42,34,16,1; int pass , time , temp,xb; for( pass =1; pass 9; pass

17、 +) /* pass是循環(huán)比較的趟數(shù)是循環(huán)比較的趟數(shù)*/ for(time =0; time atime+1)/* 判斷每相鄰兩個(gè)元素下標(biāo)判斷每相鄰兩個(gè)元素下標(biāo)*/ temp =atime; atime=atime +1;atime +1=temp; for (xb=0; xb10; xb+) printf( “a%d=%d n”, xb, axb ); 程序代碼一:程序代碼一: 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) #include #define SIZE 8 main( ) int aSIZE=2,57,29,89,42,34,

18、16,1; int i, pass, hold; clrscr(); for(i=0;i=SIZE-1;i+) printf(%4d, ai); printf(n); for(pass=1;pass=SIZE-1;pass+) /*比較趟數(shù)*/ for(i=0;iai+1) hold=ai; ai=ai+1; ai+1=hold; for(i=0;i=SIZE-1;i+) printf(%4d,ai); 程序代碼二:程序代碼二: 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 6 6.2 .2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用 當(dāng)一個(gè)一維

19、數(shù)組中的每個(gè)元素本身又是一個(gè)一維數(shù)組當(dāng)一個(gè)一維數(shù)組中的每個(gè)元素本身又是一個(gè)一維數(shù)組 時(shí),該數(shù)組構(gòu)成時(shí),該數(shù)組構(gòu)成“二維數(shù)組二維數(shù)組” 。 一、二維數(shù)組的定義一、二維數(shù)組的定義 格式:格式:類型類型 標(biāo)識(shí)符標(biāo)識(shí)符長度長度1長度長度2 如:如:int a44 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a30 a31 a32 a33 a0 a1 a2 a3 一維數(shù)組一維數(shù)組a4 二維數(shù)組二維數(shù)組a44 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 說明:說明: 1. 二維數(shù)組元素需要二維數(shù)組元素需

20、要兩個(gè)兩個(gè)下標(biāo)表示下標(biāo)表示 例:例:int a44表示數(shù)組表示數(shù)組a中有中有4行行4列列共共16個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) 2.二維數(shù)組在存儲(chǔ)空間中是按二維數(shù)組在存儲(chǔ)空間中是按行行優(yōu)先存儲(chǔ)優(yōu)先存儲(chǔ) a00 a01 a02a23.a03 第一行第一行 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a30 a31 a32 a33 6 6.2 .2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 二、二維數(shù)組的初始化二、二維數(shù)組的初始化 形式:形式:1、 對(duì)對(duì)全部元素全部元素

21、賦初值賦初值,分行,各用一個(gè)分行,各用一個(gè) 。 int a23=1,2,3,4,5,6; 2 整體賦值,系統(tǒng)自動(dòng)分行整體賦值,系統(tǒng)自動(dòng)分行 int a23=1,2,3,4,5,6;1,2,3 3 對(duì)部分元素賦初值,注意區(qū)別:對(duì)部分元素賦初值,注意區(qū)別: (1)int a23=1,2,3; (2) int a23=1,2,3; (3) int a23=0,1,2,3; 說明:當(dāng)為全部元素賦值時(shí),說明:當(dāng)為全部元素賦值時(shí),一維長度一維長度可省略可省略 如:int a 3=1,2,3,4,5,6; 6 6.2 .2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教

22、師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 三三 、二維數(shù)組的引用、二維數(shù)組的引用 原則原則 : 逐一引用逐一引用 說明:說明:1.數(shù)組名數(shù)組名下標(biāo)下標(biāo)1下標(biāo)下標(biāo)2 下標(biāo)下標(biāo)1 1從從0 0到長度到長度-1-1 下標(biāo)下標(biāo)2 2從從0 0到長度到長度-1-1 方法:方法:數(shù)組名數(shù)組名 N1N2 如:如:int a42 a00 a01 a10 a11 a20 a21 a30 a31 6 6.2 .2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 2、若定義、若定義int a34,則對(duì)則對(duì)a的正確引

23、用是:的正確引用是: A) a 2 4 B) a 1,3 C) a 1+1 0 D) a (2)(1) 1、以下二維數(shù)組說明方式中正確的是:、以下二維數(shù)組說明方式中正確的是: A) int a3 ; B) float a(3,4); C) double a14; D) float a(3)(4); 舉例:舉例: 6 6.2 .2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例1:1:已知已知5 5名學(xué)生的四門課程成績,求每位學(xué)生的總成績,名學(xué)生的四門課程成績,求每位學(xué)生的總成績, 并按二維表格式輸出

24、。并按二維表格式輸出。 姓名姓名語文語文數(shù)學(xué)數(shù)學(xué)外語外語政治政治 張三張三 91726344 李四李四 51627354 王五王五 91829384 趙六趙六 919210084 劉七劉七 61725344 程序代碼見下頁程序代碼見下頁 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) main() int a54=91,72,63,44,51,62,73,54,91,82,93,84, 91,92,100,84,61,72,53,44; int i,j,s5; for(i=0;i=4;i+) /* 給每個(gè)學(xué)生求總成績給每個(gè)學(xué)生求總成績*/ si=

25、0; for(j=0;j=3;j+) si=si+aij; for(i=0;i=4;i+) /* 輸出各學(xué)生成績二維表,并附帶總成績輸出各學(xué)生成績二維表,并附帶總成績*/ for(j=0;j=3;j+) printf(%4d ,aij); printf(%dn,si); 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例2 2、計(jì)算兩個(gè)矩陣的乘積。計(jì)算兩個(gè)矩陣的乘積。 main() int i,j,k; int a23=1,2,3,4,5,6, b34=1,2,3,4,5,6,7,8,9,10,11,12,c24=0; for(i=0;i2;i

26、+) for(j=0;j4;j+) for(k=0;k3;k+) cij+=aik*bkj; for(i=0;i2;i+) for(j=0;j4;j+) printf(%4d,cij); printf(n); Chengji.c 1 2 3 4 5 6 矩陣矩陣a= 矩陣矩陣b= 1 2 3 4 5 6 7 8 9 10 11 12 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例3. 3. 不用輸入,自動(dòng)生成下列矩陣不用輸入,自動(dòng)生成下列矩陣 1 2 3 4 5 1 1 6 7 8 1 1 1 9 10 1 1 1 1 11 1 1 1 1

27、 1 元素值為元素值為 1 按按 行行 遞遞 增增 mainmain( ) int i,j,a55;int i,j,a55; int int k=2;k=2; for(i=0;i5;i+)for(i=0;i5;i+) / /* * 按行循環(huán)按行循環(huán) * */ / for(j=0;j5;j+)for(j=0;j=ji=j) aij=1; ) aij=1; / /* *下下三角三角 * */ / else else aij=k+;aij=k+; / /* *上上三角三角 * */ / for(i=0;i5;i+) for(i=0;i5;i+) for(j=0;j5;j+) for(j=0;j5;j

28、+) printf(“%4d”,aij); printf(“%4d”,aij); printf(“n”); printf(“n”); / /* * 輸輸出一行后換行出一行后換行 * */ / 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 1、用來存放字符數(shù)據(jù)的數(shù)組是、用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組字符數(shù)組。 2、字符數(shù)組中的每個(gè)元素存放一個(gè)、字符數(shù)組中的每個(gè)元素存放一個(gè)字符字符。 定義方式與一、二維介紹的類似。定義方式與一、二維介紹的類似。 例:例:char c10,d23; 由于字符型與整型是互相通用的,由于字符型與整型是互相通用的, 因此

29、也可定義因此也可定義 int c10; 與一、二維介紹的類似,只是數(shù)組的每一個(gè)元素對(duì)應(yīng)一個(gè)字符。與一、二維介紹的類似,只是數(shù)組的每一個(gè)元素對(duì)應(yīng)一個(gè)字符。 char c10=I, , a, m, , h,a , p, p, y; char c32= , *, *, , , * ; 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 原則:原則: 逐一引用逐一引用 方法:方法: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)1下標(biāo)下標(biāo)2 下標(biāo)下標(biāo)1 1從從0 0到到長度長度-1-1 下標(biāo)下標(biāo)2 2從從0 0到到長度長度-

30、1-1 a00.a31 共共8個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) 例例1輸出一個(gè)字符串輸出一個(gè)字符串 main( ) char c10=I, ,a,m, ,a, ,b,o,y ; int i; printf(n); 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 for(i=0;i10;i+) printf(%c,ci); printf(%s,c); 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) main( ) char a55; int i,j; * for(i=0;i5;i+)* for(j=0;j5;j+) * * if(j= =0|i= =j)

31、* * aij=*; * * else aij= ; for(i=0;i5;i+) for(j=0;j5;j+) printf(%c,aij); printf(n); 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 在在C語言中,語言中,同時(shí),為了測同時(shí),為了測 定字符串的定字符串的,在,在C語言規(guī)定了一個(gè)語言規(guī)定了一個(gè) 字符字符 ),如一個(gè)字符串第,如一個(gè)字符串第個(gè)字符為個(gè)字符為 0,則此字符串的,則此字符串的,即在遇到,即在遇到字符字符 時(shí),表示時(shí),表示,由它前面的,由它前面的。 系

32、統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)作為結(jié)束符,當(dāng)然在定作為結(jié)束符,當(dāng)然在定 義字符數(shù)組時(shí)應(yīng)估計(jì)義字符數(shù)組時(shí)應(yīng)估計(jì)實(shí)際字符串長度實(shí)際字符串長度。 對(duì)字符數(shù)組對(duì)字符數(shù)組,可以用,可以用字符串常量字符串常量來使字符數(shù)組初始化。來使字符數(shù)組初始化。 如:如: char c =“I am happy”; 或或char c =“I am happy”; 此時(shí)系統(tǒng)此時(shí)系統(tǒng)自動(dòng)自動(dòng)在串尾加在串尾加 0。 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 1、輸入輸出有兩種方式、輸入輸出

33、有兩種方式: 逐個(gè)字符輸入輸出。用逐個(gè)字符輸入輸出。用“%c” 將整個(gè)字符串一次輸入輸出。用將整個(gè)字符串一次輸入輸出。用“%s” 2、輸出應(yīng)注意的問題:、輸出應(yīng)注意的問題: char c=“china”; printf(“%s”,c); 輸出字符不包括結(jié)束符輸出字符不包括結(jié)束符0 用用“%s”格式輸出字符時(shí),格式輸出字符時(shí),printf函數(shù)中的輸出項(xiàng)是函數(shù)中的輸出項(xiàng)是字符數(shù)組名字符數(shù)組名 , 而不是而不是數(shù)組元素名數(shù)組元素名。 如果數(shù)組長度大于字符串實(shí)際長度,也只輸出到如果數(shù)組長度大于字符串實(shí)際長度,也只輸出到0結(jié)束結(jié)束 如果一個(gè)字符數(shù)組中包含如果一個(gè)字符數(shù)組中包含一個(gè)以上一個(gè)以上0,則遇到,

34、則遇到第一個(gè)第一個(gè)0 時(shí)輸出時(shí)輸出 就結(jié)束。就結(jié)束。 輸入時(shí)應(yīng)輸入時(shí)應(yīng)注意注意: 在使用在使用scanf函數(shù)時(shí),若函數(shù)時(shí),若輸入字符串輸入字符串,用,用“%s”格式,則后面跟格式,則后面跟數(shù)組數(shù)組 名,且不帶名,且不帶“ gets(str); puts(str); Computer 和和 strcpy(str1,China) ; 拷貝時(shí)連同字符串后面的拷貝時(shí)連同字符串后面的0一起拷貝到字符數(shù)組一起拷貝到字符數(shù)組1中中 ; 不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接賦不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接賦 給一個(gè)給一個(gè)字符數(shù)組字符數(shù)組 如:如:str1=“China”為非法為非法; 可

35、以用可以用strcpy函數(shù)將字符串函數(shù)將字符串2中中前面若干個(gè)字符前面若干個(gè)字符拷貝到拷貝到 字符數(shù)組字符數(shù)組1中去中去; 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 5、strcmp(字符串字符串1,字符串,字符串2) 作用作用: 比較字符串比較字符串1和字符串和字符串2 方法:方法: 對(duì)兩個(gè)字符串自左至右逐個(gè)相比,直到出現(xiàn)對(duì)兩個(gè)字符串自左至右逐個(gè)相比,直到出現(xiàn)不同的字符或不同的字符或 遇到遇到0為止,如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,為止,如全部字符相同,則認(rèn)為相等

36、;若出現(xiàn)不相同的字符, 則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn),比較的結(jié)果由函數(shù)值帶回。則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn),比較的結(jié)果由函數(shù)值帶回。 字符串字符串1=字符串字符串2, 函數(shù)值為函數(shù)值為0 字符串字符串1字符串字符串2, 函數(shù)值為一正整數(shù)函數(shù)值為一正整數(shù) 字符串字符串1字符串字符串2, 函數(shù)值為一負(fù)整(記憶方法:絕對(duì)值)函數(shù)值為一負(fù)整(記憶方法:絕對(duì)值) 6、strlen(字符數(shù)組)字符數(shù)組) 作用:測試字符串長度的函數(shù),函數(shù)的值為字符串中的實(shí)際長度,作用:測試字符串長度的函數(shù),函數(shù)的值為字符串中的實(shí)際長度, 不包括不包括0在內(nèi)。在內(nèi)。 7、strlwr(字符串)字符串) 將字符

37、串中大寫字母換成小寫字母。將字符串中大寫字母換成小寫字母。 8、strupr(字符串)字符串) 將字符串中小寫字母換成大寫字母。將字符串中小寫字母換成大寫字母。 6 6.3 .3 字符數(shù)組的定義和引用字符數(shù)組的定義和引用 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例2: 輸入一行字符,統(tǒng)計(jì)有多少個(gè)單詞,單詞用空格分隔。輸入一行字符,統(tǒng)計(jì)有多少個(gè)單詞,單詞用空格分隔。 如:如:I am a student. #include stdio.h main( ) char string81, c; int i,num=0,word=0; gets

38、(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); 6.4 6.4 應(yīng)用實(shí)例應(yīng)用實(shí)例 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 例例3任輸入十個(gè)國家的名字,按由小到大排序。任輸入十個(gè)國家的名字,按由小到大排序。 #include stdio.h“ main( ) char a1020, b20; int i, j; /* a數(shù)組定

39、義為二位,列是代表每一個(gè)的名字?jǐn)?shù)組定義為二位,列是代表每一個(gè)的名字*/ for(i=0;i10;i+) gets(ai); for(i=0;i9;i+) for(j=i+1;j0) strcpy(b,ai); strcpy(ai,aj); strcpy(aj,b); for(i=0;i10;i+) printf(%sn,ai); 6.4 6.4 應(yīng)用實(shí)例應(yīng)用實(shí)例 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 第第6 6章章 習(xí)題習(xí)題 1. 1. 下面不能把字符串:下面不能把字符串:Hello! Hello! 賦給數(shù)組的語句是賦給數(shù)組的語句是 A

40、 A)char b110=H,e,l,l,o,!;char b110=H,e,l,l,o,!; B B)char b210;b2=Hello!;char b210;b2=Hello!; C C)char b310;strcpy(b3,Hello!);char b310;strcpy(b3,Hello!); D D)char b410=Hello!;char b410=Hello!; 2、若二維數(shù)組若二維數(shù)組a 有有m列,則列,則aIj前的元素個(gè)數(shù)為:前的元素個(gè)數(shù)為: A) j*m+I B) I*m+j C) I*m+j-1 D)I*m+j+1 3、下面程序段運(yùn)行結(jié)果是:下面程序段運(yùn)行結(jié)果是:

41、char c5=a,b,0,c,d,0 ; printf(“%s”,c); A) ab B)ab C) ab c D)ab0 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 4、以下對(duì)以下對(duì)S的初始化,不正確的是:的初始化,不正確的是: A) char s5=“abc” B) char s5=a, b, c; C) char s5= ; D) char s5=“abcdef”; 5、有下面程序段:有下面程序段: char a3,b =“china”; a=b; printf(“%s”,a); 則則 A)運(yùn)行后輸出運(yùn)行后輸出china B)運(yùn)行后輸

42、出運(yùn)行后輸出ch C)運(yùn)行后輸出運(yùn)行后輸出chi D)編譯出錯(cuò)編譯出錯(cuò) 第第6 6章章 習(xí)題習(xí)題 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 6、若定義二維數(shù)組若定義二維數(shù)組 int a33=1,2,3,4,5,6,7,8,9; int k; 則下列語句的輸出結(jié)果是:則下列語句的輸出結(jié)果是: for (k=0;k3;k+) printf (“%d”, ak,2-k); A) 3 5 7 B) 3 6 9 C) 1 5 9 D) 1 4 7 7、判斷字符串判斷字符串a(chǎn) 和和 b 是否相等,應(yīng)當(dāng)使用:是否相等,應(yīng)當(dāng)使用: A) if (a= =

43、b) B) if (a=b) C) if (strcpy(a,b) D) if (strcmp(a,b) 第第6 6章章 習(xí)題習(xí)題 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 8、讀程序,寫出正確結(jié)果:、讀程序,寫出正確結(jié)果: main() char a5=*,*,*,*,* int i, j, k; char space= ; for (i=0;i5;i+) printf(“n”); printf(“ ”); for (j=1;j=i;j+) printf(“%c”,space); for (k=0;k5;k+) printf (“%c”,ak); * * * * * 第第6 6章章 習(xí)題習(xí)題 第六章 數(shù)組 2010年4月21日星期三教師:趙軍富教師:趙軍富 C 語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論