




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第七章 數(shù)組 一維數(shù)組 二維數(shù)組 字符串輸入 30 個數(shù),將它們排序后輸出。 數(shù)組:相同類型數(shù)據(jù)的有序集合 在內(nèi)存中連續(xù)存放用數(shù)組名和下標(biāo)唯一地確定數(shù)組元素每個元素都屬于同一類型s0 1 2 29 s0 s1 s29s0、s1、s2、s29 一批相同類型的變量使用同一個數(shù)組變量名,用下標(biāo)來相互區(qū)分優(yōu)點:表述簡潔,可讀性高便于使用循環(huán)結(jié)構(gòu)s0 1 2 29 s0 s1 s297.1 一 維 數(shù) 組7.1.1 一維數(shù)組的定義和引用1、定義 類型名 數(shù)組名數(shù)組長度類型名:數(shù)組元素的類型數(shù)組名:數(shù)組變量的名稱(數(shù)組),標(biāo)識符數(shù)組長度:常量表達(dá)式,給定數(shù)組的大小int a10 ; 定義一個含有10個整型
2、元素的數(shù)組 aint a10 ; 定義一個含有10個整型元素的數(shù)組 achar c200 ; 定義一個含有200個字符元素的數(shù)組 cfloat f5; 定義一個含有5個浮點型元素的數(shù)組 f2、數(shù)組元素的引用先定義,后使用只能引用單個的數(shù)組元素,不能一次引用整個數(shù)組數(shù)組元素的引用:數(shù)組名下標(biāo)下標(biāo):整型表達(dá)式取值范圍:,數(shù)組長度-1int a10 ;10個元素:a0、a1、 a9下標(biāo)不要越界,不能使用a10定義數(shù)組: 類型名 數(shù)組名數(shù)組長度引用數(shù)組元素:數(shù)組名下標(biāo)數(shù)組元素的使用方法與同類型的變量相同int k, a10;k=3; a0=23;ak-2=a0+1;scanf(%d, &a9)
3、;區(qū)分 定義數(shù)組 和引用數(shù)組元素定義數(shù)組: 類型名 數(shù)組名數(shù)組長度引用數(shù)組元素:數(shù)組名下標(biāo)int a10;a0=a1=a9=0;下標(biāo)不要越界main( ) int a10; int i; for(i = 0; i 10; i+) a i = i; for(i = 0; i 10; i+) printf(%d , ai);輸出: 0 1 2 3 4 5 6 7 8 9 a0 a1 a9a 0 1 2 3 4 5 6 7 8 9main( ) int i; int a10; for(i = 0; i 10; i+) scanf(“%d”, &ai); for(i = 0; i =0; i-
4、) printf(%d , ai);輸入: 1 2 3 4 5 6 7 8 9 10 a0 a1 a9a 1 2 3 4 5 6 7 8 9 10輸出:1 2 3 4 5 6 7 8 9 1010 9 8 7 6 5 4 3 2 13、程序舉例例 7.1 輸入10個數(shù), 求和.例 7.2 用數(shù)組計算fibonacci數(shù)列的前20個數(shù),并按每行打印5個數(shù)的格式輸出。1, 1, 2, 3, 5, 例7.3 輸入5個整數(shù),將它們存入數(shù)組a中,再輸入1個數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應(yīng)的下標(biāo),否則,輸出“Not Found”。程序舉例例 7.4_1 輸入10個數(shù), 求最小值.例 7.4_2
5、 輸入n(n10), 再輸入n個數(shù),求最小值。例 7.4_3 輸入n(n10), 再輸入n個數(shù), 輸出最小值和它所對應(yīng)的下標(biāo)。例 7.4_4 輸入n(n10), 再輸入n個數(shù),將最小值與第一個數(shù)交換,輸出交換后的n個數(shù)。例 7.5 輸入n(n10), 再輸入n個數(shù),用選擇法將它們從小到大排序后輸出。例 7.1求和輸入10個數(shù), 求和.main( ) int i, a10; long sum; for(i = 0; i 10; i+) scanf(“%d”, &ai); sum = 0; for(i = 0; i 10; i+) sum = sum+ai; printf(%ldn , s
6、um);# include “stdio.h”void main( ) int a10, i; long sum=0; for(i = 0; i 10; i+) scanf(“%d”, &ai); sum = sum+ai; printf(%ldn , sum); 用數(shù)組計算fibonacci數(shù)列的前20個數(shù),并按每行打印5個數(shù)的格式輸出。1, 1, 2, 3, 5, 8, 13, 分析:用數(shù)組計算并存放fibonacci數(shù)列的前20個數(shù)f0=f1=1fn=fn-1+fn-2 2n19例 7.2 計算fibonacci數(shù)列main( ) int i, fib20; fib0=fib1=
7、1; for(i=2; i20; i+) fibi=fibi-1+fibi-2; for(i=0; i20; i+) printf(“%6d, fibi); if(i+1)%5=0) printf(“n); 輸入5個整數(shù),將它們存入數(shù)組a中,再輸入1個數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應(yīng)的下標(biāo),否則,輸出“Not Found”。例7.3查找輸入:2 9 8 9 6 9輸出: 1void main( ) int i, x, a5; for(i=0; i5; i+) scanf(“%d”, &ai); scanf(“%d”, &x); for(i=0; i=5) print
8、f(“Not Foundn”); 13void main( ) int i, x, a5; for(i=0; i5; i+) scanf(“%d”, &ai); scanf(“%d”, &x); for(i=0; i5; i+) if(ai=x) printf(%dn, i); 輸入:2 9 8 9 6 9輸出: 輸入:2 9 8 9 6 9輸出: 3void main( ) int i, x, sub, a5; for(i=0; i5; i+) scanf(“%d”, &ai); scanf(“%d”, &x); for(i=0; i5; i+) if(ai=
9、x) sub=i; printf(%dn, sub); 輸入10個數(shù), 求最小值.main( ) int i, min, a10; for(i = 0; i 10; i+) scanf(“%d”, &ai); min = a0; for(i = 1; i 10; i+) if ( ai min) min = ai; printf(%dn , min);例 7.4_ 1 求最小值輸入n(n10), 再輸入n個數(shù),求最小值。main( ) int i, min, n, a10; scanf(“%d”, &n); for(i = 0; i n; i+) scanf(“%d”, &am
10、p;ai); min = a0; for(i = 1; i n; i+) if ( ai min) min = ai; printf(%dn , min);例 7.4_2 求最小值(n個數(shù))輸入n(n10), 再輸入n個數(shù), 輸出最小值和它所對應(yīng)的下標(biāo)。用index記錄最小值對應(yīng)的下標(biāo)aindex就是最小值例 7.4_3 求最小值(下標(biāo))輸出最小值和它所對應(yīng)的下標(biāo) N-S流程圖輸入數(shù)組aindex=0for i=1 to n-1ai aindexindex=i輸出最小值aindex和下標(biāo)indexYNmain( ) int i, min, n, a10; scanf(“%d”, &n)
11、; for(i = 0; i n; i+) scanf(“%d”, &ai); index=0; for(i = 1; i n; i+) if (aiaindex) index=i; printf(%d %dn , aindex, index); 輸入n(n10), 再輸入n個數(shù),將最小值與第一個數(shù)交換,輸出交換后的n個數(shù)。用index記錄最小值對應(yīng)的下標(biāo)aindex就是最小值最小值與第一個數(shù)交換aindex a0例 7.4_4 最小值交換例 7.5 選擇法排序35281輸入n(n10), 再輸入n個數(shù),用選擇法將它們從小到大排序后輸出。 n=5(1) 1 5 2 8 3 (2) 2
12、5 8 3 (3) 3 8 5 (4) 5 8 3 5 2 8 1 (n=5) 5個數(shù)(a0a4)中找最小數(shù),與a0交換(1) 1 5 2 8 3 a4 a0 4個數(shù)(a1a4)中找最小數(shù),與a1交換(2) 1 2 5 8 3 a2 a1 3個數(shù)(a2a4)中找最小數(shù),與a2交換(3) 1 2 3 8 5 a4 a2 2個數(shù)(a3a4)中找最小數(shù),與a3交換(4) 1 2 3 5 8 a4 a3(1) n個數(shù)(a0an-1)中找最小數(shù),與a0交換(2) n-1個數(shù)(a1an-1)中找最小數(shù),與a1交換 (n-1) 2個數(shù)(an-2an-1)中找最小數(shù),與an-2交換(1) 5個數(shù)(a0a4)中
13、找最小數(shù),與a0交換(2) 4個數(shù)(a1a4)中找最小數(shù),與a1交換(3) 3個數(shù)(a2a4)中找最小數(shù),與a2交換(4) 2個數(shù)(a3a4)中找最小數(shù),與a3交換n個數(shù)(a0an-1)中找最小數(shù),與a0交換N-S流程圖輸入數(shù)組aindex=0for i=1 to n-1ai aindexindex=iaindexa0YNN-S流程圖(選擇排序)輸入數(shù)組aindex=kfor i = k+1 to n-1ai aindexindex=iaindexakYNfor k=0 to n-2輸出數(shù)組avoid main() int i, index, k, n, temp, a10; scanf(“%
14、d”, &n); for(i=0; in; i+) scanf(“%d”, &ai); for(k=0; kn-1; k+) index=k; for(i=k+1; in; i+) if(ai aindex) index=i; temp=aindex; aindex=ak; ak=temp; for(i=0; in; i+) printf(“%d ”, ai); 7.1.2 一維數(shù)組的初始化定義數(shù)組時,對數(shù)組元素賦初值類型名 數(shù)組名數(shù)組長度= 初值表;1. 對全部元素賦初值int a10=0,1,2,3,4,5,6,7,8,9;a0=0, a1=1,. a9=9靜態(tài)數(shù)組、全局?jǐn)?shù)
15、組、自動型數(shù)組初始化 static int b5=1, 2, 3, 4, 5; 靜態(tài)存儲的數(shù)組如果沒有初始化,自動給所有元素賦0 static int b52. 部分元素初始化static int b5=1,2,3;b0=1, b1=2, b2=3, b3=0, b4=0 auto int fib20=0,1;如果對全部元素都賦初值,可以省略數(shù)組長度int a =0,1,2,3,4,5,6,7,8,9;建議不要省略數(shù)組長度7.2 二維數(shù)組多維數(shù)組的空間想象二維數(shù)組: 一個表格或一個平面矩陣一維數(shù)組: 一列長表或一個向量多維數(shù)組: 多維空間的一個數(shù)據(jù)列陣三維數(shù)組: 三維空間的一個方陣7.2.1
16、二維數(shù)組的定義和引用1、定義類型名 數(shù)組名行長度列長度int a32; 定義1個二維數(shù)組a,3行2列,6個元素int b510; 5 行 10 列, 50 個元素 2、數(shù)組元素的引用先定義,后使用定義:類型名 數(shù)組名行長度列長度數(shù)組元素的引用: 數(shù)組名行下標(biāo) 列下標(biāo)行下標(biāo)的取值范圍是0,行長度-1列下標(biāo)的取值范圍是0,列長度-1下標(biāo)不要越界int a32;3 行 2 列, 6 個元素表示1個3行2列的矩陣a00 a01 a10 a11 a20 a21 二維數(shù)組的元素在內(nèi)存中按行/列方式存放a00a01a10a11a20a21 遍歷二維數(shù)組行下標(biāo)和列下標(biāo)分別做為循環(huán)變量, 通過二重循環(huán),遍歷二維
17、數(shù)組通常將行下標(biāo)做為外循環(huán)的循環(huán)變量a00 a01 a10 a11 a20 a21 for(i = 0; i 3; i+) for(j=0; j2; j+) aij = i+j;i=0 j=0i=0 j=1i=1 j=0i=1 j=1i=2 j=0i=2 j=1 0 11 22 3輸入二維數(shù)組int a32;for(i = 0; i 3; i+) for(j=0; j2; j+) scanf(“%d”,&aij );輸入:1 2 3 4 5 6a00 a01 a10 a11 a20 a21 1 23 45 6按矩陣的形式輸出二維數(shù)組int a32;for(i = 0; i 3; i+)
18、 for(j=0; j2; j+) printf(“%d”,&aij ); printf(“n”);a00 a01 a10 a11 a20 a21 3、程序舉例例7.6 定義1個3*2的二維數(shù)組a,數(shù)組元素的值由下式給出,按矩陣的形式輸出a。 aij=i+j(0i2,0j1) 例7.7 找出矩陣中絕對值最小的元素,以及它的行下標(biāo)和列下標(biāo)。 例7.8 方陣轉(zhuǎn)置(行列互換)定義1個3*2的二維數(shù)組a,數(shù)組元素的值由下式給出,按矩陣的形式輸出a。 aij=i+j(0i2,0j1)例7.6 #include void main( ) int i, j; int a32; for(i=0; i3
19、; i+) for(j=0; j2; j+) aij=i+j; for(i=0; i3; i+) for(j=0; j2; j+) printf(%4d, aij); printf(n); 找出矩陣中絕對值最小的元素,以及它的行下標(biāo)和列下標(biāo)。求絕對值函數(shù) abs( ) 或 fabs( ) 頭文件 math.hrow記錄絕對值最小的元素的行下標(biāo)col記錄 列下標(biāo)arowcol就是絕對值最小的元素例7.7 #include #include void main( ) int i, j; int a32; for(i = 0; i 3; i+) for(j=0; j2; j+) scanf(“%d”
20、,&aij ); row=col=0; for(i=0; i3; i+) for(j=0; j2; j+) if(abs(aij)abs(arowcol) row=i; col=j; printf(“a%d%d=%dn, row, col, arowcol); 輸入:3 2 10 -9 6 -1 3 210 -9 6 -1int aNN; N是正整數(shù)數(shù)組元素 aij,i和j的取值范圍0,N-1用二維數(shù)組a表示N*N方陣時,對應(yīng)關(guān)系:a00 a01 a02 主對角線 a10 a11 a12 上三角a20 a21 a22 下三角方陣 i=ji=j輸入一個正整數(shù)n (1n6),根據(jù)下式生成1
21、個n*n的方陣,然后將該方陣轉(zhuǎn)置(行列互換)后輸出。 aij=i*n+j+1(0in-1,0jn-1)int a66例7.8 分析1 2 3 4 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij aji#include void main( ) int i, j, n, t; int a66; scanf(“%d”, &n); for(i=0; in; i+) for(j=0; jn; j+) aij=i*n+j+1; 輸入 31 2 3 4 5 67 8 9 for(i=0; in; i+) for(j=0; jn; j+) t=ai
22、j; aij=aji; aji=t; for(i=0; in; i+) for(j=0; jn; j+) printf(%4d, aij); printf(n); for(i=0; in; i+) for(j=0; j n; j+) t = aij; aij = aji; aji = t; i=0:1 4 7 2 5 63 8 9i=1:1 2 7 4 5 83 6 9i=2:1 2 3 4 5 67 8 91 2 3 4 5 67 8 9 for(i=0; in; i+) for(j=0; j n; j+) if(i = j ) t = aij; aij = aji; aji = t; 1
23、2 3 4 5 67 8 9主對角線:i = j上三角: i =ji=0:1 4 7 2 5 63 8 9i=1:1 4 7 2 5 83 6 9 for(i=0; in; i+) for(j=0; j n;j+) if(i = j ) t=aij; aij=aji; aji=t; 1 2 3 4 5 67 8 9主對角線:i = j上三角: i =jfor( j = i; j n; j+)7.2.2 二維數(shù)組的初始化1、分行賦初值int a33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3,4,5;數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 3
24、0 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;省略行長度對全部元素都賦了初值,int a 3=1,2,3,4,5,6,7,8,9;或分行賦初值時,在初值表中列出了全部行static int b 3=1,2,3,4,5,建議不要省略數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 30 0 04 5 00 0 07.3 字符串字符串的存儲和運算用一維字符數(shù)組實現(xiàn)7.3.1 一維字符數(shù)組定義、引用、初始化char str80 ; 定義一個含有80個字符型元素的數(shù)組str cha
25、r t5=H, a, p, p, y;初始化數(shù)組 t t0 t1 t4t H a p p y7.3.1 一維字符數(shù)組char t5=H, a, p, p, y;static char s6=H, a, p, p, y; s0 s1 s5s H a p p y 0 t0 t1 t4t H a p p ystatic char s6=H, a, p, p, y, 0;0代表字符0,也就是ASCII碼為0的字符 static char s6=H, a, p, p, y, 0;一維字符數(shù)組char t5=H, a, p, p, y;for(i=0; i 對字符數(shù)組的操作存儲static char s6
26、=H, a, p, p, y, 0;字符數(shù)組初始化: 用字符串常量static char s6=Happy;static char s6= Happy;字符串static char s6= Happy;數(shù)組長度 = 字符串的有效長度+1char t5Happy 不能存入t s0 s1 s5s H a p p y 0字符串a(chǎn)uto char s80= Happy; s0 s1 s5s H a p p y 0 ? ?字符串遇0結(jié)束第一個0前面的所有字符和0一起構(gòu)成了字符串Happy”0之后的其他數(shù)組元素與該字符串無關(guān)計算字符串的有效長度,并輸出該字符串字符串的有效長度:有效字符的個數(shù)數(shù)組中第一個0
27、前面的字符個數(shù)例7.10 字符串的有效長度 s0 s1 s5s H a p p y 0 ? ?void main( ) int i=0, len; char s80=Happy; for(i=0; si!=0; i+) ; len=i; printf(len = %dn, len); for(i=0; si!=0; i+) putchar(si); s0 s1 s5s H a p p y 0 ? ?輸出len=5Happy輸出字符串for(i=0; si!=0; i+) putchar(si);for(i=0; i80; i+) putchar(si);for(i=0; i 對字符數(shù)組的操作存儲字符數(shù)組初始化: 用字符串常量static char s6= ”Hello;賦值s0=a; s1=0;等價static char s6= a;字符串區(qū)分 “a” 和 a“a” 2個字符a和0a 1個字符常量輸入字符串 把字符串放入一維字符數(shù)組(存儲) 對字符串的操作 = 對字符數(shù)組的操作存儲 字符數(shù)組初始化: static char s6= ”Happy; 賦值:s0=a; s1=0; 輸入 0代表空操作,無法輸入輸入時,設(shè)定一個輸入結(jié)束符將輸入結(jié)束符轉(zhuǎn)換為字符串結(jié)束符0輸入一個以問號結(jié)束的字符串(少于80個字符),統(tǒng)計其中數(shù)字字符的個數(shù)。分析:數(shù)組長度取上限80以?做為輸入結(jié)束符
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉儲管理員崗位面試問題及答案
- 威海市重點中學(xué)2025屆化學(xué)高二下期末預(yù)測試題含解析
- 2025屆黑龍江省齊齊哈爾市第八中學(xué)高二下化學(xué)期末統(tǒng)考試題含解析
- 河北省承德市豐寧縣鳳山第一中學(xué)2025年高二下化學(xué)期末聯(lián)考模擬試題含解析
- 2025屆廣西欽州市靈山縣化學(xué)高一下期末監(jiān)測模擬試題含解析
- 江蘇裝飾裝修管理辦法
- 新疆旅居人員管理辦法
- 機(jī)械外協(xié)加工管理辦法
- 人臉3D建模與渲染-洞察及研究
- 北京隔離薪資管理辦法
- 2025年廣東高考政治試卷真題答案詳解講評(課件)
- 2025年家庭照護(hù)師職業(yè)資格考試試題及答案
- 國家開放大學(xué)2024年春季學(xué)期期末統(tǒng)一考試《中文學(xué)科論文寫作》試題(試卷代號11332)
- GB/T 33855-2017母嬰保健服務(wù)場所通用要求
- GB 8109-2005推車式滅火器
- 支架植入知情同意書模板
- 人教版四年級上冊語文生字組詞
- 茶文化講座優(yōu)選ppt資料
- 水不同溫度的熱焓值
- 綠化工程施工技術(shù)方案及措施(可編輯)
- 國航特殊餐食代碼表
評論
0/150
提交評論