




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Chap 7 數(shù)數(shù) 組組7.1 排序問(wèn)題排序問(wèn)題7.2 找出矩陣中最大值所在的位置找出矩陣中最大值所在的位置7.3 進(jìn)制轉(zhuǎn)換進(jìn)制轉(zhuǎn)換1輸入一個(gè)正整數(shù)輸入一個(gè)正整數(shù)n (1n10),再輸入再輸入n個(gè)個(gè)整數(shù),用選擇法將它們從小到大排序后整數(shù),用選擇法將它們從小到大排序后輸出。輸出。 7.1.1 程序解析程序解析7.1.2 一維數(shù)組的定義和引用一維數(shù)組的定義和引用7.1.3 一維數(shù)組的初始化一維數(shù)組的初始化7.1.4 使用一維數(shù)組編程使用一維數(shù)組編程7.1 排序問(wèn)題排序問(wèn)題27.1.1 程序解析排序程序解析排序 #include int main(void) int i, index, k, n,
2、temp; int a10; /* 定義定義1個(gè)數(shù)組個(gè)數(shù)組a,它有它有10個(gè)整型元素個(gè)整型元素*/ printf(“Enter n: ); scanf(%d”, &n); printf(“Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); for(k = 0; k n-1; k+) /* 對(duì)對(duì)n個(gè)數(shù)排序個(gè)數(shù)排序 */ index = k; for(i = k + 1; i n; i+) if(ai aindex) index = i; temp = aindex; aindex = ak; ak = temp
3、; printf(After sorted: ); for(i = 0; i n; i+) /* 輸出輸出n個(gè)數(shù)組元素的值個(gè)數(shù)組元素的值 */ printf(%d , ai); return 0; 3for(i = 0; i n; i+) printf(%d , ai);數(shù)組:數(shù)組:相同類(lèi)型相同類(lèi)型數(shù)據(jù)的數(shù)據(jù)的有序有序集合集合,在內(nèi)存中連續(xù)存放。,在內(nèi)存中連續(xù)存放。 由數(shù)組名和下標(biāo)惟一地確定每個(gè)數(shù)組元素由數(shù)組名和下標(biāo)惟一地確定每個(gè)數(shù)組元素 每個(gè)元素都屬于同一類(lèi)型每個(gè)元素都屬于同一類(lèi)型一批相同類(lèi)型的變量使用同一個(gè)數(shù)組變量名,用下標(biāo)一批相同類(lèi)型的變量使用同一個(gè)數(shù)組變量名,用下標(biāo)來(lái)相互區(qū)分。來(lái)相互區(qū)
4、分。優(yōu)點(diǎn):表述簡(jiǎn)潔,可讀性高;便于使用優(yōu)點(diǎn):表述簡(jiǎn)潔,可讀性高;便于使用循環(huán)循環(huán)結(jié)構(gòu)結(jié)構(gòu)數(shù)組數(shù)組0 1 2 9 a0 a1 a9a3 5 2 8 1 22 89 0 -1 747.1.2 一維數(shù)組的定義和引用一維數(shù)組的定義和引用1、定義、定義 類(lèi)型名類(lèi)型名 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度類(lèi)型名:數(shù)組元素的類(lèi)型類(lèi)型名:數(shù)組元素的類(lèi)型數(shù)組名:數(shù)組(變量)的名稱(chēng),標(biāo)識(shí)符數(shù)組名:數(shù)組(變量)的名稱(chēng),標(biāo)識(shí)符數(shù)組長(zhǎng)度:常量表達(dá)式,給定數(shù)組的大小數(shù)組長(zhǎng)度:常量表達(dá)式,給定數(shù)組的大小int a10; 定義一個(gè)含有定義一個(gè)含有10個(gè)整型元素的數(shù)組個(gè)整型元素的數(shù)組 achar c200;定義一個(gè)含有定義一個(gè)含有20
5、0個(gè)字符元素的數(shù)組個(gè)字符元素的數(shù)組 cfloat f5;定義一個(gè)含有定義一個(gè)含有5個(gè)浮點(diǎn)型元素的數(shù)組個(gè)浮點(diǎn)型元素的數(shù)組 f52、引用、引用n先定義,后使用先定義,后使用n只能引用單個(gè)的只能引用單個(gè)的數(shù)組元素?cái)?shù)組元素,不能一次引用整個(gè)數(shù)組,不能一次引用整個(gè)數(shù)組數(shù)組名數(shù)組名下標(biāo)下標(biāo)下標(biāo):整型表達(dá)式下標(biāo):整型表達(dá)式取值范圍:取值范圍:0,數(shù)組長(zhǎng)度,數(shù)組長(zhǎng)度-1int a10;10個(gè)元素:個(gè)元素:a0、a1、 a9n數(shù)組元素的使用方法與同類(lèi)型的變量相同數(shù)組元素的使用方法與同類(lèi)型的變量相同scanf(%d, &ai);temp = aindex; aindex= ak; ak = temp; p
6、rintf(%d , ai);下標(biāo)不要越界下標(biāo)不要越界不能使用不能使用a106定義數(shù)組定義數(shù)組類(lèi)型名類(lèi)型名 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度引用數(shù)組元素引用數(shù)組元素?cái)?shù)組名數(shù)組名下標(biāo)下標(biāo)int a10;a0 = a9 = 0;ak = temp;區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用下標(biāo)不要越界下標(biāo)不要越界數(shù)組長(zhǎng)度為常量數(shù)組長(zhǎng)度為常量77.1.3 一維數(shù)組的初始化一維數(shù)組的初始化n定義數(shù)組時(shí),對(duì)數(shù)組元素賦初值定義數(shù)組時(shí),對(duì)數(shù)組元素賦初值類(lèi)型名類(lèi)型名 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度 = 初值表初值表;int a10 = 1,2,3,4,5,6,7,8,9,10;a0=1, a1=2
7、,. a9=10n靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組的初始化靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組的初始化static int b5 = 1, 2, 3, 4, 5; 靜態(tài)存儲(chǔ)的數(shù)組如果沒(méi)有初始化,所有元素自動(dòng)賦靜態(tài)存儲(chǔ)的數(shù)組如果沒(méi)有初始化,所有元素自動(dòng)賦0static int b5;動(dòng)態(tài)存儲(chǔ)的數(shù)組如果沒(méi)有初始化,所有元素為隨機(jī)值動(dòng)態(tài)存儲(chǔ)的數(shù)組如果沒(méi)有初始化,所有元素為隨機(jī)值auto int c5;8static int b5 = 1, 2, 3;b0 = 1, b1 = 2, b2 = 3, b3 = 0, b4 = 0 auto int fib20 = 0, 1;fib0 = 0, fib1 = 1, 其余元素不確定其余元素
8、不確定n如果對(duì)全部元素都賦初值,可以省略數(shù)組長(zhǎng)度如果對(duì)全部元素都賦初值,可以省略數(shù)組長(zhǎng)度int a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; /*長(zhǎng)度為長(zhǎng)度為10*/針對(duì)部分元素的針對(duì)部分元素的初始化初始化97.1.4 使用一維數(shù)組編程使用一維數(shù)組編程數(shù)組和循環(huán)數(shù)組和循環(huán)for(i = 0; i n; i+) printf(%d , ai);數(shù)組下標(biāo)作為循環(huán)變量,通過(guò)循環(huán),逐個(gè)數(shù)組下標(biāo)作為循環(huán)變量,通過(guò)循環(huán),逐個(gè)處理數(shù)組元素處理數(shù)組元素 10一維數(shù)組示例一維數(shù)組示例例例 7-2 用數(shù)組計(jì)算用數(shù)組計(jì)算fibonacci數(shù)列的前數(shù)列的前20個(gè)數(shù),并個(gè)數(shù),并按每行打印按每行打印
9、5個(gè)數(shù)的格式輸出。個(gè)數(shù)的格式輸出。1, 1, 2, 3, 5, 例例7-3 輸入輸入5個(gè)整數(shù),將它們存入數(shù)組個(gè)整數(shù),將它們存入數(shù)組a中,再輸入中,再輸入1個(gè)數(shù)個(gè)數(shù)x,然后在數(shù)組中查找然后在數(shù)組中查找x,如果找到,輸出相如果找到,輸出相應(yīng)的下標(biāo),否則,輸出應(yīng)的下標(biāo),否則,輸出“Not Found”。例例 7-4 輸入輸入n(n10),再再輸入輸入n個(gè)數(shù)個(gè)數(shù)(1) 求最小值求最小值(2) 求最小值和它所對(duì)應(yīng)的下標(biāo)求最小值和它所對(duì)應(yīng)的下標(biāo)(3) 將最小值與第一個(gè)數(shù)交換,輸出交換后的將最小值與第一個(gè)數(shù)交換,輸出交換后的n個(gè)數(shù)個(gè)數(shù)例例 7-1 輸入輸入n(n10),再再輸入輸入n個(gè)數(shù),用選擇法將它個(gè)數(shù),
10、用選擇法將它們從小到大排序后輸出。們從小到大排序后輸出。11用數(shù)組計(jì)算用數(shù)組計(jì)算fibonacci數(shù)列的前數(shù)列的前20個(gè)數(shù),并個(gè)數(shù),并按每行打印按每行打印5個(gè)數(shù)的格式輸出。個(gè)數(shù)的格式輸出。1, 1, 2, 3, 5, 8, 13, 用數(shù)組計(jì)算并存放用數(shù)組計(jì)算并存放fibonacci數(shù)列的前數(shù)列的前20個(gè)數(shù)個(gè)數(shù)f0 = f1 = 1fn = fn-1 + fn-2 2n19例例 7-2 計(jì)算計(jì)算fibonacci數(shù)列數(shù)列12#include int main(void) int i; int fib20 = 1, 1; /* 數(shù)組初始化數(shù)組初始化 */ for(i = 2; i 20; i+)
11、fibi = fibi - 1 + fibi - 2; for(i = 0; i 20; i+) printf(%6d, fibi); if(i + 1) % 5 = 0) /* 5個(gè)數(shù)換行個(gè)數(shù)換行 */ printf(n); return 0; 例例 7-2 源程序源程序 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610987 1597 2584 4181 6765 13輸入輸入5個(gè)整數(shù),將它們存入數(shù)組個(gè)整數(shù),將它們存入數(shù)組a中,再輸入中,再輸入1個(gè)數(shù)個(gè)數(shù)x,然后在數(shù)組中查找然后在數(shù)組中查找x,如果找到,輸出相應(yīng)的下標(biāo),如果找到,輸出相應(yīng)的下標(biāo),否則,輸出
12、否則,輸出“Not Found”。輸入:輸入:2 9 8 9 6 9輸出:輸出:1輸入:輸入:2 9 8 9 6 7輸出:輸出:Not Found例例7-3 在數(shù)組中查找一個(gè)給定的數(shù)在數(shù)組中查找一個(gè)給定的數(shù)14#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x
13、) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Foundn); return 0; 例例 7-3 源程序源程序Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Enter 5 integers: 2 9 8 1 9Enter x: 7Not Found15#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d
14、, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Foundn); return 0; 例例 7-3 思考思考(1)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Index is 416#include int main(void) int i, sub, x; int a5; pri
15、ntf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); sub = -1; for(i = 0; i 5; i+) if(ai = x) sub = i; if(sub != -1) printf(Index is %dn, i); else printf(Not Foundn); return 0; 例例 7-3 思考思考(2)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 417#include
16、 int main(void) int i, min, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); min = a0; for(i = 1; i n; i+) if(ai min) min = ai; printf(min is %d n, min); return 0;例例 7-4(1) 求最小值求最小值Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min
17、is -118輸入輸入n(n10), 再再輸入輸入n個(gè)數(shù)個(gè)數(shù), 輸出最小值和它輸出最小值和它所對(duì)應(yīng)的下標(biāo)。所對(duì)應(yīng)的下標(biāo)。用用index記錄最小值對(duì)應(yīng)的下標(biāo)記錄最小值對(duì)應(yīng)的下標(biāo)aindex就是最小值就是最小值例例 7-4(2) 求最小值及其下標(biāo)求最小值及其下標(biāo)19#include int main(void) int i, index, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); index =
18、 0; for(i = 1; i n; i+) if(ai aindex) index = i; printf(min is %dtsub is %dn, aindex, index); return 0;求最小值及下標(biāo)求最小值及下標(biāo)Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min is -1 sub is 2 20輸入輸入n(n10), 再再輸入輸入n個(gè)數(shù)個(gè)數(shù),將最小值與第將最小值與第一個(gè)數(shù)交換,輸出交換后的一個(gè)數(shù)交換,輸出交換后的n個(gè)數(shù)。個(gè)數(shù)。用用index記錄最小值對(duì)應(yīng)的下標(biāo)記錄最小值對(duì)應(yīng)的下標(biāo)aindex就是最小值就是最小值最小值與第一個(gè)數(shù)交換最小
19、值與第一個(gè)數(shù)交換aindex a0例例 7-4(3) 交換最小值交換最小值21例例 7-1 選擇法排序選擇法排序35281輸入輸入n(n10), 再再輸入輸入n個(gè)數(shù)個(gè)數(shù),用選擇法將它們從小到大用選擇法將它們從小到大排序后輸出。排序后輸出。設(shè)設(shè) n=5 3 5 2 8 1(1) 1 5 2 8 3 (2) 2 5 8 3 (3) 3 8 5 (4) 5 8 223 5 2 8 1 (n=5)5個(gè)數(shù)個(gè)數(shù)(a0a4)中找最小數(shù),與中找最小數(shù),與a0交換交換(1) 1 5 2 8 3 a4 a04個(gè)數(shù)個(gè)數(shù)(a1a4)中找最小數(shù),與中找最小數(shù),與a1交換交換(2) 1 2 5 8 3 a2 a13個(gè)數(shù)個(gè)
20、數(shù)(a2a4)中找最小數(shù),與中找最小數(shù),與a2交換交換(3) 1 2 3 8 5 a4 a22個(gè)數(shù)個(gè)數(shù)(a3a4)中找最小數(shù),與中找最小數(shù),與a3交換交換(4) 1 2 3 5 8 a4 a3選擇法選擇法(1)23(1) n個(gè)數(shù)個(gè)數(shù) (a0an-1) 中找最小數(shù),與中找最小數(shù),與 a0 交換交換(2) n-1個(gè)數(shù)個(gè)數(shù) (a1an-1) 中找最小數(shù),與中找最小數(shù),與 a1 交換交換 (n-1) 2個(gè)數(shù)個(gè)數(shù) (an-2an-1) 中找最小數(shù),與中找最小數(shù),與 an-2 交換交換(1) 5個(gè)數(shù)個(gè)數(shù) (a0a4) 中找最小數(shù),與中找最小數(shù),與 a0 交換交換(2) 4個(gè)數(shù)個(gè)數(shù) (a1a4) 中找最小數(shù)
21、,與中找最小數(shù),與 a1 交換交換(3) 3個(gè)數(shù)個(gè)數(shù) (a2a4) 中找最小數(shù),與中找最小數(shù),與 a2 交換交換(4) 2個(gè)數(shù)個(gè)數(shù) (a3a4) 中找最小數(shù),與中找最小數(shù),與 a3 交換交換選擇法選擇法(2)24流程圖流程圖輸入數(shù)組ak=0kn-1aiaindexindex=i假(0)假(0)真(非0)真(非0)i=i+1交換aindex和ak輸出數(shù)組aindex=ki=k+1k=k+1in假(0)25選擇法排序選擇法排序 (程序段程序段) for(k = 0; k n-1; k+) index = k; for(i = k + 1; i n; i+) if(ai aindex) index
22、= i; temp = aindex; aindex = ak; ak = temp; Enter n: 5Enter 10 integers: 3 5 2 8 1After sorted: 1 2 3 5 826將將1個(gè)個(gè)3*2的矩陣存入的矩陣存入1個(gè)個(gè)3*2的二維數(shù)組中,的二維數(shù)組中,找出最大值以及它的行下標(biāo)和列下標(biāo),并輸找出最大值以及它的行下標(biāo)和列下標(biāo),并輸出該矩陣。出該矩陣。 7.2.1 程序解析程序解析7.2.2 二維二維數(shù)組的定義和引用數(shù)組的定義和引用7.2.3 二維二維數(shù)組的初始化數(shù)組的初始化7.2.4 使用二維數(shù)組編程使用二維數(shù)組編程7.2 找出矩陣中最大值所在的位置找出矩陣中
23、最大值所在的位置 277.2.1 程序解析求矩陣的最大值程序解析求矩陣的最大值 例例 7-5 將將1個(gè)個(gè)3*2的矩陣存入的矩陣存入1個(gè)個(gè)3*2的二維的二維數(shù)組中,找出最大值以及它的行下標(biāo)和列數(shù)組中,找出最大值以及它的行下標(biāo)和列下標(biāo),并輸出該矩陣。下標(biāo),并輸出該矩陣。 row 記錄最大值的行下標(biāo)記錄最大值的行下標(biāo)col 最大值的列下標(biāo)最大值的列下標(biāo)arowcol 就是最大值就是最大值28例例7-5 源程序源程序int main(void) int col, i, j, row; int a32; printf(“Enter 6 integers:n) ; for(i = 0; i 3; i+)
24、for(j = 0; j 2; j+) scanf(%d, &aij); for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); row = col = 0; for(i = 0; i 3; i+) for(j = 0; j arowcol) row = i; col = j; printf(max = a%d%d = %dn, row, col, arowcol); return 0; Enter 6 integers: 3 2 10 -96 -13 2 10 -96 -1max = a10 = 102
25、9二維數(shù)組二維數(shù)組多維數(shù)組的空間想象多維數(shù)組的空間想象二維數(shù)組:二維數(shù)組: 一個(gè)表格或一個(gè)平面矩陣一個(gè)表格或一個(gè)平面矩陣一維數(shù)組:一維數(shù)組: 一列長(zhǎng)表或一個(gè)向量一列長(zhǎng)表或一個(gè)向量多維數(shù)組:多維數(shù)組: 多維空間的一個(gè)數(shù)據(jù)列陣多維空間的一個(gè)數(shù)據(jù)列陣三維數(shù)組:三維數(shù)組: 三維空間的一個(gè)方陣三維空間的一個(gè)方陣307.2.2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用1、定義、定義類(lèi)型名類(lèi)型名 數(shù)組名數(shù)組名行長(zhǎng)度行長(zhǎng)度列長(zhǎng)度列長(zhǎng)度int a32;定義定義1個(gè)二維數(shù)組個(gè)二維數(shù)組a,3行行2列,列,6個(gè)元素個(gè)元素int b510;定義定義1個(gè)二維數(shù)組個(gè)二維數(shù)組a,5 行行 10 列,列, 50 個(gè)元素個(gè)元素
26、312、引用、引用數(shù)組元素的引用:數(shù)組元素的引用:數(shù)組名數(shù)組名行下標(biāo)行下標(biāo) 列下標(biāo)列下標(biāo)行下標(biāo)和列下標(biāo):整型表達(dá)式行下標(biāo)和列下標(biāo):整型表達(dá)式行下標(biāo)的取值范圍是行下標(biāo)的取值范圍是0,行長(zhǎng)度,行長(zhǎng)度-1列下標(biāo)的取值范圍是列下標(biāo)的取值范圍是0,列長(zhǎng)度,列長(zhǎng)度-1int a32; 3 行行 2 列,列, 6 個(gè)元素個(gè)元素a00 a01 a10 a11 a20 a21 下標(biāo)不要越界下標(biāo)不要越界32二維數(shù)組在內(nèi)存中的存放方式二維數(shù)組在內(nèi)存中的存放方式int a32;3 行行 2 列,列, 6 個(gè)元素個(gè)元素表示表示1個(gè)個(gè)3行行2列的矩陣列的矩陣a00 a01 a10 a11 a20 a21 二維數(shù)組的元素在
27、內(nèi)二維數(shù)組的元素在內(nèi)存中按行存中按行/列方式存放列方式存放a00a01a10a11a20a21 337.2.3 二維數(shù)組的初始化二維數(shù)組的初始化1、分行分行賦初值賦初值int a33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3, ,4,5;數(shù)組數(shù)組a1 2 3 4 5 67 8 9數(shù)組數(shù)組b1 2 30 0 04 5 00 0 02、順序賦初值、順序賦初值int a33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3,0,0,0,4,5;34省略行長(zhǎng)度省略行長(zhǎng)度對(duì)全部元素都賦了初值,對(duì)全部元素都賦了初值,int a
28、 3=1,2,3,4,5,6,7,8,9;或分行賦初值時(shí),在初值表中列出了全部行或分行賦初值時(shí),在初值表中列出了全部行static int b 3=1,2,3,4,5,數(shù)組數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 30 0 04 5 00 0 0357.2.4 使用二維數(shù)組編程使用二維數(shù)組編程行下標(biāo)和列下標(biāo)分別做為循環(huán)變量行下標(biāo)和列下標(biāo)分別做為循環(huán)變量, 通通過(guò)過(guò)二重循環(huán)二重循環(huán),遍歷二維數(shù)組,遍歷二維數(shù)組通常將行下標(biāo)做為外循環(huán)的循環(huán)變量通常將行下標(biāo)做為外循環(huán)的循環(huán)變量 列下標(biāo)列下標(biāo) 內(nèi)循環(huán)內(nèi)循環(huán)36定義定義1個(gè)個(gè) 3*2 的二維數(shù)組的二維數(shù)組a,數(shù)組元素的值由數(shù)組元素的值由下式給出
29、,按矩陣的形式輸出下式給出,按矩陣的形式輸出a。aij = i + j(0i2,0j1)例例7-6 生成一個(gè)矩陣并輸出生成一個(gè)矩陣并輸出 int a32;a00 a01 a10 a11 a20 a21 0 11 22 337#include int main(void) int i, j; int a32; for(i = 0; i 3; i+) for(j = 0; j 2; j+) aij = i + j; for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); return 0; a00 a01 a10 a
30、11 a20 a21 i = 0 j = 0i = 0 j = 1i = 1 j = 0i = 1 j = 1i = 2 j = 0i = 2 j = 1 例例7-6 源程序源程序0 11 22 338二維數(shù)組的輸入二維數(shù)組的輸入例例7-5中,中,int a32;for(i = 0; i 3; i+) for(j = 0; j 2; j+) scanf(%d, &aij);a00 a01 a10 a11 a20 a21 for(j = 0; j 2; j+) for(i = 0; i 3; i+) scanf(%d, &aij);Enter 6 integers: 3 2 10
31、 -9 6 -1 3 2 10 -9 6 -1max = a10 = 10Enter 6 integers: 32 10 -9 6 -13 -9 2 610 -1max = a20 = 1039int aNN; N是正整數(shù)是正整數(shù)aij:i、j的取值范圍的取值范圍0,N-1用二維數(shù)組用二維數(shù)組a表示表示N*N方陣時(shí),對(duì)應(yīng)關(guān)系方陣時(shí),對(duì)應(yīng)關(guān)系:a00 a01 a02 主對(duì)角線主對(duì)角線 a10 a11 a12 上三角上三角a20 a21 a22 下三角下三角 付對(duì)角線付對(duì)角線矩陣與二維數(shù)組矩陣與二維數(shù)組i=ji=ji+j=N-140輸入一個(gè)正整數(shù)輸入一個(gè)正整數(shù)n (1n6),根據(jù)下式生成根據(jù)下式生
32、成1個(gè)個(gè)n*n的的方陣,然后將該方陣轉(zhuǎn)置(行列互換)后輸出。方陣,然后將該方陣轉(zhuǎn)置(行列互換)后輸出。 aij = i * n + j + 1(0in-1,0jn-1)分析:分析:int a66; n=3時(shí)時(shí)例例7-7 方陣轉(zhuǎn)置方陣轉(zhuǎn)置 1 2 34 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij aji41#include int main(void) int i, j, n, temp; int a66; printf(“Enter n: ); scanf(%d, &n); /* 給二維數(shù)組賦值給二維數(shù)組賦值 略略*/ /* 行列
33、互換行列互換*/ for(i = 0; i n; i+) for(j = 0; j n; j+) if(i = j) /* 只遍歷上三角陣只遍歷上三角陣 */ temp = aij; aij = aji; aji = temp; /* 按矩陣的形式輸出按矩陣的形式輸出a 略略 */ return 0; 例例7-7 源程序源程序42 /* 行列互換行列互換*/ for(i = 0; i n; i+) for(j = 0; j n; j+) if(i = j) temp = aij; aij = aji; aji = temp; 1 2 3 4 5 67 8 9主對(duì)角線:主對(duì)角線:i = j上三角
34、:上三角: i =ji=01 4 7 2 5 63 8 9i=11 4 72 5 83 6 9例例7-7 說(shuō)明說(shuō)明for( j = i+1; j n; j+)43 /* 行列互換行列互換*/ for(i = 0; i n; i+) for(j = 0; j n; j+) temp = aij; aij = aji; aji = temp; 1 2 3 4 5 67 8 9例例7-7 思考思考i=01 4 7 2 5 63 8 9i=11 2 74 5 83 6 9i=21 2 3 4 5 67 8 944例例7-8 日期計(jì)算日期計(jì)算自定義自定義1個(gè)函數(shù)個(gè)函數(shù)day_of_year(year,
35、month, day),計(jì)計(jì)算并返回年算并返回年year、月、月month和日和日day對(duì)應(yīng)的是該年對(duì)應(yīng)的是該年的第幾天。的第幾天。 day_of_year(2000, 3, 1) 返回返回61day_of_year(1981, 3, 1) 返回返回60分析:分析: 月月 0 1 2 311 12非閏年非閏年 0 31 28 31 30 31閏年閏年 0 31 29 31 30 31int tab213= 0, 31, 28, 31, 30,31,30,31,31,30,31, 30,31 0, 31, 29, 31, 30,31,30,31,31,30,31, 30,3145例例7-8 源程
36、序源程序int day_of_year(int year, int month, int day) int k, leap; int tab213= 0, 31, 28, 31, 30,31,30,31,31,30,31, 30,31 0, 31, 29, 31, 30,31,30,31,31,30,31, 30,31 ; leap = (year%4=0&year%100!=0) | year %400=0; for (k=1; kmonth; k+) day = day + tableapk; return day;46例例7-9 輸入一個(gè)以回車(chē)結(jié)束的字符串輸入一個(gè)以回車(chē)結(jié)束的字符
37、串(少于少于10個(gè)字符個(gè)字符),它由數(shù)字字符組成,將該字符串,它由數(shù)字字符組成,將該字符串轉(zhuǎn)換成整數(shù)后輸出。轉(zhuǎn)換成整數(shù)后輸出。 7.3.1 程序解析程序解析7.3.2 一維字符數(shù)組一維字符數(shù)組7.3.3 字符串字符串7.3 進(jìn)制轉(zhuǎn)換進(jìn)制轉(zhuǎn)換477.3.1 程序解析程序解析-進(jìn)制轉(zhuǎn)換進(jìn)制轉(zhuǎn)換 #include int main(void) int i, n; char s10; printf(“Enter a string: ); /* 輸入字符串輸入字符串 */ i = 0; while(si = getchar( ) != n) i+; si = 0; n = 0; /* 將字符串轉(zhuǎn)換為整數(shù)
38、將字符串轉(zhuǎn)換為整數(shù) */ for(i = 0; si != 0; i+) if(si = 0) n = n * 10 + (si - 0); else break; printf(digit = %dn, n); return 0; Enter a string: 123digit = 123487.3.2 一維字符數(shù)組一維字符數(shù)組n字符串的存儲(chǔ)和運(yùn)算可以用一維字符數(shù)組實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算可以用一維字符數(shù)組實(shí)現(xiàn)n一維字符數(shù)組的定義、引用、初始化與其他類(lèi)一維字符數(shù)組的定義、引用、初始化與其他類(lèi)型的一維數(shù)組一樣。型的一維數(shù)組一樣。char str80; 定義一個(gè)含有定義一個(gè)含有80個(gè)字符型元素的
39、數(shù)組個(gè)字符型元素的數(shù)組str char t5=H, a, p, p, y;初始化數(shù)組初始化數(shù)組 t t0 t1 t4t H a p p y輸出數(shù)組輸出數(shù)組 t 的所有元素的所有元素for(i=0; i 對(duì)字符數(shù)組的操作對(duì)字符數(shù)組的操作521. 字符串的存儲(chǔ)數(shù)組初始化字符串的存儲(chǔ)數(shù)組初始化字符串可以存放在一維字符數(shù)組中字符串可以存放在一維字符數(shù)組中 static char s6 = H, a, p, p, y, 0;字符數(shù)組初始化:用字符串常量字符數(shù)組初始化:用字符串常量static char s6 = Happy;static char s6 = Happy;數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度 = 字符串的有效
40、長(zhǎng)度字符串的有效長(zhǎng)度 + 1char t5; Happy 能存入能存入t嗎嗎? s0 s1 s5s H a p p y 053字符串的存儲(chǔ)字符串的存儲(chǔ)auto char s80= Happy;字符串遇字符串遇 0 結(jié)束結(jié)束第一個(gè)第一個(gè) 0 前面的所有字符和前面的所有字符和 0 一起構(gòu)成了字一起構(gòu)成了字符串符串 Happy”0 之后的其他數(shù)組元素與該字符串無(wú)關(guān)之后的其他數(shù)組元素與該字符串無(wú)關(guān) s0 s1 s5s H a p p y 0 ? ?字符串由有效字符和字符串結(jié)束符 0 組成 542. 對(duì)字符串的操作對(duì)字符串的操作n把字符串放入一維字符數(shù)組(存儲(chǔ))把字符串放入一維字符數(shù)組(存儲(chǔ))n對(duì)字符串
41、的操作對(duì)字符串的操作 = 對(duì)字符數(shù)組的操作對(duì)字符數(shù)組的操作普通字符數(shù)組:數(shù)組元素的個(gè)數(shù)是確定的,一般普通字符數(shù)組:數(shù)組元素的個(gè)數(shù)是確定的,一般用下標(biāo)控制循環(huán)用下標(biāo)控制循環(huán)字符串:沒(méi)有顯式地給出有效字符的個(gè)數(shù),只規(guī)字符串:沒(méi)有顯式地給出有效字符的個(gè)數(shù),只規(guī)定在字符串結(jié)束符定在字符串結(jié)束符 0 之前的字符都是字符串之前的字符都是字符串的有效字符,一般用結(jié)束符的有效字符,一般用結(jié)束符 0 來(lái)控制循環(huán)來(lái)控制循環(huán)循環(huán)條件:循環(huán)條件:si != 0 55計(jì)算字符串的有效長(zhǎng)度,并輸出該字符串。計(jì)算字符串的有效長(zhǎng)度,并輸出該字符串。字符串的有效長(zhǎng)度字符串的有效長(zhǎng)度:有效字符的個(gè)數(shù)有效字符的個(gè)數(shù)數(shù)組中第一個(gè)數(shù)組
42、中第一個(gè) 0 前面的字符個(gè)數(shù)前面的字符個(gè)數(shù)例例6-10 計(jì)算計(jì)算字符串的有效長(zhǎng)度字符串的有效長(zhǎng)度 s0 s1 s5s H a p p y 0 ? ?56#include int main(void) int i = 0, len; char str80 = Happy; /* 初始化初始化 */ for(i = 0; stri != 0; i+) ; len = i; printf(len = %dn, len); for(i = 0; stri != 0; i+) /* 輸出字符串輸出字符串 */ putchar(stri); return 0; 例例7-10 源程序源程序 s0 s1 s5
43、s H a p p y 0 ? ?循環(huán)條件循環(huán)條件len = 5Happy 57for(i = 0; si != 0; i+) putchar(si);for(i = 0; i 80; i+) putchar(si);for(i = 0; i 對(duì)字符數(shù)組的操作對(duì)字符數(shù)組的操作存儲(chǔ)存儲(chǔ)數(shù)組初始化數(shù)組初始化static char s6= Hello;賦值賦值s0=a; s1=0;或者或者static char s6= a;a 2 個(gè)字符個(gè)字符 a 和和 0a 1 個(gè)字符常量個(gè)字符常量區(qū)分區(qū)分a 和和 a59字符串的輸入字符串的輸入字符串的存儲(chǔ)字符串的存儲(chǔ)字符數(shù)組初始化:字符數(shù)組初始化:static
44、 char s6 = Happy;賦值:賦值:s0 = a; s1 = 0;輸入輸入 0 代表空操作,無(wú)法輸入代表空操作,無(wú)法輸入輸入時(shí),設(shè)定一個(gè)輸入時(shí),設(shè)定一個(gè)輸入結(jié)束符輸入結(jié)束符將輸入結(jié)束符轉(zhuǎn)換為字符串結(jié)束符將輸入結(jié)束符轉(zhuǎn)換為字符串結(jié)束符 060輸入一個(gè)以回車(chē)結(jié)束的字符串輸入一個(gè)以回車(chē)結(jié)束的字符串(少于少于80個(gè)字個(gè)字符符),統(tǒng)計(jì)其中數(shù)字字符的個(gè)數(shù)。,統(tǒng)計(jì)其中數(shù)字字符的個(gè)數(shù)。分析:分析:數(shù)組長(zhǎng)度取上限數(shù)組長(zhǎng)度取上限80以以 n 做為輸入結(jié)束符做為輸入結(jié)束符例例7-11 統(tǒng)計(jì)字符統(tǒng)計(jì)字符61#include int main(void) int count, i; char str80; printf(“Enter a string: ); i = 0; while(stri = getchar( ) != n) i+; stri = 0; /* 輸入結(jié)束符輸入結(jié)束符字符串結(jié)束符字符串結(jié)束
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)管理b卷試題及答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備高級(jí)技能考前沖刺模擬試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能考試題庫(kù)
- 工程熱力學(xué)應(yīng)用測(cè)試及答案
- 農(nóng)業(yè)現(xiàn)代化種植標(biāo)準(zhǔn)化體系建設(shè)方案
- 客戶(hù)咨詢(xún)與需求記錄表
- 傳統(tǒng)文化在初中英語(yǔ)課中深度融入教案
- 儀器設(shè)備使用說(shuō)明及維護(hù)保養(yǎng)指導(dǎo)書(shū)
- 美容美發(fā)服務(wù)安全責(zé)任協(xié)議書(shū)
- 《小學(xué)數(shù)學(xué)幾何圖形識(shí)別與性質(zhì)理解教學(xué)方案》
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫(kù)含答案解析
- 科研機(jī)構(gòu)科技成果轉(zhuǎn)化協(xié)議
- T-ZJHIA 13-2024 醫(yī)院私有云框架和基礎(chǔ)設(shè)施技術(shù)規(guī)范
- DB51T 1048-2010 土壤樣品采集技術(shù)規(guī)范 第1部分:適用于測(cè)土配方施肥和耕地地力評(píng)價(jià)
- 外墻窗洞企口施工深化要點(diǎn)
- 充電樁維保投標(biāo)方案
- 乳腺癌復(fù)發(fā)和轉(zhuǎn)移治療
- 中國(guó)礦業(yè)大學(xué)(北京)《大學(xué)物理》2023-2024學(xué)年第一學(xué)期期末試卷
- 物業(yè)保潔常用藥劑MSDS
- 人音版音樂(lè)七年級(jí)上冊(cè)《厄爾嘎茲》課件
- 藥物臨床治療學(xué)
評(píng)論
0/150
提交評(píng)論