[工學(xué)]chapter7--數(shù)組_第1頁
[工學(xué)]chapter7--數(shù)組_第2頁
[工學(xué)]chapter7--數(shù)組_第3頁
[工學(xué)]chapter7--數(shù)組_第4頁
[工學(xué)]chapter7--數(shù)組_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言第七章第七章 數(shù)組數(shù)組 知識(shí)要點(diǎn)知識(shí)要點(diǎn): 知識(shí)知識(shí)要點(diǎn)要點(diǎn)掌握程度掌握程度一維數(shù)組一維數(shù)組定義、元素的引用、初始化、應(yīng)用定義、元素的引用、初始化、應(yīng)用一維數(shù)組的相關(guān)算法一維數(shù)組的相關(guān)算法掌握掌握二維數(shù)組二維數(shù)組定義、元素的引用、初始化、應(yīng)用定義、元素的引用、初始化、應(yīng)用及存儲(chǔ)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)掌握掌握字符數(shù)組字符數(shù)組定義、元素的引用、初始化、應(yīng)用定義、元素的引用、初始化、應(yīng)用字符數(shù)組處理的庫函數(shù)字符數(shù)組處理的庫函數(shù) pus()、 gets()、strcat()、strcpy()、strcmp()、strlen()、strlwr()、strupr()掌

2、握掌握 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言82945637617188888888881111111111111118 8 88888888給一組數(shù)排序,這組數(shù)該如何存放?給一組數(shù)排序,這組數(shù)該如何存放? 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言問題問題2 2:輸入:輸入100名學(xué)生某門課程的成績(jī),要求將名學(xué)生某門課程的成績(jī),要求將高于平均分高于平均分的那些成績(jī)打印出來。的那些成績(jī)打印出來。1.用讀入一個(gè)數(shù)就累加一個(gè)的辦法來求出學(xué)生的總分;用讀入一個(gè)數(shù)就累加一個(gè)的辦法來求出學(xué)生的總分;2但只有讀入全部學(xué)生的分?jǐn)?shù)后才能求得平均分;但只有讀入全部學(xué)生的分?jǐn)?shù)后才能求得平均分;3所以必須

3、將所以必須將100個(gè)學(xué)生的成績(jī)?nèi)慷急A粝聛恚缓笾饌€(gè)和個(gè)學(xué)生的成績(jī)?nèi)慷急A粝聛?,然后逐個(gè)和平均分比較,把高于平均分的成績(jī)打印出來。平均分比較,把高于平均分的成績(jī)打印出來。 所以保留學(xué)生的成績(jī)必須用所以保留學(xué)生的成績(jī)必須用100個(gè)變量個(gè)變量s1,s2,s100,average用來存放平均分,需要用來存放平均分,需要100條語句來判斷學(xué)生的成條語句來判斷學(xué)生的成績(jī)是否高于平均分???jī)是否高于平均分。如何解決這類問題?如何解決這類問題? 一個(gè)班學(xué)生的成績(jī)一個(gè)班學(xué)生的成績(jī)一行文字一行文字一個(gè)矩陣一個(gè)矩陣這些數(shù)據(jù)的特點(diǎn)是這些數(shù)據(jù)的特點(diǎn)是:1.1.具有相同的數(shù)據(jù)類型具有相同的數(shù)據(jù)類型 2.2.使用過程中

4、需要保留原始數(shù)據(jù)使用過程中需要保留原始數(shù)據(jù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言C中的數(shù)據(jù)類型中的數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型(void)整型整型字符型字符型實(shí)型(浮點(diǎn)型)實(shí)型(浮點(diǎn)型)枚舉類型枚舉類型(enum *)數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類型(struct *)共用體類型共用體類型(union *) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言數(shù)數(shù) 組組 在程序設(shè)計(jì)中,把具有在程序設(shè)計(jì)中,把具有相同類型相同類型的若干變量按的若干變量按有序的形式有序的形式組織起來,以滿足某些復(fù)雜問題的需要,這些組織起來,以滿足某些復(fù)雜問

5、題的需要,這些按序排列的按序排列的同類同類型數(shù)據(jù)型數(shù)據(jù)元素的集合稱為元素的集合稱為數(shù)組數(shù)組。C語言數(shù)組類型有三個(gè)特點(diǎn)語言數(shù)組類型有三個(gè)特點(diǎn):一、一、數(shù)組元素的個(gè)數(shù)必須是確定的數(shù)組元素的個(gè)數(shù)必須是確定的,不允許變動(dòng),但元素的值,不允許變動(dòng),但元素的值可變,數(shù)組元素可由可變,數(shù)組元素可由數(shù)組名與下標(biāo)數(shù)組名與下標(biāo)來直接訪問;來直接訪問;二、二、數(shù)組元素類型必須相同數(shù)組元素類型必須相同,它們?cè)趦?nèi)存中占據(jù)的地址空間是,它們?cè)趦?nèi)存中占據(jù)的地址空間是連續(xù)的連續(xù)的;三、三、各元素可作為基本變量使用各元素可作為基本變量使用。 數(shù)組元素可以是任何一種數(shù)據(jù)類型,按類型分為:數(shù)值數(shù)數(shù)組元素可以是任何一種數(shù)據(jù)類型,按類

6、型分為:數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等。組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言數(shù)數(shù) 組組上例中若采用數(shù)組來解決,程序?qū)⑹趾?jiǎn)單:上例中若采用數(shù)組來解決,程序?qū)⑹趾?jiǎn)單:float s100,sum,average;int i;for (i=0; i100; i+) scanf(”%f”,&si);/對(duì)于數(shù)組中的元素逐個(gè)輸入值對(duì)于數(shù)組中的元素逐個(gè)輸入值 sum+=si; /求和求和average=sum/100;for (i=0; i=average) printf(”s%d=%f”,i,si); 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序

7、設(shè)計(jì)語言主要內(nèi)容主要內(nèi)容7.1 一維數(shù)組的定義和引用一維數(shù)組的定義和引用7.2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用7.3 字符數(shù)組字符數(shù)組小結(jié)小結(jié)練習(xí)練習(xí)提示:預(yù)習(xí)第八章提示:預(yù)習(xí)第八章 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一、一維數(shù)組的定義一、一維數(shù)組的定義 1定義方式為:定義方式為:存儲(chǔ)類型存儲(chǔ)類型 類型說明符類型說明符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式=初始值初始值;如:如:int a10; float score30;7.1 一維數(shù)組的定義和引用一維數(shù)組的定義和引用2定義規(guī)則:定義規(guī)則:(1)數(shù)組名遵循標(biāo)識(shí)符命名規(guī)則數(shù)組名遵循標(biāo)識(shí)符命名規(guī)則,但不與其它變量同名;但不與其它

8、變量同名; 如如int a,a10; (2)數(shù)組的下標(biāo)應(yīng)用方括號(hào)括起來,而非();)數(shù)組的下標(biāo)應(yīng)用方括號(hào)括起來,而非();(3)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度;)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度;(4)常量表達(dá)中可包含)常量表達(dá)中可包含常量常量和和符號(hào)常量符號(hào)常量,但不能包含,但不能包含變變量量,即數(shù)組的大小不能動(dòng)態(tài)定義;,即數(shù)組的大小不能動(dòng)態(tài)定義; (5)數(shù)組定義前不允許有執(zhí)行語句;)數(shù)組定義前不允許有執(zhí)行語句; 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言 #define N 5 int aN,d; float n=5,bn; int c2*2; int i; scanf(”

9、%d”,&i); int di;數(shù)組說明中其他常見的錯(cuò)誤:數(shù)組說明中其他常見的錯(cuò)誤: float a0; /* 數(shù)組大小為數(shù)組大小為0沒有意義沒有意義 */ int b(2); /* 不能使用圓括號(hào)不能使用圓括號(hào) */例例7-2判斷下列數(shù)組中的正誤,并改正。判斷下列數(shù)組中的正誤,并改正。數(shù)組定義時(shí)不能用變量說明數(shù)組大小數(shù)組定義時(shí)不能用變量說明數(shù)組大小不能與變量同名;不能與變量同名;不允許數(shù)組定義前有執(zhí)行語句不允許數(shù)組定義前有執(zhí)行語句 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言 數(shù)組元素?cái)?shù)組元素占用連續(xù)的存占用連續(xù)的存貯空間貯空間,如,如一維數(shù)組:一維數(shù)組: float mark100

10、; 數(shù)組名代表存儲(chǔ)空間的數(shù)組名代表存儲(chǔ)空間的首地址首地址,mark代表該代表該數(shù)組的首地址。數(shù)組的首地址。每個(gè)數(shù)組元素占用每個(gè)數(shù)組元素占用的字節(jié)數(shù),就是的字節(jié)數(shù),就是基基類型類型的字節(jié)數(shù)的字節(jié)數(shù), float型一個(gè)元素型一個(gè)元素占占4個(gè)個(gè)字節(jié)字節(jié)mark0mark1mark2mark3.mark9986.592.077.552.0.94.0低地址低地址 高地址高地址3.一維數(shù)組在內(nèi)存中的存放一維數(shù)組在內(nèi)存中的存放 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言數(shù)組中的每個(gè)元素只能數(shù)組中的每個(gè)元素只能逐個(gè)被引用逐個(gè)被引用,而不能一次引用,而不能一次引用全部數(shù)組元素全部數(shù)組元素1.1.數(shù)組元素的引用

11、方式數(shù)組元素的引用方式 引用形式:引用形式: 數(shù)組名數(shù)組名下標(biāo)下標(biāo) 如如: int a8; a0=a3+a4-a2*3; 其中下標(biāo)可為其中下標(biāo)可為整型常量或整型表達(dá)式,表達(dá)式中可整型常量或整型表達(dá)式,表達(dá)式中可包含變量包含變量。數(shù)組元素的下標(biāo)固定從數(shù)組元素的下標(biāo)固定從0開始,數(shù)組開始,數(shù)組下標(biāo)下下標(biāo)下限為限為0,下標(biāo)上限為下標(biāo)上限為數(shù)組長(zhǎng)度減數(shù)組長(zhǎng)度減1。C語言編譯系統(tǒng)語言編譯系統(tǒng)不進(jìn)行數(shù)組邊界檢查不進(jìn)行數(shù)組邊界檢查,保證數(shù)組元素,保證數(shù)組元素引用時(shí)不超界是編程人員的職責(zé)。引用時(shí)不超界是編程人員的職責(zé)。二、一維數(shù)組的引用二、一維數(shù)組的引用 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例例7-3

12、輸出輸出5個(gè)學(xué)生的成績(jī)中大于個(gè)學(xué)生的成績(jī)中大于80分的成績(jī)分的成績(jī)#include void main() int i; float score5; for (i=0;i5;i+) scanf(”%f”,&scorei); /*逐個(gè)輸入各元素的值逐個(gè)輸入各元素的值*/ for (i=0;i=80) printf(”%8.2f”,scorei); 運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:63.2 56.3 78.9 95 6363.2 56.3 78.9 95 63 95.00 95.00 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言初始化初始化指在指在定義時(shí)指定初始值定義時(shí)指定初始值,編譯時(shí)將初始

13、值賦給數(shù)組元素編譯時(shí)將初始值賦給數(shù)組元素。賦值賦值是指使用賦值語句,在運(yùn)行時(shí)將值賦給數(shù)組元素。是指使用賦值語句,在運(yùn)行時(shí)將值賦給數(shù)組元素。1定義數(shù)組的同時(shí)可以進(jìn)行初始化,但必須針對(duì)數(shù)組元素逐個(gè)定義數(shù)組的同時(shí)可以進(jìn)行初始化,但必須針對(duì)數(shù)組元素逐個(gè)進(jìn)行,而不能給數(shù)組整體賦初值。進(jìn)行,而不能給數(shù)組整體賦初值。如:如:int a10=1,2,3,4,5,6,7,8,9,10;數(shù)組元素的初值依次放在一對(duì)大括號(hào)內(nèi)。數(shù)組元素的初值依次放在一對(duì)大括號(hào)內(nèi)。2可以只給部分元素初始化;如:可以只給部分元素初始化;如:int a10=1,2,3,4,5; 后后5個(gè)元素值為?個(gè)元素值為?3若整個(gè)數(shù)組的初值相同,也只能一

14、一初始化;若整個(gè)數(shù)組的初值相同,也只能一一初始化; 如:如:int a10=1,1,1,1,1,1,1,1,1,1; 1*10三、一維數(shù)組的初始化三、一維數(shù)組的初始化 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言4對(duì)全部數(shù)組元素初始化時(shí),可以不指定數(shù)組長(zhǎng)度,對(duì)全部數(shù)組元素初始化時(shí),可以不指定數(shù)組長(zhǎng)度,但但不能省略。不能省略。如:如:int a=1,2,3,4,5,6,7,8,9,10; 系統(tǒng)自動(dòng)定義長(zhǎng)度為系統(tǒng)自動(dòng)定義長(zhǎng)度為105數(shù)組定義后,若全部數(shù)組元素在使用前未賦值,則數(shù)組定義后,若全部數(shù)組元素在使用前未賦值,則該數(shù)組元素的值不確定。若數(shù)組元素部分初始化,則未該數(shù)組元素的值不確定。若數(shù)組元素

15、部分初始化,則未初始化部分元素值為初始化部分元素值為0。 如如int a10,b10=1,2,3,4; 一維數(shù)組的初始化一維數(shù)組的初始化 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例例7-4輸入十個(gè)整數(shù),按由小到大的順序輸出。輸入十個(gè)整數(shù),按由小到大的順序輸出。 1起泡法(或稱為冒泡法)排序起泡法(或稱為冒泡法)排序第第一一趟趟比比較較經(jīng)過第一趟經(jīng)過第一趟(共共5次比較與交換次比較與交換)后,最大的數(shù)后,最大的數(shù)9已已”沉沉底底” ,然后進(jìn)行對(duì)余下的前面然后進(jìn)行對(duì)余下的前面5個(gè)數(shù)第二趟比較。個(gè)數(shù)第二趟比較。四、一維數(shù)組應(yīng)用舉例四、一維數(shù)組應(yīng)用舉例 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言

16、如果有如果有n個(gè)數(shù),則要進(jìn)行個(gè)數(shù),則要進(jìn)行n-1趟比較。在第趟比較。在第1趟比較趟比較中要進(jìn)行中要進(jìn)行n-1次兩兩比較,在第次兩兩比較,在第j趟比較中要進(jìn)行趟比較中要進(jìn)行n-1-j次兩兩比較。次兩兩比較。起泡法排序第第二二趟趟比比較較 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言程序流程圖如下:程序流程圖如下: 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言#include void main() int i,j,t,a10; printf(Input integer numbers:n); for (i=0;i10;i+) scanf(%d,&ai); for (j=0;j9 ;j+)

17、for (i=0;iai+1) t=ai;ai=ai+1;ai+1=t; printf(The sorted numbers is:n); for (i=0;i10;i+) printf(%d ,ai); printf(n); 問題:?jiǎn)栴}:從從10個(gè)排序擴(kuò)展到個(gè)排序擴(kuò)展到n個(gè)數(shù)排序(個(gè)數(shù)排序(n已知),如已知),如何修改程序?何修改程序?#define N 20NNN-1N-1N程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下:Input integer numbers:23 4 12 35 76 56 -58 874 -456 86 The sorted numbers is:-456 -58 4 12

18、23 35 56 76 86 874 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言2選擇法排序選擇法排序 指導(dǎo)思想指導(dǎo)思想:不急于調(diào)換位置,而是記下當(dāng)前所掃視過的最:不急于調(diào)換位置,而是記下當(dāng)前所掃視過的最小數(shù)所在的位置,小數(shù)所在的位置,ap就是就是10個(gè)數(shù)中最小的那個(gè)數(shù)。個(gè)數(shù)中最小的那個(gè)數(shù)。 然后重復(fù)此算法,每重復(fù)一次,進(jìn)行比較的數(shù)列向后移動(dòng)然后重復(fù)此算法,每重復(fù)一次,進(jìn)行比較的數(shù)列向后移動(dòng)一個(gè)位置,即第一個(gè)位置,即第2遍從第遍從第2到第到第n個(gè)數(shù)進(jìn)行比較,將個(gè)數(shù)進(jìn)行比較,將ap與與a2對(duì)調(diào),對(duì)調(diào),此過程重復(fù),此過程重復(fù)n-1次,即可將數(shù)組中的次,即可將數(shù)組中的n個(gè)數(shù)按從小到大的順序排序。個(gè)

19、數(shù)按從小到大的順序排序。 這種排序方法稱為這種排序方法稱為選擇法選擇法。9 8 5 4 0 12 6 78 15 66pppp09p 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言 選擇法排序輸入輸入n個(gè)數(shù)給個(gè)數(shù)給a0aN-1for j=0 to N-1 p=j for i=j+1 to N-1 aiap Y N p=i ap與與aj交換交換輸出輸出a0aN-1#include #define N 10void main()int aN,i,j,p,t;printf(Input 10 integer numbers:n);for (i=0;iN;i+) scanf(%d,&ai);for

20、 (j=0;jN-1;j+) p=j; for (i=j+1;iN;i+) if (aiap) p=i; if (p!=j) t=aj; aj=ap;ap=t; printf(The sorted numbers:n);for (i=0;iN;i+) printf(%d ,ai);printf(n); 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言7.2 二維數(shù)組的定義和使用二維數(shù)組的定義和使用 一、二維數(shù)組的定義一、二維數(shù)組的定義 1一般形式:一般形式:存儲(chǔ)類型存儲(chǔ)類型 類型說明符類型說明符 數(shù)組名數(shù)組名常量式常量式1常量式常量式2 =初初始值始值;如:如:int a43,f45; 定義定義a

21、、f為二維數(shù)組為二維數(shù)組 不能寫成不能寫成 float a4,3,b4,5; 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言(1)同一維數(shù)組一樣,表達(dá)式中可包含)同一維數(shù)組一樣,表達(dá)式中可包含常量和字符常量常量和字符常量,但不能包含變量。但不能包含變量。(2)二維數(shù)組也可以理解為定義了多個(gè)一維數(shù)組,)二維數(shù)組也可以理解為定義了多個(gè)一維數(shù)組,如:如:int a43; 2 2定義時(shí)注意:定義時(shí)注意:a0:a00 a01 a02 a0a1a2a3 所以可將所以可將a看作特殊的一維數(shù)組,其中每個(gè)元素又為看作特殊的一維數(shù)組,其中每個(gè)元素又為一維數(shù)組。一維數(shù)組。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言

22、(3)二維數(shù)組的存放順序)二維數(shù)組的存放順序二維數(shù)組中的元素在存儲(chǔ)時(shí)實(shí)行二維數(shù)組中的元素在存儲(chǔ)時(shí)實(shí)行按行存放按行存放,即在內(nèi)存中先,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。順序存放第一行的元素,再存放第二行的元素。b00b01b02b10b11b12b20b21b223003000 0H H3003002 2H H3003004 4H H3003006 6H H3003008 8H H300300A AH H300300C CH H300300E EH H30301010H H123456789例如:例如:short b33=1,2,3,4,5,6, 7,8,9; 計(jì)算機(jī)教研室

23、田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言1表示形式為:表示形式為: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)下標(biāo)下標(biāo) 同樣,數(shù)組的下標(biāo)同樣,數(shù)組的下標(biāo)下限為下限為0,上限為,上限為常量表達(dá)式的值減常量表達(dá)式的值減1。2下標(biāo)也可用整型表達(dá)式來表示,但下標(biāo)值應(yīng)在已定義的數(shù)下標(biāo)也可用整型表達(dá)式來表示,但下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。保證下標(biāo)不超界是編程者的責(zé)任。組大小的范圍內(nèi)。保證下標(biāo)不超界是編程者的責(zé)任。如:下列引用是否正確:如:下列引用是否正確: int a43; a1+26-3=4; a42=10; a4-22=a32-a12;3數(shù)組元素可用于表達(dá)式中,也可用于賦值。如上例中。數(shù)組元素可用于表達(dá)式中,也可用于賦值。如

24、上例中。4注意定義時(shí)的注意定義時(shí)的a43與引用時(shí)的與引用時(shí)的a43的區(qū)別:的區(qū)別: ? 定義的定義的a43數(shù)組中有無數(shù)組中有無a43元素?元素? 二、二維數(shù)組的引用二、二維數(shù)組的引用 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言可以用下面可以用下面4種方法對(duì)二維數(shù)組初始化:種方法對(duì)二維數(shù)組初始化:數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式1常量表達(dá)式常量表達(dá)式2=初始化數(shù)據(jù)初始化數(shù)據(jù);1按行初始化:每一行的數(shù)據(jù)用括號(hào)括起來按行初始化:每一行的數(shù)據(jù)用括號(hào)括起來int a43=1,2,3,4,5,6, 7,8,9,10,11,12;2按順序初始化按順序初始化int a43=1,2,3,4,

25、5,6,7,8,9,10,11,12;所有數(shù)據(jù)在一個(gè)花括號(hào)內(nèi),按數(shù)組元素排列的順序?qū)Ω髟袛?shù)據(jù)在一個(gè)花括號(hào)內(nèi),按數(shù)組元素排列的順序?qū)Ω髟刭x初值,但容易遺漏。素賦初值,但容易遺漏。 三、二維數(shù)組的初始化三、二維數(shù)組的初始化 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言1 0 0 01 0 0 05 0 0 0 5 0 0 0 9000也可以對(duì)各行中的某一元素賦初值,如也可以對(duì)各行中的某一元素賦初值,如int a34=1,0,6,0,0,0,11; 1 0 0 01 0 0 00 6 0 00 6 0 00 00 0 110 0 11 1 0 0 01 0 0 05 6 0 0 5 6 0 0

26、 0000也可以只對(duì)某幾行元素賦初值也可以只對(duì)某幾行元素賦初值。如。如:int a34=1,5,6; .可以對(duì)部分元素賦初值:可以對(duì)部分元素賦初值:按行用括號(hào)括起來按行用括號(hào)括起來 例如:例如: int a34=1,5,9; 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言.如果對(duì)全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維如果對(duì)全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。即的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。即可以可以省略行下標(biāo),但列下標(biāo)不能省省略行下標(biāo),但列下標(biāo)不能省。 例如:例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;它它等價(jià)等

27、價(jià)于于:int a4=1,2,3,4,5,6,7,8,9,10,11,12;在定義時(shí)也可以只對(duì)部分元素賦初值而省略第一維的在定義時(shí)也可以只對(duì)部分元素賦初值而省略第一維的長(zhǎng)度,但應(yīng)分行賦初值。長(zhǎng)度,但應(yīng)分行賦初值。例如:例如:int a3= 1,5,6,9,11; 1 0 05 6 09 11 0 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例:判斷正誤:例:判斷正誤:int a34= 1,2,3,4,5,6,7,8,9,10,11,12;int b 3= 1,2,3,4,5,6,7,8,9,10,11,12;int c3 = 1,2,3,4,5,6,7,8,9,10,11,12;int d =

28、 1,2,3,4,5,6,7,8,9,10,11,12;int e23= 1,2,8;int f2= 1,2,3,8; 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言四、二維數(shù)組應(yīng)用舉例四、二維數(shù)組應(yīng)用舉例 例例7-5分析下列程序,當(dāng)運(yùn)行時(shí)輸入:分析下列程序,當(dāng)運(yùn)行時(shí)輸入:1 2 3 4 5 6 后,運(yùn)行結(jié)果為:后,運(yùn)行結(jié)果為: 。#include void main( ) int i,j,a23; for (i=0;i2;i+) for (j=0;j3;j+) scanf(%d,&aij); printf(na%d%d=%d,i,j,aij); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:1 2 3 4 5

29、6a00=1a01=2a02=3a10=4a11=5a12=6 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例例7-6改錯(cuò):下列程序求改錯(cuò):下列程序求2個(gè)個(gè)3*3矩陣對(duì)角矩陣對(duì)角線之和,不增加語句,改正程序中的錯(cuò)誤。線之和,不增加語句,改正程序中的錯(cuò)誤。 #include void main() int a3 =1,2,4,0,5,7; int j,k,b3,3; int sum1=sum2=0; for (j=1;j=3;j+) for (k=1;k=3;k+) scanf(”%d”,bjk ); for (k=1;k=3;k+) sum1+=akk; sum2+=bkk; printf(”

30、%d,%f”,sum1,sum2); a3=1,2,4,0,5,7;b33sum1=0,sum2=0;j=0;j3k=0;k3&bjkk=0;k3%d 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言N-S流程圖表示算法流程圖表示算法如下:如下:例例7.7: 有一個(gè)有一個(gè)34的矩陣,要求編程序求出其中值的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào)。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言#include void main()int i,j,row=0,col=0,max; int a34=3,5,7,9,65,3

31、46,24,-12, 45,-8,33,100;max=a00;for (i=0;i3;i+)for (j=0;j4;j+)if (maxaij) max=aij; row=i; col=j; printf(max=%d,row=%d,col=%dn,max,row,col);例例7.7 程序程序 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言7.3 字符數(shù)組字符數(shù)組 一、字符數(shù)組的定義一、字符數(shù)組的定義 二、字符數(shù)組的初始化二、字符數(shù)組的初始化 三、字符數(shù)組的引用三、字符數(shù)組的引用 四、字符串和字符串結(jié)束標(biāo)志四、字符串和字符串結(jié)束標(biāo)志 五、字符數(shù)組的輸入輸出五、字符數(shù)組的輸入輸出 六字符串處理

32、函數(shù)六字符串處理函數(shù) 七、字符數(shù)組應(yīng)用舉例七、字符數(shù)組應(yīng)用舉例 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一、字符數(shù)組的定義一、字符數(shù)組的定義用來存放用來存放字符數(shù)據(jù)字符數(shù)據(jù)的數(shù)組稱為的數(shù)組稱為字符數(shù)組字符數(shù)組,一個(gè)元素存放一,一個(gè)元素存放一個(gè)字符。常作為一個(gè)獨(dú)特的數(shù)據(jù)結(jié)構(gòu),專門用來存放字符個(gè)字符。常作為一個(gè)獨(dú)特的數(shù)據(jù)結(jié)構(gòu),專門用來存放字符串串,因此它與數(shù)值數(shù)組在許多方面有所不同。,因此它與數(shù)值數(shù)組在許多方面有所不同。字符數(shù)組的定義,如:字符數(shù)組的定義,如: char c110; 或或 int c210; char c3103;注意注意:字符數(shù)組和整型數(shù)組可以互相通用,但有時(shí)會(huì)出現(xiàn)字符數(shù)組和

33、整型數(shù)組可以互相通用,但有時(shí)會(huì)出現(xiàn)錯(cuò)誤;另外,若用錯(cuò)誤;另外,若用int數(shù)組存放字符常量,會(huì)造成很大的數(shù)組存放字符常量,會(huì)造成很大的內(nèi)存空間浪費(fèi)。內(nèi)存空間浪費(fèi)。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言1定義時(shí)進(jìn)行初始化:同一般數(shù)組一樣逐個(gè)進(jìn)行賦值(定義時(shí)進(jìn)行初始化:同一般數(shù)組一樣逐個(gè)進(jìn)行賦值(賦字賦字符序列符序列)一維數(shù)組一維數(shù)組:char c10=I, ,a,m, ,h,a,p,p,y;或者或者 省略下標(biāo)省略下標(biāo) 二維數(shù)組二維數(shù)組:char diamond55= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,*; 二、字符數(shù)組的初始化二、字符數(shù)組的初始化 計(jì)算

34、機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言2用字符串賦初值:用字符串賦初值:(不同于數(shù)值型數(shù)組)(不同于數(shù)值型數(shù)組)char c4=”cat”; 或者或者 char c4=”cat”;char ch 6=”China”,”Japan”,”Korea”; 當(dāng)將一個(gè)字符串存入一個(gè)數(shù)組時(shí),系統(tǒng)在有效字符末尾當(dāng)將一個(gè)字符串存入一個(gè)數(shù)組時(shí),系統(tǒng)在有效字符末尾多加多加0作為結(jié)束標(biāo)志,因而用字符串賦值比用字符逐作為結(jié)束標(biāo)志,因而用字符串賦值比用字符逐個(gè)賦值要個(gè)賦值要多占一個(gè)字節(jié)多占一個(gè)字節(jié)。v 字符數(shù)組定義時(shí)已確定元素個(gè)數(shù)而未初始化,則該字符字符數(shù)組定義時(shí)已確定元素個(gè)數(shù)而未初始化,則該字符數(shù)組中的元素值數(shù)組中

35、的元素值不確定不確定(隨機(jī));若已初始化,其余為(隨機(jī));若已初始化,其余為空字符(空字符(0)。)。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言三、字符數(shù)組的引用三、字符數(shù)組的引用 可引用字符數(shù)組中的一個(gè)元素,得到一個(gè)字符,引用方可引用字符數(shù)組中的一個(gè)元素,得到一個(gè)字符,引用方法與一般數(shù)值型數(shù)組相同。法與一般數(shù)值型數(shù)組相同。 例例7-8打印以下圖案:(打印以下圖案:(P153練習(xí)練習(xí)7.11) *#include void main()char a =*;int i, j, k;for (i=0;i5;i+)printf(n);printf( );for (j=1;j=i;j+)print

36、f( );for (k=0;k5;k+) printf(%c,ak); 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言#include void main()int i,j;char a6=China,Japan,Korea;for (i=0;i=2;i+)for (j=0;j5;j+)printf(%c,aij);printf(n); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:ChinaJapanKorea 例例7-9寫出下列程序的運(yùn)行結(jié)果:寫出下列程序的運(yùn)行結(jié)果: 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言1在在C語言中,字符串作為字符數(shù)組來處理。語言中,字符串作為字符數(shù)組來處理。如定義一個(gè)數(shù)組來存放字符串,如

37、如定義一個(gè)數(shù)組來存放字符串,如char c7=s,t,u,d,e,n,t;(長(zhǎng)度為(長(zhǎng)度為7) 但在實(shí)際應(yīng)用中所關(guān)心的是但在實(shí)際應(yīng)用中所關(guān)心的是字符串的有效長(zhǎng)度字符串的有效長(zhǎng)度,而不,而不是字符數(shù)組的長(zhǎng)度。如定義:是字符數(shù)組的長(zhǎng)度。如定義: char c10=s,t,u,d,e,n,t; (數(shù)組長(zhǎng)度為(數(shù)組長(zhǎng)度為10,實(shí)際長(zhǎng)度為,實(shí)際長(zhǎng)度為7)。)。 四、字符串和字符串結(jié)束標(biāo)志四、字符串和字符串結(jié)束標(biāo)志 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言2為了測(cè)定字符串的實(shí)際長(zhǎng)度,為了測(cè)定字符串的實(shí)際長(zhǎng)度,C語言規(guī)定一個(gè)語言規(guī)定一個(gè)“字符串結(jié)束字符串結(jié)束標(biāo)志標(biāo)志”,以,以 0代表代表。v有字符串結(jié)束

38、標(biāo)志后,程序中對(duì)字符串進(jìn)行操作時(shí),就不以有字符串結(jié)束標(biāo)志后,程序中對(duì)字符串進(jìn)行操作時(shí),就不以字符數(shù)組長(zhǎng)度為依據(jù),而是依據(jù)檢測(cè)字符數(shù)組長(zhǎng)度為依據(jù),而是依據(jù)檢測(cè)0的位置來判定字符串的位置來判定字符串是否結(jié)束。是否結(jié)束。v0代表代表ASCII為為0的字符,它是一個(gè)空操作符,只是一個(gè)的字符,它是一個(gè)空操作符,只是一個(gè)供辨別的標(biāo)志供辨別的標(biāo)志。如。如”study C language.”(共(共17個(gè)字符)個(gè)字符)v在定義字符串時(shí)及初始化時(shí),既可以逐個(gè)賦值,也可以采用在定義字符串時(shí)及初始化時(shí),既可以逐個(gè)賦值,也可以采用字符串常量來使字符數(shù)組初始化,但用字符串比逐個(gè)賦值長(zhǎng)度字符串常量來使字符數(shù)組初始化,但

39、用字符串比逐個(gè)賦值長(zhǎng)度長(zhǎng)長(zhǎng)1。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言如:如: char c =”student”; 或者或者 char c =”student”;數(shù)組數(shù)組c的長(zhǎng)度為的長(zhǎng)度為8,而非,而非7,因?yàn)樽址A亢笥上到y(tǒng)加上一因?yàn)樽址A亢笥上到y(tǒng)加上一個(gè)個(gè)0,它等價(jià)于,它等價(jià)于char c=s,t,u,d,e,n,t,0; 字符數(shù)組并不要求其最后一個(gè)字符為字符數(shù)組并不要求其最后一個(gè)字符為0,但由于系統(tǒng)對(duì)字,但由于系統(tǒng)對(duì)字符串常量自動(dòng)加一個(gè)符串常量自動(dòng)加一個(gè)0,為了處理方法一致,因而在字符,為了處理方法一致,因而在字符數(shù)組中常常人為地加上一個(gè)數(shù)組中常常人為地加上一個(gè)0。 如:如

40、: 改錯(cuò):改錯(cuò):char c13=b,o,y;char c23=”boy”;char c33=”boy”;char c43=boy 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例例7-10字符串的輸出字符串的輸出#include void main()char str=Beijing;int i;for (i=0;stri!=0;i+)printf(”%c”,stri);/逐個(gè)字符輸出逐個(gè)字符輸出 printf(n);printf(%s,str);1輸出輸出:有兩種方法:有兩種方法:(1)逐個(gè)字符輸出:用格式符)逐個(gè)字符輸出:用格式符”%c”,按字符序列輸出,按字符序列輸出(2)整個(gè)字符串一次

41、輸出:用)整個(gè)字符串一次輸出:用”%s” 格式符格式符/不同于數(shù)值數(shù)組不同于數(shù)值數(shù)組 五、字符數(shù)組的輸入輸出五、字符數(shù)組的輸入輸出對(duì) 應(yīng) 為 字對(duì) 應(yīng) 為 字符數(shù)組名符數(shù)組名對(duì)應(yīng)為字符對(duì)應(yīng)為字符數(shù)組元素?cái)?shù)組元素 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言(A)輸出字符串不包括輸出字符串不包括0;(B)用用%c輸出輸出:printf中的輸出項(xiàng)是數(shù)組元素名;中的輸出項(xiàng)是數(shù)組元素名; 用用%s輸出輸出:在:在printf的輸出表列中,只需給出的輸出表列中,只需給出字符串首地址字符串首地址,用字符數(shù)組名表示,一維數(shù)組直接,用字符數(shù)組名表示,一維數(shù)組直接用數(shù)組名,二維數(shù)組可作為多個(gè)一維數(shù)組。用數(shù)組名,

42、二維數(shù)組可作為多個(gè)一維數(shù)組。(C)若)若數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,則數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,則以以0為為結(jié)束標(biāo)志結(jié)束標(biāo)志,只輸出實(shí)際的字符串。,只輸出實(shí)際的字符串。(D)若)若字符數(shù)組中包括多個(gè)字符數(shù)組中包括多個(gè)0,以第一個(gè)為結(jié)束,以第一個(gè)為結(jié)束標(biāo)志標(biāo)志。(3)注意:)注意: 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言(1)逐個(gè)字符輸入:)逐個(gè)字符輸入:用用%c按字符序列輸入按字符序列輸入(2)整個(gè)字符串輸入:)整個(gè)字符串輸入: 用用%s輸入字符串輸入字符串/不同于數(shù)值型數(shù)組不同于數(shù)值型數(shù)組2輸入:有兩種方法輸入:有兩種方法如:如:#include void main() char c

43、110,c210; for (i=0;i10;i+) scanf(”%c”,&c1i);/逐個(gè)輸入字符逐個(gè)輸入字符 scanf(”%s”,c2); /輸入字符串輸入字符串 對(duì) 應(yīng) 為 字對(duì) 應(yīng) 為 字符數(shù)組名符數(shù)組名對(duì)應(yīng)為字符數(shù)對(duì)應(yīng)為字符數(shù)組元素的地址組元素的地址 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言3.說明說明(1)輸入的字符串應(yīng)短于定義的字符數(shù)組長(zhǎng)度輸入的字符串應(yīng)短于定義的字符數(shù)組長(zhǎng)度,系統(tǒng)自動(dòng)加,系統(tǒng)自動(dòng)加0;(2)用一個(gè)用一個(gè)scanf輸入多個(gè)字符串,則以輸入多個(gè)字符串,則以空格、回車空格、回車分隔分隔(3)用用%s輸入時(shí),輸入項(xiàng)中是字符數(shù)組名,輸入時(shí),輸入項(xiàng)中是字符數(shù)

44、組名,不加地址符不加地址符&。改錯(cuò)改錯(cuò):char ch10; scanf(”%c”,&ch); scanf(”%s”,&ch); scanf(”%s”,ch);(4)對(duì)于一維字符數(shù)組,用對(duì)于一維字符數(shù)組,用printf(”%o”,ch);可輸出數(shù);可輸出數(shù)組組ch的起始地址的起始地址。u實(shí)際上實(shí)際上printf(”%s”,ch);在執(zhí)行時(shí),按字符數(shù)組名;在執(zhí)行時(shí),按字符數(shù)組名ch找找到數(shù)組起始地址,然后逐個(gè)輸出其中的字符,直到遇到到數(shù)組起始地址,然后逐個(gè)輸出其中的字符,直到遇到0u注意注意:scanf函數(shù)以函數(shù)以回車回車、空格空格作為字符串結(jié)束標(biāo)志。作為字符串結(jié)束標(biāo)志。

45、 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言分析下列程序的結(jié)果分析下列程序的結(jié)果例:例: char st15; printf(”Input a string:”); scanf(”%s”,st); printf(”%s”,st); 運(yùn)行時(shí)輸入:運(yùn)行時(shí)輸入:Turbo C結(jié)果為?結(jié)果為?輸出:輸出:TurboWhy?如何解決?如何解決?解決辦法:(解決辦法:(1)多設(shè)幾個(gè)字符數(shù)組;)多設(shè)幾個(gè)字符數(shù)組; (2)用)用gets函數(shù)。函數(shù)。 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言六字符串處理函數(shù)六字符串處理函數(shù)1.puts函數(shù)函數(shù)2.gets函數(shù)函數(shù)3.strcat函數(shù)函數(shù)4.strcpy函數(shù)

46、函數(shù)5.strcmp函數(shù)函數(shù)6.strlen函數(shù)函數(shù)7.strlwr函數(shù)函數(shù)8.strupr函數(shù)函數(shù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一般形式一般形式: puts (字符數(shù)組字符數(shù)組) 作用:將一個(gè)字符串輸出到終端,包括轉(zhuǎn)義字作用:將一個(gè)字符串輸出到終端,包括轉(zhuǎn)義字符(使用不多)符(使用不多)char str =”BeijingnOlympic”;puts(str); 或者:或者:printf(”%s”,str);1. puts函數(shù)函數(shù) 字符串輸出函數(shù)字符串輸出函數(shù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言u(píng)一般形式為:一般形式為:gets(字符數(shù)組字符數(shù)組)u作用:從終端輸入

47、一個(gè)字符串到字符數(shù)組,并且得到一個(gè)作用:從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值(即字符數(shù)組的起始地址)。該函數(shù)一般只用來向字函數(shù)值(即字符數(shù)組的起始地址)。該函數(shù)一般只用來向字符數(shù)組輸入字符串。如:符數(shù)組輸入字符串。如: gets(str); 輸入:輸入:Beijing(送給(送給str共共8個(gè)字符,包括個(gè)字符,包括0)u注意:注意:puts、gets只對(duì)一個(gè)字符串操作,而不對(duì)多個(gè)只對(duì)一個(gè)字符串操作,而不對(duì)多個(gè)字符串。字符串。gets函數(shù)在函數(shù)在回車回車為結(jié)束標(biāo)志。為結(jié)束標(biāo)志。puts、gets函數(shù)使函數(shù)使用時(shí)要包含用時(shí)要包含stdio.h頭文件頭文件。 2. gets函數(shù)函數(shù) 字

48、符串輸入函數(shù)字符串輸入函數(shù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言 函數(shù)值為字符數(shù)組函數(shù)值為字符數(shù)組str的起始地址。一般利用的起始地址。一般利用gets函數(shù)函數(shù)的目的是向字符數(shù)組輸入一個(gè)字符串,而不大關(guān)心其函數(shù)值。的目的是向字符數(shù)組輸入一個(gè)字符串,而不大關(guān)心其函數(shù)值。 注意:注意:用用puts和和gets函數(shù)只能輸入或輸出一個(gè)字符串,函數(shù)只能輸入或輸出一個(gè)字符串,不能寫成不能寫成 puts(str1,str2) 或或 gets(str1,str2) 例:例: char st15; printf(”Input a string:”); gets(st); printf(”%s”,st);

49、 運(yùn)行時(shí)輸入:運(yùn)行時(shí)輸入:Turbo C結(jié)果為?結(jié)果為?輸出:輸出:Turbo C說明說明: 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一般形式一般形式:strcat(字符數(shù)組字符數(shù)組1,字符串字符串/字符數(shù)組字符數(shù)組2)頭文件:頭文件:string.h作用:連接兩字符數(shù)組中的字符串,把字符串作用:連接兩字符數(shù)組中的字符串,把字符串2連接到字符串連接到字符串1的后面,并刪除串的后面,并刪除串1后面的后面的0,結(jié)果放在字符數(shù)組,結(jié)果放在字符數(shù)組1中,函中,函數(shù)調(diào)用后得到一個(gè)函數(shù)值數(shù)調(diào)用后得到一個(gè)函數(shù)值字符數(shù)組字符數(shù)組1的首地址的首地址。如:如:char str130=”2008 Olympic

50、,”; char str2=”Beijing China”; printf(”%s”,strcat(str1,str2); 結(jié)果:結(jié)果:2008 Olympic, Beijing China3. strcat函數(shù)函數(shù) 字符串連接函數(shù)字符串連接函數(shù)說明:(說明:(1)不能直接用不能直接用“+”來進(jìn)行連接來進(jìn)行連接; (2)字符數(shù)組字符數(shù)組1必須足夠大,以容納新字符串必須足夠大,以容納新字符串; (3)連接前每個(gè)串后有連接前每個(gè)串后有0,連接后只有一個(gè),連接后只有一個(gè)0; 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一般形式:一般形式: strcpy(字符數(shù)組字符數(shù)組1,字符數(shù)組字符數(shù)組2/字符串

51、字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去。中去。例:例: char str110,str2=”Beijing”; strcpy(str1,str2);4strcpy函數(shù)函數(shù) 字符串復(fù)制函數(shù)字符串復(fù)制函數(shù) 說明說明:(1)字符數(shù)組)字符數(shù)組1的長(zhǎng)度應(yīng)不小于字符串的長(zhǎng)度應(yīng)不小于字符串2的長(zhǎng)度;的長(zhǎng)度; (2)字符數(shù)組字符數(shù)組1必須寫成必須寫成數(shù)組名數(shù)組名形式,字符串形式,字符串2用字符數(shù)用字符數(shù)組名或字符串常量;組名或字符串常量; (3)0一起復(fù)制;一起復(fù)制; (4)不能用賦值語句給字符數(shù)組賦字符串常量或字符數(shù))不能用賦值語句給字符數(shù)組賦字符串常量或字符數(shù)組。如

52、:組。如:str1=”Beijing”; str1=str2; () 用賦值語句只能將一個(gè)字符賦給一個(gè)字符變量或字符數(shù)組元用賦值語句只能將一個(gè)字符賦給一個(gè)字符變量或字符數(shù)組元素。素。 (5)擴(kuò)展:將字符串)擴(kuò)展:將字符串2中前中前n個(gè)字符復(fù)制到字符數(shù)組個(gè)字符復(fù)制到字符數(shù)組1中。中。strncpy(str1,str2,n); 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言改錯(cuò)改錯(cuò):char str110=”Beijing”,str210;str2=”O(jiān)lympic”;str1=str2;strcpy(str1,str2);strcpy(”2008”,str2);strcpy(str2,str1,4

53、);strcpy(str2,”O(jiān)lympic”);Strcpy(str1,str2);strcpy(str2 ,”2008”);strncpy(str2,str1,4); 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言v 一般形式:一般形式:strcmp(字符串字符串1,字符串,字符串2) v 作用:作用:比較字符串比較字符串1、字符串、字符串2的大小的大小v 比較規(guī)則:比較規(guī)則:對(duì)兩個(gè)字符串自左至右逐個(gè)字符相比較對(duì)兩個(gè)字符串自左至右逐個(gè)字符相比較(按按ASCII),直到出現(xiàn)不同的字符或遇到,直到出現(xiàn)不同的字符或遇到0為止為止。全部字符相。全部字符相同,則認(rèn)為相等;不同,則以第一個(gè)不相同的字符為

54、準(zhǔn)。同,則認(rèn)為相等;不同,則以第一個(gè)不相同的字符為準(zhǔn)。”Program”大于大于”People”,”English”小于小于”Language”v比較的結(jié)果由函數(shù)值帶回:比較的結(jié)果由函數(shù)值帶回: (1)相等,則函數(shù)值為)相等,則函數(shù)值為0;(2)串)串1大于大于串串2,則函數(shù)值為一正數(shù);,則函數(shù)值為一正數(shù);(3)串)串1小于小于串串2,則函數(shù)值為一負(fù)數(shù);,則函數(shù)值為一負(fù)數(shù);當(dāng)兩字符串進(jìn)行比較運(yùn)算時(shí),不能用普通的比較運(yùn)算符來進(jìn)當(dāng)兩字符串進(jìn)行比較運(yùn)算時(shí),不能用普通的比較運(yùn)算符來進(jìn)行,而要用函數(shù)來完成。行,而要用函數(shù)來完成。 5. strcmp函數(shù)函數(shù) 字符串比較函數(shù)字符串比較函數(shù) 計(jì)算機(jī)教研室 田

55、曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一般形式一般形式:strlen(字符數(shù)組字符數(shù)組) 作用作用:測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符串中的實(shí)際測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長(zhǎng)度長(zhǎng)度(不包括不包括0在內(nèi)在內(nèi))。如:如:char str=”O(jiān)lympic”;printf(”%d”,strlen(str);printf(”%d”, strlen(”O(jiān)lympic”); 所以該函數(shù)既可以測(cè)試字符串常量,也可以測(cè)試字符數(shù)所以該函數(shù)既可以測(cè)試字符串常量,也可以測(cè)試字符數(shù)組的長(zhǎng)度。組的長(zhǎng)度。 6strlen函數(shù)函數(shù) 字符串長(zhǎng)度函數(shù)字符串長(zhǎng)度函數(shù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言一般形式

56、:一般形式:strlwr (字符串字符串) 作用:將字符串中大寫字母換成小寫字母。作用:將字符串中大寫字母換成小寫字母。 8. strupr函數(shù)函數(shù) 一般形式:一般形式:strupr (字符串字符串) 作用:將字符串中小寫字母換成大寫字母。作用:將字符串中小寫字母換成大寫字母。 7. strlwr函數(shù)函數(shù) 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言例例7-11字符串大小寫轉(zhuǎn)換函數(shù)的使用字符串大小寫轉(zhuǎn)換函數(shù)的使用#include #include void main() char a =”O(jiān)lympic”; strupr(a); printf(”%sn”,a); strlwr(a); prin

57、tf(”%sn”,a);運(yùn)行結(jié)果:運(yùn)行結(jié)果:OLYMPIColympic 計(jì)算機(jī)教研室 田曉梅程序設(shè)計(jì)語言程序設(shè)計(jì)語言七、字符數(shù)組應(yīng)用舉例七、字符數(shù)組應(yīng)用舉例例例7-12以下程序?qū)儆谧址捌浜瘮?shù)的應(yīng)用,改正其中的錯(cuò)誤以下程序?qū)儆谧址捌浜瘮?shù)的應(yīng)用,改正其中的錯(cuò)誤#include void main() char str1=She is a student.; char str26=Yes,she is. ,str320; scanf(%c,&str3); strcat(No, she is not.,str3); if (str2=str3) printf(%sn,str1); else printf(%sn,str3); printf(%sn,str25); #include char str1 =She is a student.; str212=Yes,she is.s

溫馨提示

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

評(píng)論

0/150

提交評(píng)論