數(shù)組詳細講解課件_第1頁
數(shù)組詳細講解課件_第2頁
數(shù)組詳細講解課件_第3頁
數(shù)組詳細講解課件_第4頁
數(shù)組詳細講解課件_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Chap 7 數(shù) 組7.1 輸出所有大于平均值的數(shù)7.2 找出矩陣中最大值所在的位置7.3 判斷回文本章要點什么是數(shù)組? 為什么要使用數(shù)組? 如何定義數(shù)組?如何引用數(shù)組元素?二維數(shù)組的元素在內(nèi)存中按什么方式存放?什么是字符串? 字符串結束符的作用是什么?如何實現(xiàn)字符串的存儲和操作,包括字符串的輸入和輸出?怎樣理解C語言將字符串作為一個特殊的一維字符數(shù)組?例7-1 輸入10個整數(shù),計算這些數(shù)的平均值,再輸出所有大于平均值的數(shù)。7.1.1 程序解析7.1.2 一維數(shù)組的定義和引用7.1.3 一維數(shù)組的初始化7.1.4 使用一維數(shù)組編程7.1 輸出所有大于平均值的數(shù)7.1.1 程序解析輸出大于均值的

2、數(shù)int main(void) int i; double average, sum; /* average存放平均值 */ int a10; /* 定義1個數(shù)組a,它有10個整型元素 */ printf (Enter 10 integers: ); sum = 0; for( i = 0; i average: ); for( i = 0; i average ) printf( %d , ai ); printf ( n ); return 0;Enter 10 integers:55 23 8 11 22 89 0 -1 78 186average = 47.10average: 55

3、89 78 1860123456789552381122890-178186for( i = 0; i 10; i+ ) scanf ( %d, &ai ); sum = sum + ai; a a0 a1 a9數(shù)組數(shù)組:相同類型數(shù)據(jù)的有序集合,在內(nèi)存中連續(xù)存放。 由數(shù)組名和下標惟一地確定每個數(shù)組元素 每個元素都屬于同一類型一批相同類型的變量使用同一個數(shù)組變量名,用下標來相互區(qū)分。優(yōu)點:表述簡潔,可讀性高;便于使用循環(huán)結構7.1.2 一維數(shù)組的定義和引用1、定義 類型名 數(shù)組名 數(shù)組長度類型名:數(shù)組元素的類型數(shù)組名:數(shù)組(變量)的名稱,標識符數(shù)組長度:常量表達式,給定數(shù)組的大小int a10;

4、 定義一個含有10個整型元素的數(shù)組 achar c200;定義一個含有200個字符元素的數(shù)組 cfloat f5;定義一個含有5個浮點型元素的數(shù)組 f數(shù)組長度為常量2、數(shù)組的內(nèi)存結構內(nèi)存地址下標值40289402684024740226402054018440163401424012140100aint a10; 假設系統(tǒng)規(guī)定 int 類型占用2個字節(jié),則對于數(shù)組a,其內(nèi)存分配形式 只要知道了數(shù)組第一個元素的地址以及每個元素所需的字節(jié)數(shù),其余各個元素的存儲地址均可計算得到。 數(shù)組名是一個地址常量,存放數(shù)組內(nèi)存空間的首地址。3、引用先定義,后使用只能引用單個的數(shù)組元素,不能一次引用整個數(shù)組int

5、 a10;10個數(shù)組元素:a0、a1、 a9數(shù)組元素:數(shù)組名下標下標:整型表達式下標取值范圍:0,數(shù)組長度-1數(shù)組元素的使用方法與同類型的變量相同scanf(%d, &ai);sum = sum + ai;printf(%d , ai);下標不要越界不能使用a10定義數(shù)組類型名 數(shù)組名數(shù)組長度引用數(shù)組元素數(shù)組名下標int a10;a0 = a9 = 0;ai = i;區(qū)分數(shù)組的定義和數(shù)組元素的引用下標不要越界數(shù)組長度為常量7.1.3 一維數(shù)組的初始化定義數(shù)組時,對數(shù)組元素賦初值類型名 數(shù)組名數(shù)組長度 = 初值表;int a10 = 1,2,3,4,5,6,7,8,9,10;a0=1, a1=2

6、,. a9=10靜態(tài)數(shù)組、動態(tài)數(shù)組的初始化static int b5 = 1, 2, 3, 4, 5; 靜態(tài)存儲的數(shù)組如果沒有初始化,所有元素自動賦0static int b5;動態(tài)存儲的數(shù)組如果沒有初始化,所有元素為隨機值auto int c5; 等價與 int c5;static int b5 = 1, 2, 3;b0 = 1, b1 = 2, b2 = 3, b3 = 0, b4 = 0 auto int fib20 = 0, 1;fib0 = 0, fib1 = 1, 其余元素不確定如果對全部元素都賦初值,可以省略數(shù)組長度int a 10 = 0, 1, 2, 3, 4, 5, 6,

7、7, 8, 9針對部分元素的初始化建議不要省略數(shù)組長度7.1.4 使用一維數(shù)組編程數(shù)組和循環(huán)for ( i = 0; i n; i+ ) printf ( %d , ai );數(shù)組下標作為循環(huán)變量,通過循環(huán),逐個處理數(shù)組元素 一維數(shù)組示例例 7-2 用數(shù)組計算fibonacci數(shù)列的前10個數(shù),并按每行打印5個數(shù)的格式輸出。1, 1, 2, 3, 5, 例 7-3 順序查找法。輸入5個整數(shù),將它們存入數(shù)組a中,再輸入1個數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應的最小下標,否則,輸出“Not Found”。例 7-4 輸入n(n10),再輸入n個數(shù)(1) 輸出最小值和它所對應的下標(2) 將

8、最小值與第一個數(shù)交換,輸出交換后的n個數(shù)例 7-5 選擇排序法。輸入一個n(1n10 ),再輸入n個整數(shù),用選擇法將它們從小到大排序后輸出。例 7-6 調查電視節(jié)目歡迎程度。某電視臺要進行一次對該臺8個欄目(設相應欄目編號為18)的受歡迎情況,共調查了1000位觀眾,現(xiàn)要求編寫程序,輸入每一位觀眾的投票,每位觀眾只能選擇一個最喜歡的欄目投票,統(tǒng)計輸出各欄目的得票情況。補充 二分查找法。設已有一個10個元素的整形數(shù)組a,且按值從小到大有序。輸入一個整數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應的下標,否則,輸出“Not Found”。用數(shù)組計算fibonacci數(shù)列的前10個數(shù),并按每行打印5個

9、數(shù)的格式輸出。1, 1, 2, 3, 5, 8, 13, 用數(shù)組計算并存放fibonacci數(shù)列的前10個數(shù)f0 = f1 = 1fn = fn-1 + fn-2 2n9例 7-2 計算fibonacci數(shù)列#include int main(void) int i; int fib10 = 1, 1; /* 數(shù)組初始化 */ for ( i = 2; i 10; i+ ) fibi = fibi - 1 + fibi - 2; for ( i = 0; i 10; i+ ) printf ( %6d, fibi ); if ( (i + 1) % 5 = 0 ) /* 5個數(shù)換行 */ pr

10、intf(n); return 0; 例 7-2 源程序 1 1 2 3 5 8 13 21 34 55輸入5個整數(shù),將它們存入數(shù)組a中,再輸入1個數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應的下標,否則,輸出“Not Found”。輸入:2 9 8 1 9 9輸出:1輸入:2 9 8 1 6 7輸出:Not Found例7-3 在數(shù)組中查找一個給定的數(shù)#include int main(void) int i, flag, x; int a5; printf ( Enter 5 integers: “ ); for ( i = 0; i 5; i+ ) scanf ( %d, &ai );

11、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 源程序Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Enter 5 integers: 2 9 8 1 9Enter x: 7Not Foundflag的作用?#include int

12、 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) 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 9

13、Enter x: 9Index is 1Index is 4去掉break語句,結果?#include int main(void) int i, sub, x; int a5; printf(“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, sub); else printf(Not Fou

14、ndn); return 0; 例 7-3 思考(2)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 4sub的作用?#include 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

15、 n, min); return 0;例 7-4 求最小值Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min is -1方法!雖得到了最小值,但不能確定最小值所在下標!輸入n(n10), 再輸入n個數(shù), 輸出最小值和它所對應的下標。用index記錄最小值對應的下標aindex就是最小值例 7-4(1) 求最小值及其下標流程圖#include int main(void) int i, index, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers: , n); f

16、or(i = 0; i n; i+) scanf(%d, &ai); index = 0; for(i = 1; i n; i+) if(ai aindex) index = i; printf(min is %dtsub is %dn, aindex, index); return 0;求最小值及下標Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min is -1 sub is 2 輸入n(n10), 再輸入n個數(shù),將最小值與第一個數(shù)交換,輸出交換后的n個數(shù)。用index記錄最小值對應的下標aindex就是最小值最小值與第一個數(shù)交換aindex a0例 7-

17、4(2) 交換最小值例 7-5 選擇法排序 輸入n(n10), 再輸入n個數(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 0123435281下標 值3 5 2 8 1 (n=5)5個數(shù)(a0a4)中找最小數(shù),與a0交換(1) 1 5 2 8 3 a4 a04個數(shù)(a1a4)中找最小數(shù),與a1交換(2) 1 2 5 8 3 a2 a13個數(shù)(a2a4)中找最小數(shù),與a2交換(3) 1 2 3 8 5 a4 a22個數(shù)(a3a4)中找最小數(shù),與a3交換(4) 1 2 3

18、5 8 a4 a3選擇法(1)(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) 中找最小數(shù),與 a0 交換(2) 4個數(shù) (a1a4) 中找最小數(shù),與 a1 交換(3) 3個數(shù) (a2a4) 中找最小數(shù),與 a2 交換(4) 2個數(shù) (a3a4) 中找最小數(shù),與 a3 交換選擇法(2)n個數(shù)重復n-1次流程圖輸入數(shù)組ak=0kn-1aiaindexindex=i假(0)假(0)真(非0)真(非0)i=i+1交換aind

19、ex和ak輸出數(shù)組aindex=ki=k+1k=k+1in假(0)外循環(huán)控制: n 個數(shù)選擇排序共需要n-1次內(nèi)循環(huán)控制:在下標范圍k,n-1內(nèi)找最小值所在位置index選擇法排序 (程序段) for(k = 0; k n-1; k+) index = k; for(i = k + 1; i n; i+) if(ai aindex) index = i; temp = aindex; aindex = ak; ak = temp; Enter n: 5Enter 10 integers: 3 5 2 8 1After sorted: 1 2 3 5 8某電視臺要調查觀眾對該臺8個欄目(設相應欄

20、目編號為18)的受歡迎情況,共調查了1000位觀眾?,F(xiàn)要求編寫程序,輸入每一位觀眾的投票情況(每位觀眾只能選擇一個最喜歡的欄目投票),統(tǒng)計并輸出各欄目的得票情況。數(shù)組 count 保存各欄目的得票數(shù)counti:記錄編號為 i ( 18 ) 的欄目的得票數(shù)counti+例 7-6 投票情況統(tǒng)計例7-6 源程序# includeint main( void ) int count9; int i, response; for ( i = 1; i = 8; i+ ) counti = 0; /* 各欄目計數(shù)器清0 */ for ( i = 1; i = 1 & response = 8 ) co

21、untresponse+; else printf ( invalid: %dn, response ); printf ( result:n“ ); for ( i = 1; i = 8; i+ ) printf( %4d%4dn, i, counti ); return 0;input your response: 3input your response: 6input your response: 9this is a bad response: 9input your response: 8result:1 22 03 4補充 二分法查找設已有一個10個元素的整形數(shù)組a,且按值從小到

22、大有序排列。輸入一個整數(shù)x,然后在數(shù)組中查找x,如果找到,輸出相應的下標,否則,輸出“Not Found”。例7-3順序的查找算法簡單明了,其查找過程就是對數(shù)組元素從頭到尾的遍歷過程。當數(shù)組很大時,查找效率不高。二分查找的效率較高,前提是數(shù)組元素必須有序排列。二分法查找流程圖二分法查找 (程序段) low = 0; high = n - 1; /* 開始時查找區(qū)間為整個數(shù)組 */ while ( low = high ) /* 循環(huán)條件 */ mid = (low + high) / 2; /* 中間位置 */ if ( x = amid ) break; /* 查找成功,中止循環(huán) */ el

23、se if ( x amid ) high = mid - 1; /* 新查找區(qū)間為前半段,high前移 */ else low = mid + 1; /* 新查找區(qū)間為后半段,low后移 */ if ( low = high ) printf(Index is %d n, mid); else printf( Not Foundn);將1個3*2的矩陣存入1個3*2的二維數(shù)組中,找出最大值以及它的行下標和列下標,并輸出該矩陣。 7.2.1 程序解析7.2.2 二維數(shù)組的定義和引用7.2.3 二維數(shù)組的初始化7.2.4 使用二維數(shù)組編程7.2 找出矩陣中最大值所在的位置 7.2.1 程序解析求

24、矩陣的最大值 例 7-7 將1個3*2的矩陣存入1個3*2的二維數(shù)組中,找出最大值以及它的行下標和列下標,并輸出該矩陣。 row 記錄最大值的行下標col 最大值的列下標arowcol 就是最大值int main(void) int col, i, j, row; int a32; printf(“Enter 6 integers:n) ; for(i = 0; i 3; i+) 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); ro

25、w = 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; 例7-7 源程序Enter 6 integers: 3 2 10 -96 -13 2 10 -96 -1max = a10 = 10二維數(shù)組多維數(shù)組的空間想象二維數(shù)組: 一個表格或一個平面矩陣一維數(shù)組: 一列長表或一個向量多維數(shù)組: 多維空間的一個數(shù)據(jù)列陣三維數(shù)組: 三維空間的一個方陣7.2.2 二維數(shù)組的定義和引用1、定

26、義類型名 數(shù)組名行長度列長度int a32;定義1個二維數(shù)組a,3行2列,6個元素int b510;定義1個二維數(shù)組a,5 行 10 列, 50 個元素 2、引用先定義,后使用數(shù)組元素的引用:數(shù)組名行下標 列下標行下標和列下標:整型表達式行下標的取值范圍是0,行長度-1列下標的取值范圍是0,列長度-1int a32; 3 行 2 列, 6 個元素a00 a01 a10 a11 a20 a21 下標不要越界二維數(shù)組在內(nèi)存中的存放方式int a32;3 行 2 列, 6 個元素表示1個3行2列的矩陣a00 a01 a10 a11 a20 a21 二維數(shù)組的元素在內(nèi)存中按行/列方式存放a00a01a

27、10a11a20a21 7.2.3 二維數(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 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 ;省略行長度對全部元素都賦了初值,int a 3 = 1,2,3,4,5,6,7,8,9 ;或分行賦初值時,在初值表中列出了全部行static int b 3 = 1,2,3, , 4,5

28、, 數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 30 0 04 5 00 0 0建議不要省略7.2.4 使用二維數(shù)組編程行下標和列下標分別做為循環(huán)變量, 通過二重循環(huán),遍歷二維數(shù)組通常將行下標做為外循環(huán)的循環(huán)變量 列下標 內(nèi)循環(huán)定義1個 3*2 的二維數(shù)組a,數(shù)組元素的值由下式給出,按矩陣的形式輸出a。aij = i + j ( 0i2, 0j1 )例7-8 生成一個矩陣并輸出 int a32;a00 a01 a10 a11 a20 a21 0 11 22 3#include int main(void) int i, j; int a32; for ( i = 0; i 3; i+

29、) 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 a11 a20 a21 i = 0 j = 0i = 0 j = 1i = 1 j = 0i = 1 j = 1i = 2 j = 0i = 2 j = 1 例7-8 源程序0 11 22 3二維數(shù)組的輸入例7-7中,int a32;for(i = 0; i 3; i+) for(j = 0; j 2; j+) sc

30、anf(%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 -9 6 -1 3 2 10 -9 6 -1max = a10 = 10Enter 6 integers: 2 10 -9 6 -13 -9 2 610 -1max = a20 = 10int aNN; N是正整數(shù)aij:i、j的取值范圍0,N-1用二維數(shù)組a表示N*N方陣時,對應關系:a00 a01 a02 主對角線 a10 a11 a12 上三角a20 a

31、21 a22 下三角 付對角線矩陣與二維數(shù)組i=ji=ji+j=N-1輸入一個正整數(shù)n (1n6),根據(jù)下式生成1個n*n的方陣,然后將該方陣轉置(行列互換)后輸出。 aij = i * n + j + 1(0in-1,0jn-1)分析:int a66; n=3時例7-9 方陣轉置 1 2 34 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij aji#include int main(void) int i, j, n, temp; int a66; printf ( Enter n: “ ); scanf ( %d, &n ); /* 給二

32、維數(shù)組賦值 略*/ /* 行列互換*/ 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-9 源程序 /* 行列互換*/ 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主對角線:i = j上三角: i =ji=01 4 7 2

33、5 63 8 9i=11 4 72 5 83 6 9例7-9 說明for( j = i; j n; j+) /* 行列互換*/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-9 思考i=01 4 7 2 5 63 8 9i=11 2 74 5 83 6 9i=21 2 3 4 5 67 8 9例7-10 日期計算自定義1個函數(shù)day_of_year(year, month, day),計算并返回年year、月month和日day對應的是該年的第

34、幾天。 day_of_year(2000, 3, 1) 返回61day_of_year(1981, 3, 1) 返回60分析: 月 0 1 2 3 11 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,31 例7-10 源程序int day_of_year(int year, int month, int day) int k, leap; int tab213 = 0,

35、 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;例7-11 輸入一個以回車符為結束標志的字符串(少于80個字符),判斷該字符串是否為回文?;匚木褪亲址行膶ΨQ,如“abcba”、“abccba”是回文,“abcdba”不是回文。7.3.1 程序解析7.3.2 一維字

36、符數(shù)組7.3.3 字符串7.3.4 使用字符串編程7.3 判斷回文7.3.1 程序解析-判斷回文int main ( void ) int i, k; char line80; printf(Enter a string: ); k = 0; while ( (linek = getchar() ) != n ) k+; linek = 0; i =0; /* i是字符串首字符的下標 */ k = k -1; /* k是字符串尾字符的下標 */ while ( i= k) printf(It is a plalindromen); else printf(It is not a plalind

37、romen); return 0; Enter a string: abcbaIt is a plalindrome Enter a string: abcdbaIt is not a plalindrome 7.3.2 一維字符數(shù)組字符串的存儲和運算可以用一維字符數(shù)組實現(xiàn)一維字符數(shù)組的定義、引用、初始化與其他類型的一維數(shù)組一樣。char str80; 定義一個含有80個字符型元素的數(shù)組str char t5=H, a, p, p, y;初始化數(shù)組 t t0 t1 t4t H a p p y輸出數(shù)組 t 的所有元素for ( i=0; i 對字符數(shù)組的操作1. 字符串的存儲數(shù)組初始化字符串可以

38、存放在一維字符數(shù)組中 static char s6 = H, a, p, p, y, 0 ;字符數(shù)組初始化:用字符串常量static char s6 = Happy ;static char s6 = Happy;數(shù)組長度 = 字符串的有效長度 + 1char t5; Happy 能存入t嗎? s0 s1 s5s H a p p y 0字符串的存儲auto char s80 = Happy;字符串遇 0 結束第一個 0 前面的所有字符和 0 一起構成了字符串 Happy0 之后的其他數(shù)組元素與該字符串無關 s0 s1 s5s H a p p y 0 ? ?字符串由有效字符和字符串結束符 0 組

39、成 2. 對字符串的操作把字符串放入一維字符數(shù)組(存儲)對字符串的操作 = 對字符數(shù)組的操作普通字符數(shù)組:數(shù)組元素的個數(shù)是確定的,一般用下標控制循環(huán)字符串:沒有顯式地給出有效字符的個數(shù),只規(guī)定在字符串結束符 0 之前的字符都是字符串的有效字符,一般用結束符 0 來控制循環(huán)循環(huán)條件:si != 0 for(i = 0; si != 0; i+) putchar(si);for(i = 0; i 80; i+) putchar(si);for(i = 0; i 對字符數(shù)組的操作存儲數(shù)組初始化static char s6 = a;賦值s0 = a; s1 = 0;輸入 0 代表空操作,無法輸入輸入時

40、,設定一個輸入結束符將輸入結束符轉換為字符串結束符 0a 2 個字符 a 和 0a 1 個字符常量區(qū)分a 和 a7.3.4 使用字符串編程 語言將字符串作為一個特殊的一維字符數(shù)組來處理。存儲:把字符串放入一維字符數(shù)組數(shù)組初始化、賦值、輸入對字符串的操作 = 對字符數(shù)組的操作對一維字符數(shù)組的操作:針對字符串的有效字符和字符串結束符檢測字符串結束符 0 輸入一個以回車符為結束標志的字符串(少于80個字符),統(tǒng)計其中數(shù)字字符(09)的個數(shù)。分析:數(shù)組長度取上限80以 n 做為輸入結束符例7-12 統(tǒng)計數(shù)字字符個數(shù)int main(void) int count, i; char str80; pri

41、ntf ( Enter a string: ); i = 0; while ( (stri = getchar( ) != n ) i+; stri = 0; /* 輸入結束符字符串結束符 */ count = 0; for(i = 0; stri != 0; i+) if ( stri = 0 ) count+; printf ( count = %dn, count ); return 0; 例7-12源程序字符串的輸入Enter a string: Its 512count = 3如何改變輸入結束符?能省略stri = 0嗎? 0 1 2 3 4 5 6 7 8sI t s 5 1 2 0 ? ?輸入一個以回車符為結束標志的字符串(少于10個字符),提取其中所有的數(shù)字字符( 09 ),將其轉換為一個十進制整數(shù)輸出。 分析:數(shù)組長度取上限10以 n 做為輸入結束符123 =123例7-13 字符串轉換123 =123n = 0; for ( i = 0; si != 0; i+ ) if ( si = 0 ) n = n * 10 + (si - 0);0 1 2 3 s1 2 3 0 ? ?i sisi-001112223330n = n*10+(si-0)0*10+1 = 1 1*10+2 =1

溫馨提示

  • 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

提交評論