北京交通大學(xué)C語言課件第6章中_第1頁
北京交通大學(xué)C語言課件第6章中_第2頁
北京交通大學(xué)C語言課件第6章中_第3頁
北京交通大學(xué)C語言課件第6章中_第4頁
北京交通大學(xué)C語言課件第6章中_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1C語言編程是一項技藝,需要多年的歷語言編程是一項技藝,需要多年的歷練才能達(dá)到較為完善的境界!練才能達(dá)到較為完善的境界! -摘自摘自Expert C Programming高級語言程序設(shè)計高級語言程序設(shè)計主講教師:丁丁主講教師:丁丁計算機與信息技術(shù)學(xué)院計算機與信息技術(shù)學(xué)院3第六章第六章 數(shù)組數(shù)組4復(fù)習(xí)(數(shù)值型數(shù)組)復(fù)習(xí)(數(shù)值型數(shù)組)n如何定義數(shù)組?如何定義數(shù)組?n數(shù)組如何初始化?數(shù)組如何初始化?n數(shù)組元素如何引用?數(shù)組元素如何引用?q循環(huán)語句循環(huán)語句q循環(huán)三要素循環(huán)不變關(guān)系循環(huán)三要素循環(huán)不變關(guān)系n數(shù)組元素做函數(shù)參數(shù)傳遞的是什么?數(shù)組元素做函數(shù)參數(shù)傳遞的是什么?5n數(shù)組的概念、定義和使用數(shù)組的概

2、念、定義和使用n數(shù)組程序?qū)嵗龜?shù)組程序?qū)嵗齨數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù)n字符數(shù)組和字符串字符數(shù)組和字符串n兩維和多維數(shù)組兩維和多維數(shù)組n編程實例編程實例主要內(nèi)容主要內(nèi)容n一維數(shù)值型數(shù)組的重要應(yīng)用一維數(shù)值型數(shù)組的重要應(yīng)用6一維數(shù)組上的重要操作一維數(shù)組上的重要操作n排序排序n查找查找n插入插入n刪除刪除n元素交換元素交換7n將計算機學(xué)院將計算機學(xué)院12級學(xué)生按平均分高低排序級學(xué)生按平均分高低排序n將將08的奧運會各參賽國按英文字典序排序的奧運會各參賽國按英文字典序排序n搜索引擎網(wǎng)頁排序搜索引擎網(wǎng)頁排序(PageRank)learning to ranknn排序問題無處不在排序問題無處不在例例1

3、 1一維數(shù)組的應(yīng)用(排序)一維數(shù)組的應(yīng)用(排序)8常用的排序算法常用的排序算法n冒泡排序冒泡排序n選擇排序選擇排序n插入排序插入排序n快速排序快速排序n希爾排序希爾排序n堆排序堆排序n9冒泡排序法冒泡排序法 輸入輸入n n個正整數(shù)存在數(shù)組中,按由小到大的順序排序個正整數(shù)存在數(shù)組中,按由小到大的順序排序(最大的數(shù)下沉最大的數(shù)下沉)例例38 49 65 76 13 27 30 97 第一趟第一趟38 49 65 13 27 30 76 第二趟第二趟38 49 13 27 30 65 第三趟第三趟38 13 27 30 49 第四趟第四趟13 27 30 38 第五趟第五趟13 27 30 第六趟第

4、六趟49 38 65 97 76 13 27 30 初始關(guān)鍵字初始關(guān)鍵字n=838497697139797273097137676762730136527653065131349493049273827383038 13 27 第七趟第七趟a0a1a2a3a4a5a6a710用冒泡法對用冒泡法對1010個數(shù)進(jìn)行排序(個數(shù)進(jìn)行排序(N-SN-S圖及程序)圖及程序)變量、數(shù)組長度定義變量、數(shù)組長度定義 for(j=0;j=N-i-1;j+) scanf ( “%d” , &ai ) for(i=0;iN;i+) for(i=0;iaj+110 aj與與aj+1交換交換 for(i=1;i=

5、N-1;i+) printf ( “%6d”, ai )/ /* *冒泡法對冒泡法對1010個數(shù)由小到大排序個數(shù)由小到大排序* */ /#include #define N 10void main() int aN , i , j , t; printf(請輸入請輸入10個數(shù)個數(shù):n); for ( i = 0 ; i N ; i+) scanf(%d,&ai); printf(n); for (i = 1; i = N-1; i+) for (j = 0; j aj+1) t = aj; aj = aj+1; aj+1 = t; printf(n排序后的數(shù)據(jù)為排序后的數(shù)據(jù)為:n);

6、for (i = 0; i 課后作業(yè)課后作業(yè)nn值值如果是如果是可變可變的的?n如果只對如果只對部分?jǐn)?shù)據(jù)部分?jǐn)?shù)據(jù)進(jìn)行進(jìn)行排序排序?n某趟循環(huán)未發(fā)生交換,后面可不再循環(huán),某趟循環(huán)未發(fā)生交換,后面可不再循環(huán), 如如何改進(jìn)何改進(jìn)冒泡排序冒泡排序?12void BubbleSort(int n, int a )int flag, i, j;for (i = 1; i = n-1; i+) flag = 0; for (j = 0; j aj+1) t = ai;ai = ai+1; ai+1 = t;flag = 1;if ( !flag ) return; 改進(jìn)的冒泡排序(函數(shù)):設(shè)標(biāo)志改進(jìn)的冒泡排

7、序(函數(shù)):設(shè)標(biāo)志flag,如果某趟未發(fā)生交,如果某趟未發(fā)生交換,換,flag=0,說明排序完成,返回。,說明排序完成,返回。13將數(shù)組將數(shù)組a中的前中的前5個數(shù)進(jìn)行排序個數(shù)進(jìn)行排序#include void BubbleSort(int n, int a );int main()int a10 , i , j , t; printf(請輸入請輸入10個數(shù)個數(shù):n); for( i = 0 ; i 10 ; i+) scanf(“%d”, &ai); BubbleSort(5, a); for( i = 0 ; i 10 ; i+) printf(“%d”, ai); return 0

8、;14冒泡排序算法的復(fù)雜度分析冒泡排序算法的復(fù)雜度分析n最壞情形下掃描數(shù)據(jù)總數(shù)最壞情形下掃描數(shù)據(jù)總數(shù)qn*(n+1)/2n最壞情形下數(shù)據(jù)交換的次數(shù)最壞情形下數(shù)據(jù)交換的次數(shù)qn*(n-1)/215選擇法排序:選擇法排序:把把n n個正整數(shù)按由小到大的順序排序。個正整數(shù)按由小到大的順序排序。例例初始:初始: 49 38 65 97 76 13 27 kji=11349一趟:一趟: 13 38 65 97 76 49 27 i=22738二趟:二趟: 13 27 65 97 76 49 38 三趟:三趟: 13 27 38 97 76 49 65 四趟:四趟: 13 27 38 49 76 97 6

9、5 五趟:五趟: 13 27 38 49 65 97 76 六趟:六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjj16用選擇法對用選擇法對1010個數(shù)進(jìn)行排序(個數(shù)進(jìn)行排序(N-SN-S圖及程序)圖及程序)/*選擇法對選擇法對10個數(shù)由小到大排序個數(shù)由小到大排序*/#include #define N 10void SelectSort(int n, int a);void main()int aN, i;for (i = 0; i N; i+) scanf(%d, &ai);printf(n);SelectSort(N, a);printf(the so

10、rted numbers:n);for (i = 0; i N; i+) printf(%4d, ai);printf(n);變量、數(shù)組長度定義變量、數(shù)組長度定義k=ifor(j=i+1;jN;j+) scanf ( “%d” , &ai ) for(i=0;iN;i+) for(i=0;iN;i+) ajak10k=j for(i=0;iN-1;i+) printf ( “%4d”, ai ) ai與與ak交換交換17void SelectSort(int n, int a) int i, j, k, t; for (i = 0; i n-1; i+) k = i; for (j =

11、 i+1; j n; j+) if (aj ak) k = j; t = ak; ak = ai; ai = t; 可否優(yōu)化?如何優(yōu)化?可否優(yōu)化?如何優(yōu)化?18選擇排序算法的復(fù)雜度分析選擇排序算法的復(fù)雜度分析n最壞情形下掃描數(shù)據(jù)總數(shù)最壞情形下掃描數(shù)據(jù)總數(shù)qn*(n+1)/2n最壞情形下數(shù)據(jù)交換的次數(shù)最壞情形下數(shù)據(jù)交換的次數(shù)qn1次次19直接插入排序直接插入排序排序方法(排序方法(以排雜志為例以排雜志為例):1. 任取一本雜志,作為排好序的一疊雜志的開始情況;任取一本雜志,作為排好序的一疊雜志的開始情況;2. 從剩余雜志中任取一本,根據(jù)月份把它插入排好序的從剩余雜志中任取一本,根據(jù)月份把它插入排

12、好序的那疊雜志里的正確位置,使插入后的這疊雜志仍有序;那疊雜志里的正確位置,使插入后的這疊雜志仍有序;3.如果還有未排好的雜志,就回到如果還有未排好的雜志,就回到2,否則就結(jié)束;,否則就結(jié)束;20998776655443322111a998776655443322111t=8899776655443322111899776655443322111t=77899996655443322111877996655443322111877996655443322111t=668779999554433221118777799554433221118667799554433221118667799554

13、43322111t=5521void insertsort(int n, int a) /* 遞增序直接插入排序遞增序直接插入排序 */ int i, j; int t; /*默認(rèn)默認(rèn)a0為已排好序為已排好序*/ for( i = 1; i = 0 & t aj; -j ) aj+1 = aj;/* 大元素依次后移大元素依次后移 */ if( j != i-1 ) aj+1 = t; 排序函數(shù)的定義排序函數(shù)的定義:866779955443322111t=55a0aiai-1將將t插入到插入到a0到到ai之間之間22插入排序的復(fù)雜度分析插入排序的復(fù)雜度分析n最壞情形下數(shù)據(jù)移動的次數(shù)最壞情

14、形下數(shù)據(jù)移動的次數(shù)qn*(n-1)/223例例2 2一維數(shù)組的應(yīng)用(查找)一維數(shù)組的應(yīng)用(查找)int search(int b, int key, int n)int j;for(j = 0; j n; j+)if (bj = key) return j;return (-1);線性查找:線性查找: 從頭到尾逐個查找,從頭到尾逐個查找,也稱為順序查找。也稱為順序查找。效率底!效率底!最壞情形下的時間復(fù)雜最壞情形下的時間復(fù)雜度是度是O(n)#include #define N 10int search(int b,int,int);void main()int aN, i, searchkey

15、, element;for (i = 0; i N; i+)scanf(%d , &ai);printf(Input searchkey:n);scanf(%d, &searchkey);element = search(a, searchkey, N);if (element != -1)printf(Find, its %dth emement.n, element+1);elseprintf(Not find.n);24先檢索中間的一個數(shù)據(jù),如果不是所需的數(shù)據(jù),則判先檢索中間的一個數(shù)據(jù),如果不是所需的數(shù)據(jù),則判斷這要找的數(shù)在那一邊,在所在的一邊中再看中間的數(shù)斷這要找的數(shù)在

16、那一邊,在所在的一邊中再看中間的數(shù)是否為所需的數(shù),依次下去。是否為所需的數(shù),依次下去。只適用于已排好序的數(shù)列。只適用于已排好序的數(shù)列。折半查找折半查找101720223144515568738995120133137 0 1 2 3 4 5 6 7 8 9 1011 12 13 14bot0mid0top0top1mid1bot1bot2top2mid2xtop3bot3mid3折半查找最壞情形下的復(fù)雜度是折半查找最壞情形下的復(fù)雜度是O(lgn)25折半查找程序折半查找程序#include#define N 100void f(int , int, int);void main() int a

17、N, j, n, x; scanf(“%d”, &n); for (j = 0; j n; j+) scanf(“%d”, &aj); printf(“n”); printf(“輸入要查找的數(shù):輸入要查找的數(shù):n”); scanf(“%d”, &x); f(a, n, x);void f(int a ,int n , int x) int b = 0, t, find = 0, m; t = n - 1; do m = ( t + b) / 2; if (am = x) printf(找到了找到了%3d,是是a%dn,x,m); find = 1; else if (x

18、 am) t = m - 1; else b = m + 1; while( b -大),大),nmnm算法:需插入x3)插入x1)找插入位置P2) 將ap到am依次后移一個位置1346911151720 x=16pp = 0;while (x ap) & (p = p; j-) aj+1 = aj;ap = x;如何用for改寫if (x am-1) am = x;else for (i = 0; i = x) for (j = m-1; j= i; j-) aj+1 = aj; ai = x ; break; 27例例4 4一維數(shù)組的應(yīng)用(元素交換)一維數(shù)組的應(yīng)用(元素交換)將將a

19、 a數(shù)組中從數(shù)組中從第第m m個元素個元素起一直到最后的元素平移到數(shù)組的開頭,把起一直到最后的元素平移到數(shù)組的開頭,把a0a0到到am-2am-2中的元素向后順移。中的元素向后順移。a0am-1an-1算法:算法:1 1、輸入數(shù)組、輸入數(shù)組a ,ma ,m 2 2、for(j=1;jn-m+1 ;j+) for(j=1;jn-m+1 ;j+) 將將an-1an-1放臨時單元放臨時單元t t; an-2an-2a0a0依次后移一個位置;依次后移一個位置; a0 =t;a0 =t; 3 3、輸出數(shù)組、輸出數(shù)組a a 2021-12-11高級高級語言程序設(shè)計語言程序設(shè)計28主要內(nèi)容:主要內(nèi)容:數(shù)組數(shù)

20、組n6.1 數(shù)組的概念、定義和使用數(shù)組的概念、定義和使用n6.2 數(shù)組處理程序?qū)嵗龜?shù)組處理程序?qū)嵗齨6.3 數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù)n6.4 字符數(shù)組與字符串字符數(shù)組與字符串n6.5 兩維和多維數(shù)組兩維和多維數(shù)組n6.6 編程實例編程實例29字符數(shù)組預(yù)備知識字符數(shù)組預(yù)備知識n字符常量與字符串常量有什么區(qū)別?字符常量與字符串常量有什么區(qū)別?n如何定義一個字符變量?如何定義一個字符變量?n單引號單引號括起來的括起來的單個字符單個字符。q如:如: an雙引號雙引號括起來的括起來的字符序列字符序列。q如如“goodbye”, “0”等等qprintf(Good morning!n);規(guī)定:規(guī)定

21、:n一個字符串書寫時不能跨行一個字符串書寫時不能跨行n多個字符串之間僅由空白分隔,系統(tǒng)會將它們連成一個長字多個字符串之間僅由空白分隔,系統(tǒng)會將它們連成一個長字 符串。雙引號需用轉(zhuǎn)義符:符串。雙引號需用轉(zhuǎn)義符:He said: Im ok!。30字符串以字符數(shù)組形式保存,存儲形式是在所有字符后放字符串以字符數(shù)組形式保存,存儲形式是在所有字符后放0作為串結(jié)束標(biāo)志。例作為串結(jié)束標(biāo)志。例 Beijing B e i j i n g 0 字符串Beijing的內(nèi)部表示 0不是串內(nèi)容,卻是字符串表示不可缺的部分。不是串內(nèi)容,卻是字符串表示不可缺的部分。標(biāo)準(zhǔn)庫的字符串處理函數(shù)都按這種表示設(shè)計,寫字符串處理程

22、標(biāo)準(zhǔn)庫的字符串處理函數(shù)都按這種表示設(shè)計,寫字符串處理程序時也應(yīng)該遵守這一規(guī)則。序時也應(yīng)該遵守這一規(guī)則。 316.4 字符數(shù)組與字符串字符數(shù)組與字符串字符數(shù)組定義方式(與其他數(shù)組一樣):字符數(shù)組定義方式(與其他數(shù)組一樣):char line1000;字符數(shù)組使用方式字符數(shù)組使用方式(與其他數(shù)組一樣與其他數(shù)組一樣):i=0; /* 注意越界控制注意越界控制 */while(i1000 & (linei=getchar()!=n) +i;字符數(shù)組初始化方式一:逐個字符賦值字符數(shù)組初始化方式一:逐個字符賦值char city15=B,e,i,j,i,n,g;未指定初值的元素自動設(shè)未指定初值的元

23、素自動設(shè)0,編碼,編碼0的字符稱為的字符稱為0字符字符/空字符空字符,用,用0表示表示,在,在C中有特殊用途中有特殊用途(字符串結(jié)束標(biāo)志)(字符串結(jié)束標(biāo)志)。32若字符數(shù)組里存了一些字符后放若字符數(shù)組里存了一些字符后放0 ,就符合字符串形式,就符合字符串形式,可當(dāng)作字符串使用(可當(dāng)作字符串使用(數(shù)組里存著字符串?dāng)?shù)組里存著字符串):):char a5 = g, o, o, d, “good” b5 = i, s, a, “isa” c5 = o, k, 0, “ok” d5 = o, k, 0, x, “ok” x5 = i,s,n,o,t;注意:注意:字符數(shù)組的字符數(shù)組的有效長度指第一個有效長

24、度指第一個0前的字符個數(shù)前的字符個數(shù)+133初始化方式二:用字符串常量初始化方式二:用字符串常量char a120 = Peking University;未標(biāo)元素個數(shù)時,數(shù)組大小確定為串長加未標(biāo)元素個數(shù)時,數(shù)組大小確定為串長加1。例:。例:char a3 = Peking University;數(shù)組數(shù)組a3有有18個字符元素。個字符元素。字符數(shù)組變量中保存字符串后,可作字符串用。字符數(shù)組變量中保存字符串后,可作字符串用。例,若多個輸出語句都用同樣輸出格式描述:例,若多個輸出語句都用同樣輸出格式描述:char outform1 = ”point: (%f, %f)n; .printf(outf

25、orm1, x, y); .printf(outform1, s, t);34字符數(shù)組的賦值字符數(shù)組的賦值n將一個字符串賦值給一個字符數(shù)組將一個字符串賦值給一個字符數(shù)組, ,只能用在只能用在初始化的情況下初始化的情況下, ,不能用在賦值語句中不能用在賦值語句中n例如例如: :qchar str11;char str11;qstr = str = “I am happyI am happy”; ;是錯誤的是錯誤的. .35字符串的輸入輸出字符串的輸入輸出l逐個字符I/O: %c數(shù)組名下標(biāo)l整個字符串I/O: %s數(shù)組名例例 用用%c %c main() char str5; int i; for

26、 (i = 0; i 5; i+) scanf(“%c”, &stri); for(i = 0; i 5; i+) printf(“%c”, stri);例例 用用%s %s main() char str5; scanf(“%s”, str); printf(“%s”, str);輸入用字符數(shù)組名輸入用字符數(shù)組名,不要加不要加&輸入串長度輸入串長度數(shù)組維數(shù)數(shù)組維數(shù)遇空格或回車結(jié)束遇空格或回車結(jié)束自動加自動加0輸出用字符數(shù)組名輸出用字符數(shù)組名,遇遇0結(jié)束結(jié)束36int main() int i; char a5; scanf(%s, a); for (i = 0; i 5; i

27、+) printf(%c, ai); return 0;運行情況:運行情況:(1)若輸入)若輸入 hel , 正常正常(2)若輸入)若輸入 hell , 正常正常(3)若輸入)若輸入 hello , 用用%s 輸出,會出現(xiàn)問題?輸出,會出現(xiàn)問題? h e l 0 h e l l 0 h e l l o輸入字符串長度輸入字符串長度 數(shù)組維數(shù)組維數(shù)數(shù)例子例子37 H o w 0 a r e 0 y o u ? 0 #include main() char a15, b5, c5; scanf(%s%s%s, a, b, c); printf(a=%snb=%snc=%sn, a, b, c); s

28、canf(%s, a); printf(a=%sn, a);運行情況:運行情況:輸入:輸入:How are you?輸出:輸出:a=How b=are c=you?輸入:輸入:How are you?輸出:輸出:a=Howscanfscanf中中%s%s輸入時輸入時, ,遇空格遇空格或回車結(jié)束或回車結(jié)束運行情況:運行情況:輸入:輸入:How are you?字符串輸入舉例字符串輸入舉例38void str_copy (char s, const char t) int i = 0; while (ti != 0) si = ti; +i; si = 0;循環(huán)結(jié)束時循環(huán)結(jié)束時ti的空字符正好賦給

29、的空字符正好賦給si。void str_copy (char s, const char t) int i = 0; while (si = ti) != 0) +i;字符串處理程序?qū)嵗址幚沓绦驅(qū)嵗?,寫函數(shù)將一字符串復(fù)制到一字符數(shù)組。假定數(shù)組,寫函數(shù)將一字符串復(fù)制到一字符數(shù)組。假定數(shù)組足以存放被足以存放被復(fù)制串及空字符。復(fù)制串及空字符。39字符串處理函數(shù)的典型循環(huán):字符串處理函數(shù)的典型循環(huán):for (i = 0; si != 0; +i) 用是否空字符確定對字符串的處理是否已完成。用是否空字符確定對字符串的處理是否已完成。例例2,(二進(jìn)制轉(zhuǎn)換)寫函數(shù),給它一個表示二進(jìn)制數(shù)的,(二進(jìn)

30、制轉(zhuǎn)換)寫函數(shù),給它一個表示二進(jìn)制數(shù)的0/1字符字符串,它算出這個串表示的整數(shù)值。串,它算出這個串表示的整數(shù)值。 二進(jìn)制數(shù)二進(jìn)制數(shù)bnbn-1.b2b1b0的值可以用下面公式計算:的值可以用下面公式計算:(.(bn2) +bn-1)2 +.)2 + b2)2 + b1)2 + b0據(jù)此可寫出循環(huán),循環(huán)條件判斷二進(jìn)制數(shù)是否結(jié)束。據(jù)此可寫出循環(huán),循環(huán)條件判斷二進(jìn)制數(shù)是否結(jié)束。二進(jìn)制數(shù)位只能是二進(jìn)制數(shù)位只能是0/1,只需要在遇到,只需要在遇到1時加時加1。 40int bin2int(const char s) int i = 0, n = 0; while(si!=0&(si=0|si=1

31、) n = n * 2; if (si = 1) +n; +i; return n;由于數(shù)字字符的編碼連續(xù)排列由于數(shù)字字符的編碼連續(xù)排列.函數(shù)改為:函數(shù)改為:int bin2int(const char s) int i = 0, n = 0; while(si!=0&(si=0|si=1) n = n * 2 + (si - 0); +i; return n; /* 這種寫法可以推廣到八進(jìn)制和其他進(jìn)制這種寫法可以推廣到八進(jìn)制和其他進(jìn)制 */41例例3 計算字符數(shù)組的有效長度計算字符數(shù)組的有效長度#include int strLen(const char s);int main()

32、int len; char str10; scanf(%s, str); len = strLen(str); printf(%dn, len); printf(%sn, str); return 0;int strLen(const char s) int i=0; while(si!=0)i+; return (i+1);有問題嗎?有問題嗎?42包含在頭文件 string.hu字符串輸出函數(shù)puts格式:puts(字符數(shù)組)功能:向顯示器輸出字符串(輸出完,換行)說明:字符數(shù)組必須以0結(jié)束u字符串輸入函數(shù)gets格式:gets(字符數(shù)組)功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中,

33、 并自動加0說明:輸入串長度應(yīng)小于字符數(shù)組維數(shù)標(biāo)準(zhǔn)庫中常用的字符串處理函數(shù)標(biāo)準(zhǔn)庫中常用的字符串處理函數(shù)43例例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 輸入輸入: How are you?輸出輸出: How are you ? scanf(“%s”,str);gets(str);區(qū)別是區(qū)別是scanf取不到空格取不到空格gets()gets()函數(shù)函數(shù)是個過時的是個過時的函數(shù)函數(shù)44標(biāo)準(zhǔn)庫中常用的字符串處理函數(shù)標(biāo)準(zhǔn)庫中常用的字符串處理函數(shù)包含在頭文件包含在頭文件

34、 string.hstring.h字符串字符串(實際)(實際)長度函數(shù)長度函數(shù)strlen(const char s);strlen(const char s);#include#includeint main() char str10 = China; int n; printf(Length=%dn, strlen(str); n = strlen(str); printf(n=%dn, n); return 0;45標(biāo)準(zhǔn)庫中常用字符串處理函數(shù)標(biāo)準(zhǔn)庫中常用字符串處理函數(shù)復(fù)制函數(shù)復(fù)制函數(shù):strcpy(char s,const char t);t應(yīng)為字符串,應(yīng)為字符串,const說明參數(shù)值不

35、修改。字符數(shù)組說明參數(shù)值不修改。字符數(shù)組s應(yīng)足夠大,應(yīng)足夠大,以保證復(fù)制不越界。例:以保證復(fù)制不越界。例:char a116, a216;strcpy(a1, programming);strcpy(a2, a1);限界復(fù)制函數(shù)限界復(fù)制函數(shù)strncpy,限制復(fù)制長度限制復(fù)制長度:strncpy(char s,const char t,int n);將將t中前中前n個字符復(fù)制到個字符復(fù)制到s中。中。program m ing0 0 0 0 0a146#include#includeint main()char a5 , b5 = Power, c1, c2;c1 = A; c2 = B;printf(b=%sn, b);a0 = C; a1 = h; a2 = i; a3 = n; a4 = a;printf(a=%sn, a);a = Study; printf(a=%sn, a);a = b; printf(a=%sn, a);return 0;程序查錯程序查錯47#include#includeint main()char a6 ,b6= Power,c1,c2;c1=A;c2=B;printf(b=%sn,b);a0=C;a1=h; a2=i; a3=

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論