華中科技大學光電子學院C語言課件第六章.ppt_第1頁
華中科技大學光電子學院C語言課件第六章.ppt_第2頁
華中科技大學光電子學院C語言課件第六章.ppt_第3頁
華中科技大學光電子學院C語言課件第六章.ppt_第4頁
華中科技大學光電子學院C語言課件第六章.ppt_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1,第六章數(shù) 組 數(shù)組: 長度固定, 類型相同的元素的有序集合,1.一維數(shù)組 一. 定義形式: 類型說明符 數(shù)組名常量表達式 其中: 類型說明符: 可以是整型,浮點型,字符型,也可以是 構造類型:說明元素的類型, 常量表達式: 整常量,字符常量和sizeof表達式,且其 值為正整數(shù)(浮點常量不行):指明元素 的 個數(shù). 例:int b10; float a4*5; char mc-a; int p2*sizeof(double);,例: int c10.0 ; /*錯誤*/ float t-5; /*錯誤*/,2,明確以下幾點: 1. 常量表達式說明了數(shù)組元素的個數(shù)(長度),數(shù)組下界 從0開始

2、編號,元素的類型由類型說明符指定. 例: int b10; 定義了b是含有10個元素的int 型數(shù)組,其元素表示 為b0,b1,b2,.b9 機器分配10個單位的連續(xù)存儲空間,每個單元存放 一個int 型的值. 例: char mc-a; /* m0, m12個元素,都是char */,2. 定義數(shù)組時, 數(shù)組元素的個數(shù)必須確定. 例: int n; char namen; /*錯誤*/,3. 數(shù)組長度不顯示說明的情況(引用性說明,可不給出數(shù) 組長度,定義性說明必須給出長度): 1) 數(shù)組標識符作為函數(shù)參數(shù)時(引用性說明,不必給出數(shù) 組長度) 如: copystr ( char s , cha

3、r t ) /*長度由實參數(shù)組給出*/ . ,2) 給數(shù)組賦初值時 如: int b5=1,2,3,4,5; int a =1,2,3,4,5,static int b5=1,2,3; = static int b =1,2,3,0,0; 初值個數(shù)少于長度時,外部數(shù)組和靜態(tài)數(shù)組,后面元 素為0值,自動數(shù)組后面元素值不確定.,4,初值個數(shù)多于長度時,錯誤 例: int c3=1,2,3,4; /*錯誤*/ 4. 一維數(shù)組(具有一個下標)描述了數(shù)學上的向量或線 性序列,5,二. 對數(shù)組元素的訪問,數(shù)組引用形式,引用數(shù)組元素: 賦值,輸入,輸出等操作 引用數(shù)組名(指針或作為函數(shù)的調(diào)用參 數(shù)(實參)

4、),數(shù)組元素的表示:下標變量:數(shù)組名整型表達式,例: 編程: 統(tǒng)計10個整數(shù)中奇數(shù)之和 1)用簡單變量做 main( ) int x,i,y=0; for ( i=1; i=10; +i ) scanf ( “%d”, else printf ( “sum=%dn”, y); ,) 用數(shù)組做 main( ) int i, x10, y=0; for ( i=0; i=9; + i ) scanf ( “%d”, ,例: 編程輸出20個元素的數(shù)組中最大數(shù)與最小數(shù) #define N 20 main ( ) int i, max , min, aN; for ( i=0; imax ) max=a

5、i; if ( aimin ) min=ai; printf ( “max=%dn”, max ); printf ( “min=%dn”, min); ,8,例: 編程:計算多項式的值:,解:,如:,#define N 6 main( ) int i; float x, aN, p=0.0; for ( i=0; in; +i ) scanf (“%f”, ,當i=0,1,2,.,n時,p=p*x+a 其中:p 的初值為0,i,9,例: 輸入10個整數(shù)將它從小到大排序輸出. 采用冒泡排序法(兩兩比較法). void sort ( int a , n ) int i, j, temp; for

6、 ( i=0; jaj ) /*交換*/ temp=ai; ai=aj; aj=temp; ,10,#define N 10 main( ) int i, j, bN; printf ( “input %d numbers: n”, N ); for ( i=0; iN; i+ ) scanf ( “%d”, ,注: 數(shù)組名作為函數(shù)的參數(shù)傳送時, 并不是復制數(shù)組, 而 是實參數(shù)組的開始地址,11,即: 第0個元素的地址: b0, 這就是說: 數(shù)組名表示該數(shù) 組作為數(shù)組的首地址,即:形參數(shù)組中元素的變化會 影響實參數(shù)組中元素的變化(與簡單變量作參數(shù) 傳值不同!).,例: 用對調(diào)元素的方法.反向輸

7、出數(shù)組中的元素. 解: 對調(diào)元素: a0與an-1, a1與an-2, ,設: 用i, j, 表示對調(diào)元素的下標,則確定: 1) i 與j的關系為: j = N i 1 2)i 的變化范圍: i 的起始位置0, 終止位置為p=(N / 2)-1 例如: N=8時 N=9時 i=0,1,2,3 對調(diào) i=0,1,2,3 a4不動 j=7,6,5,4 j=8,7,6,5,12,#define N 9 main() int i, j, t, p, aN; printf ( “input %d numbers: n ” , N ); for ( i=0; iN; i+ ) scanf ( “%d”,

8、,13,練習: 1.將10個整數(shù)的數(shù)組從小到大排序,輸出排序后的元 素和每個元素所對應的原來次序(下標值) 例: 輸入: 27, 3, 25, 27, 14, 39 輸出: 3 1 14 4 25 2 27 0 28 3 39 5 2.輸入15個整數(shù),從大到小排序.方法: 小數(shù)從最后位置開 始起排,然后輸出該15個整數(shù). 3.將15個整數(shù)元素的數(shù)組a15從第m個元素(由鍵盤輸入) 一直到最后元素平移到數(shù)組的開頭, 把a0到am-1中 的元素,向后順移,2.字符數(shù)組與字符串 一.字符數(shù)組與字符串的說明及初值化 字符數(shù)組: 以字符類型組成的數(shù)組且最后一個元素不用 0結尾. 字符串: 每一個元素類型

9、為char 的一維數(shù)組, 即以結束 符 0結尾的字符數(shù)組. 例:字符串的說明: char s6 = “HAPPY” ; char s = “HAPPY” ; char s = H,A,P,P,Y, 0; 等價于: s0=H, s1=A, , s5=0 可見: 字符串常量對應的變量形式是字符串(非簡單 變量). 例:字符數(shù)組的說明: char s1 = H,A,P,P,Y;,二.字符串的操作 對字符串的引用,賦值和其他運算與普通數(shù)組相同,必須逐個元素進行. 與普通數(shù)組不同處理:輸入scanf或輸出printf函數(shù)用%s對整個字符串處理 如: scanf ( “%s”, s); /*用數(shù)組名, 而

10、不是 scanf ( “%s”, 則指輸出:123,Turbo C 標準字符串文件string.h 中標準串處理函數(shù)可供調(diào)用: 常用函數(shù) gets(s) 輸入一個字符串到s puts(s) 輸出s字符串 strcpy( s1, s2 ) 將字符串s2拷貝到s1中 strcat ( s1, s2 ) 把串s2接到s1之后 strlen ( s ) 求s的串”0”以前的字符個數(shù) strcmp ( s1, s2 ) 串比較: s1與s2相同(長度相等,對應元素 相同)則返回0 s1s2時,則返回一正整數(shù). s1s2時,則返回一負整數(shù),例: 編程統(tǒng)計輸入字符串中,字母,數(shù)字,空格,和其他字符的個 數(shù).

11、 #include int a, d, s, t; /*利用外部變量帶出多個值*/ main( ) char text80; printf ( “input string : n ” ); gets ( text ); a=d=s=t=0; count (text ); /*數(shù)組名作實參表明數(shù)組的首址*/ printf ( “ alph: %d, digit: %dn ”, a, d ); printf ( “ space: %d, other:%d n ”, s, t ); /*count函數(shù)*/,count ( char str ) int i; for ( i=0; stri!=0; i

12、+ ) if ( ( stri = a ,例:將一個整數(shù)轉換成對應的數(shù)字串,并輸出(需要把數(shù)字串反向)如輸入:-123 , 則輸出:-123,#include #define INTLEN 6 void reverse ( char s ) /*將串s 求反*/ int c, j, i ; for ( i=0, j=strlen(s) 1 ; ij; i+, j- ) c=si; si=sj; sj=c; ,/*將整數(shù)轉換成串*/ void itoa ( int n, char s ) int i, sign; if ( ( sign=n )0); if ( sign0) si+=-; si=

13、0; reverse(s); ,main( ) int n; char sINTLEN; printf ( “input a integer:” ); scanf ( “%d”, ,3.多維數(shù)組 一.多維數(shù)組定義及初始化 一般定義形式: 存儲類型說明符 類型說明符 數(shù)組名常量表達式1 常量表達式2=初值表;,例: int x34; /*二維數(shù)組有兩個下標值 */ 表示3行4列12個元素組成的數(shù)組,3行4列排列邏輯結構(矩陣) x00 x01 x02 x03 x10 x11 x12 x13 x20 x21 x22 x23 按行分配線性存儲地址:,例: int a32 = 1,2,3,4,5,6

14、; 賦初值:a00=1 a01=2 a10=3 a11=4 a20=5 a21=6 等價于:int a32 = 1,2 , 3, 4, 5, 6 ; int a 2= 1,2 , 3, 4, 5, 6 ;,注: 1) 顯式賦初值時,多維數(shù)組除最左邊一維下標不必指出 長度,其余各維均要指出長度,第一維的長度由初值個 數(shù)確定.,2) 可以只給部分元素賦初值,例: 定義,則: int a33 = 1,0,0, 0,1,0,0,0,1 ; int a33 = 1, 0,1,0,0,1 ; int a3 = 1, 0,1,0,0,1 ;,3) 二維數(shù)組可看成特殊一維數(shù)組,即: 以行的元素為首址的一維數(shù)組

15、.,如: int a23; /* a0 3行2列,每列含4個元素的三維數(shù)組.,4) 一維數(shù)組在邏輯上表示線性表或向量結構 二維數(shù)組在邏輯上表示平面上的表格或矩陣結構 三維數(shù)組在邏輯上表示空間點陣的結構 n維數(shù)組在邏輯上表示n維空間點陣的結構,二.多維數(shù)組元素的訪問,例: 求3*4矩陣中最大元素的值及所在的行號和列號,main( ) int i, j, row=0, col=0, max; int a34; printf ( “ input array element : n” ); for ( i=0; i3; i+ ) printf ( “ input %d line: n”, i ); f

16、or ( j=0; j4; j+ ) scanf ( “%d”, ,for ( i=0; i max ) max = aij; row =i; col=j; printf( “max =%d; row=%d, col=%dn”,max, row,col ); /*end of main*/,按行輸入:1 2 3 4 5 6 7 8 9 10 11 12,三.字符串數(shù)組 二維字符數(shù)組中每一行元素中都含有字符串結束符0稱為字符串數(shù)組. 例: char weekday 4= “sum”,”mon”,”tue”,”wen”, ”thu”,”fri”,”sta” ; 其中: 為7行4列的二維字符串數(shù)組,

17、每一行是一個字符串,字符串長4包括0. 如:char s23=a,b,c,d,e,f;二維字符數(shù)組,不是字符串數(shù)組.,操作: 字符串數(shù)組中一行元素可以同字符串一樣輸入 輸出及與字符串相同的其他操作. 例: char weekday74; int i; for ( i=0; i7; + i ) scanf ( “%s”, weekdayi ); /*注:不要加*/ for ( i=0; i7; +i ) printf ( “%sn”, weekdayi ) ;,上機題: 編程:輸入個整數(shù)存入一維數(shù)組,按逆序重新 存放后再輸出 編程:輸入一個3*5的整數(shù)矩陣,輸出其中最大值, 最小值和他們的下標 輸入一個字符串(以回車符n結束),將其中所有小寫字母變?yōu)榇髮懽帜?然后輸出 編程:輸入個實數(shù)的數(shù)組,編寫一函數(shù),查找該數(shù)組的最大數(shù)的值及下標值,最小數(shù)的值及下標 值,在主函數(shù)中,輸出這些值.,作業(yè)題: 下列程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁?main( ) int k, p; int s = 1,-9, 7,2,-10,3; for ( p=0, k=p; psk )_; printf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論