版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Chap6 Chap6 利利用用數(shù)數(shù) 組處理組處理批量數(shù)據(jù)批量數(shù)據(jù)數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University2主要內(nèi)容主要內(nèi)容q引言引言q一維數(shù)組的定義和引用一維數(shù)組的定義和引用q二維數(shù)組的定義和引用二維數(shù)組的定義和引用q字符數(shù)組與字符串字符數(shù)組與字符串?dāng)?shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University3引引 言言q基本數(shù)據(jù)類型基本數(shù)據(jù)類型v整型整型v實(shí)型實(shí)型v字符型字符型q構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型(用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型)v數(shù)組數(shù)組v結(jié)構(gòu)體結(jié)構(gòu)體v共用體共
2、用體數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University4引引 言言q數(shù)組數(shù)組v數(shù)組是有序數(shù)據(jù)的集合數(shù)組是有序數(shù)據(jù)的集合v特點(diǎn)特點(diǎn)q所有數(shù)據(jù)元素所有數(shù)據(jù)元素類型類型相同相同q數(shù)據(jù)元素類型可以是基本數(shù)據(jù)類型和構(gòu)造數(shù)據(jù)類型數(shù)據(jù)元素類型可以是基本數(shù)據(jù)類型和構(gòu)造數(shù)據(jù)類型q由數(shù)組名和下標(biāo)確定具體的數(shù)據(jù)元素由數(shù)組名和下標(biāo)確定具體的數(shù)據(jù)元素?cái)?shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University5一維數(shù)組的定義一維數(shù)組的定義q一維數(shù)組的定義一維數(shù)組的定義v格式格式: 類型類型 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組
3、長(zhǎng)度;q長(zhǎng)度長(zhǎng)度只能為常量、常量表達(dá)式只能為常量、常量表達(dá)式q類型類型數(shù)組中元素的類型數(shù)組中元素的類型q數(shù)組名數(shù)組名遵循標(biāo)識(shí)符命名規(guī)則,表示數(shù)組中元素的起始位置遵循標(biāo)識(shí)符命名規(guī)則,表示數(shù)組中元素的起始位置v例如:例如:int a6;q分配了六個(gè)單元,每個(gè)單分配了六個(gè)單元,每個(gè)單元存放一個(gè)元存放一個(gè)int(即(即4個(gè)個(gè)Byte),),而且各單元而且各單元連續(xù)連續(xù)!q注意:注意: v c不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義。不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義。350 x78240 x78280 x78340 x783846175781000 x782C0 x7830aa0a1a2a3a4a5數(shù) 組q舉例:舉例:
4、int a4+6; 合法合法不合法不合法int n=10; int an;#define N 10float arryN;合法合法結(jié)論:定義數(shù)組時(shí),數(shù)組長(zhǎng)度必須是常量或者常量表達(dá)式,不能為變量。C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)6Soochow UniversitySoochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University7一維數(shù)組的使用一維數(shù)組的使用q一維數(shù)組的使用一維數(shù)組的使用v格式:格式:名稱名稱下標(biāo)下標(biāo);v說明:說明:1 1)下標(biāo)范圍:)下標(biāo)范圍:0長(zhǎng)度長(zhǎng)度-12 2)越界問題:越界問題:C中不檢查越界,
5、但越界寫數(shù)據(jù)可能造中不檢查越界,但越界寫數(shù)據(jù)可能造成系統(tǒng)崩潰成系統(tǒng)崩潰3 3)數(shù)組不能整體引用,只能引用其中的元素)數(shù)組不能整體引用,只能引用其中的元素q例如:例如:int a3; a2=19; 4)下標(biāo)可以是常量、變量、表達(dá)式或函數(shù))下標(biāo)可以是常量、變量、表達(dá)式或函數(shù)數(shù) 組q舉例舉例:int a 10;a0=a5+a7-a2*3合法合法C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)8Soochow UniversitySoochow Universityint n=5;int a10;an=20;int n=5;int a5;an=20;不正確不正確注意:(1)使用數(shù)組時(shí),程序員必須自己檢查數(shù)組越界問題。(
6、2)使用數(shù)組時(shí),數(shù)組下標(biāo)可以是常量,變量,表達(dá)式,甚至是函數(shù)。合法合法數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University9一維數(shù)組的初始化一維數(shù)組的初始化q部分初始化:部分初始化:v例如:例如:int a20=3,2,5,6,9; 其余元素為其余元素為0 0q全部初始化:全部初始化:數(shù)組長(zhǎng)度可以省略數(shù)組長(zhǎng)度可以省略v例如:例如:int a3=3,4,6; int b=23,45,67,89;q對(duì)數(shù)組全部元素初始化為對(duì)數(shù)組全部元素初始化為0方式方式v例如:例如:int a5=0,0,0,0,0; 或者:或者:int a5 = 0; 不能不
7、能: int a5=0*10;q說明:如果不給數(shù)組設(shè)置初值,則為隨機(jī)數(shù)說明:如果不給數(shù)組設(shè)置初值,則為隨機(jī)數(shù)數(shù) 組q在定義數(shù)組的同時(shí),給各數(shù)組元素賦值在定義數(shù)組的同時(shí),給各數(shù)組元素賦值qint a10=0,1,2,3,4,5,6,7,8,9;qint a10=0,1,2,3,4;相當(dāng)于相當(dāng)于 int a10=0,1,2,3,4,0,0,0,0,0;qint a10=0,0,0,0,0,0,0,0,0,0;相當(dāng)于相當(dāng)于 int a10=0;qint a5=1,2,3,4,5;可寫為可寫為 int a =1,2,3,4,5;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)10Soochow UniversitySo
8、ochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University11一維數(shù)組程序舉例一維數(shù)組程序舉例q用數(shù)組來處理求用數(shù)組來處理求fibonacci數(shù)列問題數(shù)列問題q冒泡排序冒泡排序q選擇排序選擇排序q插入排序插入排序q統(tǒng)計(jì)數(shù)字序列中統(tǒng)計(jì)數(shù)字序列中0-9中各數(shù)值出現(xiàn)的次數(shù)中各數(shù)值出現(xiàn)的次數(shù)q任意從鍵盤上輸入一個(gè)正整數(shù)(最大為任意從鍵盤上輸入一個(gè)正整數(shù)(最大為6553565535),),請(qǐng)將它逆序輸出請(qǐng)將它逆序輸出數(shù) 組一維數(shù)組程序舉例一維數(shù)組程序舉例 例例6.2 用數(shù)組處理求用數(shù)組處理求Fibonacci數(shù)列問題數(shù)列問
9、題q解題思路:解題思路:v例例5.8中用簡(jiǎn)單變量處理的,中用簡(jiǎn)單變量處理的,缺點(diǎn)缺點(diǎn)不能在內(nèi)存不能在內(nèi)存中保存這些數(shù)。假如想直接輸出數(shù)列中第中保存這些數(shù)。假如想直接輸出數(shù)列中第25個(gè)個(gè)數(shù),是很困難的。數(shù),是很困難的。v如果用數(shù)組處理,每一個(gè)數(shù)組元素代表數(shù)列中如果用數(shù)組處理,每一個(gè)數(shù)組元素代表數(shù)列中的一個(gè)數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組的一個(gè)數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組元素中元素中C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)12Soochow UniversitySoochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow Universi
10、ty13例題例題(1)q 用數(shù)組來處理求用數(shù)組來處理求fibonacci數(shù)列問題。數(shù)列問題。#include void main( ) int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i+1)%5=0) printf(n); printf(%12d,fi); 數(shù) 組q 例例6.3 有有6個(gè)地區(qū)的面積,要求對(duì)它們按由小到個(gè)地區(qū)的面積,要求對(duì)它們按由小到大的順序排列。大的順序排列。v解題思路:解題思路:q排序的規(guī)律有兩種:一種是排序的規(guī)律有兩種:一種是“升序升序”,從小到大;從小到大;另一種是另一種是“降序降
11、序”,從大到小,從大到小q把題目抽象為:把題目抽象為:“對(duì)對(duì)n個(gè)數(shù)按升序排序個(gè)數(shù)按升序排序”q常用的排序算法常用的排序算法v起泡排序起泡排序(冒泡排序冒泡排序)v選擇排序選擇排序v插入排序插入排序一維數(shù)組程序舉例一維數(shù)組程序舉例C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)14Soochow UniversitySoochow University數(shù) 組985420895420859420854920854290854209大數(shù)沉淀,小數(shù)起泡大數(shù)沉淀,小數(shù)起泡a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 起泡排序起泡排序C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)15Soo
12、chow UniversitySoochow University數(shù) 組854209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 起泡排序起泡排序C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)16Soochow UniversitySoochow University數(shù) 組542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 起泡排序起泡排序C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)17Soochow UniversitySoochow
13、 University數(shù) 組420589240589204589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 起泡排序起泡排序C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)18Soochow UniversitySoochow University數(shù) 組204589024589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 起泡排序起泡排序C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)19Soochow UniversitySoochow University數(shù) 組for(i=0;iai+1) for(i=0;iai+1) fo
14、r(i=0;iai+1) for(i=0;iai+1) for(j=0;j5;j+)結(jié)論結(jié)論: :如果有如果有n n個(gè)數(shù),則要進(jìn)行個(gè)數(shù),則要進(jìn)行n-1n-1趟比較。在第趟比較。在第1 1趟比趟比較中要進(jìn)行較中要進(jìn)行n-1n-1次兩兩比次兩兩比較,在第較,在第j j趟比較中要進(jìn)趟比較中要進(jìn)行行n-jn-j次兩兩比較。次兩兩比較。C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)20Soochow UniversitySoochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University21程序流程圖如下:程序流程圖如下:冒泡排序冒泡排序數(shù) 組
15、C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University22冒泡排序源程序冒泡排序源程序#include #define N 10void main() int arrayN; int i,j,t;printf(Input 10 numbers:n);for (i=0;iN;i+)scanf(%d,&arrayi);printf(n);for (j=0;jN;j+)for (i=0;iarrayi+1) t = arrayi;arrayi = arrayi+1; arrayi+1 = arrayi; printf(The sorted nu
16、mbers:n);for (i=0; iN; i+)printf(%d ,arrayi);if (i+1)%5 = 0) printf(n);數(shù) 組985420a0a1a2a3a4a5index=0;for(i=1;i6;i+) if (aindexai) index = imax = aindex;aindex = a5; a5 = max;選擇排序選擇排序985420985420985420985420085429C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)23Soochow UniversitySoochow University數(shù) 組085429a0a1a2a3a4a5max = a0;index=
17、0;for(i=1;i5;i+) if (maxai) max=ai;index = iaindex = a4; a4 = max;選擇排序選擇排序085429085429085429025489index=0;for(i=1;i5;i+) if (aindexai) index = imax = aindex;aindex = a4; a4 = max;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)24Soochow UniversitySoochow University數(shù) 組025489a0a1a2a3a4a5選擇排序選擇排序025489025489024589index=0;for(i=1;i4;i+
18、) if (aindexai) index = imax = aindex;aindex = a3; a3 = max;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)25Soochow UniversitySoochow University數(shù) 組024589a0a1a2a3a4a5選擇排序選擇排序024589024589index=0;for(i=1;i3;i+) if (aindexai) index = imax = aindex;aindex = a2; a2 = max;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)26Soochow UniversitySoochow University數(shù) 組024589a0a
19、1a2a3a4a5選擇排序選擇排序024589結(jié)論結(jié)論: :如果有如果有n n個(gè)數(shù),則要進(jìn)行個(gè)數(shù),則要進(jìn)行n-1n-1趟比較。在第趟比較。在第1 1趟比趟比較中要進(jìn)行較中要進(jìn)行n-1n-1次兩兩比次兩兩比較,在第較,在第j j趟比較中要進(jìn)趟比較中要進(jìn)行行n-jn-j次兩兩比較。次兩兩比較。index=0;for(i=1;i2;i+) if (aindexai) index = imax= aindex;aindex = a1; a1 = max;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)27Soochow UniversitySoochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Sooc
20、how UniversitySoochow University28選擇排序選擇排序q原理原理v每次循環(huán)選擇沒有排序的元素中的最小元素置每次循環(huán)選擇沒有排序的元素中的最小元素置于元素序列的開始于元素序列的開始vN-S圖圖輸入數(shù)組輸入數(shù)組aindex=kfor i = k+1 to n-1ai aindexindex=iaindexakYNfor k=0 to n-2輸出數(shù)組輸出數(shù)組a數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University29選擇排序程序選擇排序程序void main() int i, index, k, n, temp, a
21、10; for(i=0; i10; i+) scanf(“%d”, &ai); for(k=0; k10; k+) index=k; for(i=k+1; i10; i+) if(ai aindex) index=i; temp=aindex; aindex=ak; ak=temp; for(i=0; i tempai+1=aiYNfor k=2 to n-1輸出數(shù)組輸出數(shù)組a排序排序a0,a1ai+1=tempbreak;i0a0=tempYN數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University32一維數(shù)組應(yīng)用舉例一維數(shù)組應(yīng)用舉
22、例q 統(tǒng)計(jì)數(shù)字序列中統(tǒng)計(jì)數(shù)字序列中0-9中各數(shù)值出現(xiàn)的次數(shù)中各數(shù)值出現(xiàn)的次數(shù)v 數(shù)字序列保存于一個(gè)整型數(shù)組中數(shù)字序列保存于一個(gè)整型數(shù)組中q 任意從鍵盤上輸入一個(gè)正整數(shù)(最大為任意從鍵盤上輸入一個(gè)正整數(shù)(最大為6553565535),),請(qǐng)將它逆序輸出請(qǐng)將它逆序輸出v 如:輸入:如:輸入:64934 ; 64934 ; 則輸出:則輸出:4394643946v 對(duì)每一個(gè)數(shù)進(jìn)行如下處理對(duì)每一個(gè)數(shù)進(jìn)行如下處理q 提取個(gè)位數(shù)字:提取個(gè)位數(shù)字:v 讓數(shù)字序列對(duì)讓數(shù)字序列對(duì)10求余求余q 控制循環(huán)控制循環(huán)1. 每次循環(huán)讓整數(shù)減去個(gè)位數(shù),并除以每次循環(huán)讓整數(shù)減去個(gè)位數(shù),并除以102. 當(dāng)當(dāng)(1)結(jié)果的個(gè)位數(shù)為
23、結(jié)果的個(gè)位數(shù)為0時(shí),表示整數(shù)數(shù)字檢測(cè)完畢。時(shí),表示整數(shù)數(shù)字檢測(cè)完畢。數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University33二維數(shù)組二維數(shù)組q多維數(shù)組的空間想象多維數(shù)組的空間想象v 二維數(shù)組:二維數(shù)組: 一個(gè)表格或一個(gè)平面矩陣一個(gè)表格或一個(gè)平面矩陣v 一維數(shù)組:一維數(shù)組: 一列長(zhǎng)表或一個(gè)向量一列長(zhǎng)表或一個(gè)向量v 多維數(shù)組:多維數(shù)組: 多維空間的一個(gè)數(shù)據(jù)列陣多維空間的一個(gè)數(shù)據(jù)列陣v 三維數(shù)組:三維數(shù)組: 三維空間的一個(gè)方陣三維空間的一個(gè)方陣數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow Univers
24、ity34二維數(shù)組的定義二維數(shù)組的定義q格式格式v 名稱名稱長(zhǎng)度長(zhǎng)度1長(zhǎng)度長(zhǎng)度2;v說明:說明:1 1)長(zhǎng)度)長(zhǎng)度1和長(zhǎng)度和長(zhǎng)度2常量表達(dá)式,其中長(zhǎng)度常量表達(dá)式,其中長(zhǎng)度1 1表示行數(shù),長(zhǎng)度表示行數(shù),長(zhǎng)度2 2表示列數(shù)表示列數(shù)2 2)內(nèi)存中二維數(shù)組的元素按行存放)內(nèi)存中二維數(shù)組的元素按行存放數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University35b b0000b b0101b b0202b b1010b b1111b b1212b b2020b b2121b b22223003000 0H H3003004 4H H3003008 8H
25、H300300C CH H3010H3010H3014H3014H3018H3018H301CH301CH30302020H H例如:例如:整型數(shù)組整型數(shù)組 b33= 1,2,3, 4,5,6, 7,8,9 ;123456789數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University36問題:有了二維數(shù)組的基礎(chǔ),那么多維問題:有了二維數(shù)組的基礎(chǔ),那么多維數(shù)組如何定義呢?數(shù)組如何定義呢? 定義三維數(shù)組定義三維數(shù)組: float a234;float a234;注意:注意:多維數(shù)組元素在內(nèi)存中的排列順序:多維數(shù)組元素在內(nèi)存中的排列順序: 第一維的
26、下標(biāo)變化最慢,最右邊的下標(biāo)第一維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。變化最快。二維數(shù)組的定義二維數(shù)組的定義數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University37二維數(shù)組的使用二維數(shù)組的使用 格式:格式:名稱名稱下標(biāo)下標(biāo)1下標(biāo)下標(biāo)2下標(biāo)范圍下標(biāo)范圍0下標(biāo)下標(biāo)1-1;0下標(biāo)下標(biāo)2-1下標(biāo)可以為常量、變量、表達(dá)式或函數(shù)下標(biāo)可以為常量、變量、表達(dá)式或函數(shù)數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University38二維數(shù)組的說明二維數(shù)組的說明q重要的理解重要的理解v嚴(yán)格區(qū)分在定義數(shù)組時(shí)用的嚴(yán)格
27、區(qū)分在定義數(shù)組時(shí)用的a34和引用元素和引用元素時(shí)的時(shí)的a34的區(qū)別。前者的區(qū)別。前者a34用來定義數(shù)組用來定義數(shù)組的維數(shù)和各維的大小,后者的維數(shù)和各維的大小,后者a34中的中的3和和4是是下標(biāo)值,下標(biāo)值,a34a34代表某一個(gè)元素。代表某一個(gè)元素。q記?。河涀。簐(1) 數(shù)組下標(biāo)總是從數(shù)組下標(biāo)總是從0開始!開始!v(2) 一維數(shù)組的最大下標(biāo)總是數(shù)組長(zhǎng)度減一維數(shù)組的最大下標(biāo)總是數(shù)組長(zhǎng)度減1!v(3) 二維數(shù)組或多維數(shù)組的最大下標(biāo)總是其維二維數(shù)組或多維數(shù)組的最大下標(biāo)總是其維數(shù)減數(shù)減1和各維大小減和各維大小減1。數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow
28、University39二維數(shù)組的初始化二維數(shù)組的初始化 1、按行初始化:、按行初始化: 例如:例如:int a32=2,3,2,4; 2、整體初始化:、整體初始化: 例如:例如:int a23=2,3,4,1,8,9; 3、全部元素初始化:、全部元素初始化:行可以省略行可以省略 例如:例如:int a3=2,3,4,5,6,7;數(shù) 組int a34=1,2,3,4,5,6,7,8, 9,10,11,12;int a34=1,2,3,4,5,6,7,8,9,10,11,12;int a34=1,5,9;等價(jià)于等價(jià)于int a34=1,0,0,0,5,0,0,0, 9,0,0,0;int a34
29、=1,5,6;相當(dāng)于相當(dāng)于int a34=1,5,6,0;C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)40Soochow UniversitySoochow University數(shù) 組int a34=1,2,3,4,5,6,7,8,9,10,11,12;等價(jià)等價(jià)于于:int a 4=1,2,3,4,5,6,7,8,9,10,11,12;int a4=0,0,3, ,0,10;合法合法C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)41Soochow UniversitySoochow University數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University42二維數(shù)組與
30、一維數(shù)組的關(guān)系二維數(shù)組與一維數(shù)組的關(guān)系 兩維數(shù)組和一維數(shù)組的關(guān)系:兩維數(shù)組和一維數(shù)組的關(guān)系:例 int a34;a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23每個(gè)元素ai由包含4個(gè)元素的一維數(shù)組組成二維數(shù)組a是由3個(gè)元素組成014523a01a02a03a10a11a00a13a20a21a22a23a1267101189a0a1a2數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University43二維數(shù)組程序舉例二維數(shù)組程序舉例(1)(1)q將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二將一個(gè)二維數(shù)組行和列
31、元素互換,存到另一個(gè)二維數(shù)組中。維數(shù)組中。v原理:原理: bji=aij#include void main() int a23 = 1,2,3,4,5,6 ; int b32,i,j; printf(array a:n); for (i=0; i=1; i+) for (j=0; j=2; j+) printf(%5d,aij); bji=aij; printf(n); printf(array b:n); for (i=0; i=2,i+) for (j=0; j=1; j+) printf(%5d,bij); printf(n); 數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow Un
32、iversitySoochow University44二維數(shù)組程序舉例二維數(shù)組程序舉例(2)(2)q問題問題v有一個(gè)有一個(gè)34的矩陣,要求編程序求出其中值最的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。vN-S流程圖流程圖數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University45例例(2)源程序源程序#include void main() int i,j,row=0,colum=0,max; int a34 = 1,2,3,4,9,8,7,6,-10,10,-5,2 ;
33、 max = a00; for (i=0; i=2; i+) for (j=0;j max) max = aij; row = i; colum = j; /*if end*/ printf(“max=%d,row=%d,colum=%dn”,max,row,colum);數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University46二維數(shù)組程序舉例二維數(shù)組程序舉例(2)q編程打印下列形式的楊輝三角編程打印下列形式的楊輝三角(10行行)1 11121133114641 1 510 10 5116152015 61nij = ni-1j-1 +
34、ni-1j數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University47字符數(shù)組與字符串字符數(shù)組與字符串q字符數(shù)組字符數(shù)組v存放字符數(shù)據(jù)的數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)存放字符數(shù)據(jù)的數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。字符。q字符串字符串v字符串:雙引號(hào)括起的多個(gè)字符序列,例如:字符串:雙引號(hào)括起的多個(gè)字符序列,例如:“abc”,“1”,“abc123”v字符串尾:系統(tǒng)自動(dòng)添加字符串尾:系統(tǒng)自動(dòng)添加0 /ASCII為零的字符為零的字符v字符串的含義:字符串的起始位置字符串的含義:字符串的起始位置v字符串的存儲(chǔ):字符串的存儲(chǔ):利用字符數(shù)組
35、利用字符數(shù)組qchar s10=“Hello”;qchar s=”Hello”;/數(shù)組的長(zhǎng)度為數(shù)組的長(zhǎng)度為6qchar s10=2,3,4,5,0;/字符形式的串字符形式的串qchar s10=2,3,4,5;/字符形式,不是字符串字符形式,不是字符串?dāng)?shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University48字符串的輸入字符串的輸入/輸出輸出q利用利用scanf/printf進(jìn)行:進(jìn)行:char str20=“Hello world”;scanf(“%s”, str);/str數(shù)組名,表示起始位置,代表串的起始位置數(shù)組名,表示起始位置,代表
36、串的起始位置printf(“%s”,str);/輸出從輸出從str開始的串開始的串v說明:說明:(1)scanf中不需要求地址運(yùn)算,直接用數(shù)組名;中不需要求地址運(yùn)算,直接用數(shù)組名;(2)printf中給出數(shù)組名,輸出遇到中給出數(shù)組名,輸出遇到0結(jié)束結(jié)束;(3)scanf輸入串,以空格和回車鍵和輸入串,以空格和回車鍵和Tab鍵進(jìn)行分割鍵進(jìn)行分割q例如例如char str13; scanf(%S,Str);如果輸入以下如果輸入以下12個(gè)字符個(gè)字符 How are you? How0數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University49字符串
37、的輸入字符串的輸入/輸出輸出q利用利用puts/gets進(jìn)行:進(jìn)行:puts(數(shù)組名數(shù)組名);輸出輸出字符字符串串,并將,并將0轉(zhuǎn)換成換轉(zhuǎn)換成換行輸出。行輸出。gets(數(shù)組名數(shù)組名);輸入輸入字符字符串串;只能以回車鍵作只能以回車鍵作為分割符為分割符v說明:說明:q一般情況下,字符串的輸入采用一般情況下,字符串的輸入采用gets函數(shù)函數(shù)q使用這兩個(gè)函數(shù)時(shí),需要使用這兩個(gè)函數(shù)時(shí),需要#include q用用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University50例
38、如:例如:char str=ChinanBeijing;puts(str);輸出結(jié)果:輸出結(jié)果:ChinaBeijing 在輸出時(shí),將字符串結(jié)束標(biāo)志0轉(zhuǎn)換成n,即輸出完字符串后換行。字符串的輸入字符串的輸入/輸出輸出數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University51字符串?dāng)?shù)組字符串?dāng)?shù)組:二維字符數(shù)組二維字符數(shù)組二維字符數(shù)組初始化二維字符數(shù)組初始化 例 char fruit7=“Apple”,”O(jiān)range”, ”Grape”,”Pear”,”Peach”;fruit0fruit1fruit2fruit3fruit4Apple00Or
39、ange0Grape00Pear000Peach00數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University52字符串相關(guān)的系統(tǒng)函數(shù)字符串相關(guān)的系統(tǒng)函數(shù)(string.h)例如:例如: char str130=“Peoples Republic of ”; char str2=“China”;printf(“%s”,strcat(str1,str2);u字符串連接函數(shù)字符串連接函數(shù)strcat格式:格式:strcat(字符數(shù)組字符數(shù)組1,字符數(shù)組字符數(shù)組2)功能:把字符數(shù)組功能:把字符數(shù)組2連到字符數(shù)組連到字符數(shù)組1后面后面返值:返回字符數(shù)組
40、返值:返回字符數(shù)組1的首地址的首地址說明:說明:字符數(shù)組字符數(shù)組1必須足夠大必須足夠大 連接前連接前,兩串均以兩串均以0結(jié)束結(jié)束;連接后連接后,串串1的的0取消取消,新串最后加新串最后加0數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University53u字符串拷貝函數(shù)字符串拷貝函數(shù)strcpy格式:格式:strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2)功能:將字符串功能:將字符串2,拷貝到字符數(shù)組,拷貝到字符數(shù)組1中去中去返值:返回字符數(shù)組返值:返回字符數(shù)組1的首地址的首地址說明:說明:字符數(shù)組字符數(shù)組1必須足夠大必須足夠大 拷貝時(shí)拷貝時(shí)0一同
41、拷貝一同拷貝 不能使用賦值語句為一個(gè)字符數(shù)組賦值不能使用賦值語句為一個(gè)字符數(shù)組賦值字符串相關(guān)的系統(tǒng)函數(shù)字符串相關(guān)的系統(tǒng)函數(shù)(string.h)例如:例如: char str130=“Peoples Republic of ”; char str2=“China”;printf(“%s”,strcpy(str1,str2);數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University54u字符串比較函數(shù)字符串比較函數(shù)strcmp格式:格式:strcmp(字符串字符串1,字符串字符串2)功能:比較兩個(gè)字符串功能:比較兩個(gè)字符串比較規(guī)則:對(duì)兩串從左向右
42、逐個(gè)字符比較(比較規(guī)則:對(duì)兩串從左向右逐個(gè)字符比較(ASCII碼),碼), 直到遇到不同字符或直到遇到不同字符或0為止為止返值:返回返值:返回int型整數(shù),型整數(shù),a. 若字符串若字符串1 字符串字符串2, 返回正整數(shù)返回正整數(shù) c. 若字符串若字符串1= 字符串字符串2, 返回零返回零說明:字符串比較不能用說明:字符串比較不能用“=”,必須用必須用strcmp字符串相關(guān)的系統(tǒng)函數(shù)字符串相關(guān)的系統(tǒng)函數(shù)(string.h)數(shù) 組C C語言程序設(shè)計(jì)語言程序設(shè)計(jì)Soochow UniversitySoochow University55u字符串長(zhǎng)度函數(shù)字符串長(zhǎng)度函數(shù)strlen格式:格式:strlen(字符數(shù)組字符數(shù)組)功能:計(jì)算字符串長(zhǎng)度功能:計(jì)算字符串長(zhǎng)度返值:返回字符串實(shí)際長(zhǎng)度,不包括返值:返回字符串實(shí)際長(zhǎng)度,不包括0在內(nèi)在內(nèi)例 對(duì)于以下字符串,strlen(s)的值為:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69072n”; 字符串相關(guān)的系統(tǒng)函數(shù)字符串相關(guān)的系統(tǒng)函數(shù)(string.h)數(shù) 組strlwr函數(shù)函數(shù)-轉(zhuǎn)換為小寫的函數(shù)轉(zhuǎn)換為小寫的函數(shù)q其一般形式為
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度活動(dòng)板房安裝與綠色建材應(yīng)用合同3篇
- 二零二五年度酒店改造升級(jí)項(xiàng)目股權(quán)轉(zhuǎn)讓合同3篇
- 2024藥品招投標(biāo)企業(yè)準(zhǔn)入條件審查合同3篇
- 提升勘察設(shè)計(jì)質(zhì)量的安全管理體系培訓(xùn)與實(shí)踐
- 日照航海工程職業(yè)學(xué)院《兒科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 室內(nèi)設(shè)計(jì)元素在老房休閑空間的應(yīng)用
- 2024苗木種植基地與經(jīng)銷商長(zhǎng)期合作合同3篇
- 2025年度采購合同原材料采購與供應(yīng)協(xié)議3篇
- 2025年度金融機(jī)構(gòu)協(xié)議存款業(yè)務(wù)合規(guī)合同范本3篇
- 2024版飯店合伙人經(jīng)營(yíng)合作合同版
- 工廠5S檢查評(píng)分評(píng)價(jià)基準(zhǔn)表(全)
- 安吉游戲培訓(xùn)課件(全)
- (第六版)江蘇省建設(shè)工程施工單位申報(bào)現(xiàn)場(chǎng)用表
- (完整)Tribon m3培訓(xùn)資料
- 汽車吊接地比壓計(jì)算
- 復(fù)旦大學(xué)本科留學(xué)生入學(xué)考試語文樣題
- 食管裂孔疝手術(shù)同意書
- 工地試驗(yàn)室平面布置圖
- (完整版)復(fù)變函數(shù)與積分變換公式
- 國有資產(chǎn)清查工作方案國有資產(chǎn)清查報(bào)告
- 行政處罰普通程序流程圖
評(píng)論
0/150
提交評(píng)論