版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第 4 4 章章 數(shù)組數(shù)組 2主要內(nèi)容主要內(nèi)容數(shù)組屬于構(gòu)造數(shù)據(jù)類型。數(shù)組是由相同的數(shù)據(jù)類型數(shù)組屬于構(gòu)造數(shù)據(jù)類型。數(shù)組是由相同的數(shù)據(jù)類型按照一定次序排列的一組變量組成的集合體,其按照一定次序排列的一組變量組成的集合體,其中,構(gòu)成數(shù)組的變量稱為元素。數(shù)組按下標(biāo)個(gè)數(shù)中,構(gòu)成數(shù)組的變量稱為元素。數(shù)組按下標(biāo)個(gè)數(shù)分類,有一維數(shù)組、二維數(shù)組等。分類,有一維數(shù)組、二維數(shù)組等。數(shù)組中的數(shù)據(jù)可以是基本類型、指針類型、結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)可以是基本類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。數(shù)組中的元素在內(nèi)存中是類型、共用體類型等。數(shù)組中的元素在內(nèi)存中是連續(xù)存放的,每個(gè)元素都可以通過下標(biāo)來引用。連續(xù)存放的,每個(gè)元素
2、都可以通過下標(biāo)來引用。當(dāng)處理大量的同類型數(shù)據(jù)時(shí)使用數(shù)組很方便。當(dāng)處理大量的同類型數(shù)據(jù)時(shí)使用數(shù)組很方便。34.1 一維數(shù)組 4.1.1 一維數(shù)組定義一維數(shù)組定義【存儲(chǔ)類型】【存儲(chǔ)類型】 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式 int age40; float f6*6; 例如:以下是合法的數(shù)組定義語句:int i;i=10;int datai; 以下是不合法的數(shù)組定義語句:44.1.3 一維數(shù)組元素的引用一維數(shù)組元素的引用數(shù)組定義之后,就可以在程序中引用元素。數(shù)組定義之后,就可以在程序中引用元素。引用格式為:引用格式為:數(shù)組名數(shù)組名下標(biāo)表達(dá)式下標(biāo)表達(dá)式說明:說明:下標(biāo)表達(dá)式是整型常量
3、或整型變量表達(dá)式。下標(biāo)表達(dá)式是整型常量或整型變量表達(dá)式。 例如定義:例如定義: int b,c,a5;數(shù)組數(shù)組a可引用的元素有:可引用的元素有:a0,a1,a2,a3,a4。 給元素賦值方法給元素賦值方法: a0=0; a1=1;a2=2;a3=3 ; a4=4 ; for(i=0;i100A6【例【例4.1】讀入一維數(shù)組,并按相反順序輸出各元素?!孔x入一維數(shù)組,并按相反順序輸出各元素。算法分析:算法分析: (1)設(shè)數(shù)組)設(shè)數(shù)組a含有含有10個(gè)元素,下標(biāo)為個(gè)元素,下標(biāo)為09。(2)以下標(biāo)作為循環(huán)控制變量)以下標(biāo)作為循環(huán)控制變量for(i=0;i=9;i+) 在循環(huán)體內(nèi)進(jìn)行數(shù)組元素在循環(huán)體內(nèi)進(jìn)行
4、數(shù)組元素ai的引用的引用 7 #include using namespace std;#include void main() int i,a10; for(i=0;iai; for(i=9;i=0;i-) coutsetw(6)max,則則max=ai 、position=i;1225213 82794936010max:position:513 827949360100246i13程序清單程序清單void main() int a10; int i,max,position; for(i=0;iai; position=0; max=a0; for(i=1;imax) max=ai;po
5、sition=i; coutmax=max position=position=3)算法分析:算法分析:fibonacci數(shù)列的特點(diǎn)是:數(shù)列的特點(diǎn)是:1,1,2,3,5,8.從第從第3項(xiàng)開始其值為項(xiàng)開始其值為前兩項(xiàng)之和前兩項(xiàng)之和;為什么使用數(shù)組?為什么使用數(shù)組? 可將各數(shù)據(jù)作為數(shù)組元素保留下來可將各數(shù)據(jù)作為數(shù)組元素保留下來 對(duì)比對(duì)比f1,f2簡(jiǎn)單變量考慮簡(jiǎn)單變量考慮15#include using namespace std;#include void main() int i,f20=1,1; /給數(shù)列第一和第二個(gè)元素賦值給數(shù)列第一和第二個(gè)元素賦值 for(i=2;i20;i+) fi=fi
6、-2+fi-1; /數(shù)組當(dāng)前元素的值是其前兩項(xiàng)的和數(shù)組當(dāng)前元素的值是其前兩項(xiàng)的和 for(i=0;i20;i+) /每行輸出每行輸出5個(gè)元素個(gè)元素 if(i%5=0) coutendl; /每行輸出每行輸出5個(gè)元素個(gè)元素 coutsetw(10)fi; 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 676516【例4.4】使用冒泡法將6個(gè)數(shù)據(jù)從小到大排序。算法分析:算法分析: 排序是將一組隨機(jī)排放的數(shù)按從小到大排序是將一組隨機(jī)排放的數(shù)按從小到大(升序升序)或從大到小或從大到小(降降序序)重新
7、排列。重新排列。排序方法采用多的有:冒泡法、選擇法和插入法等。排序方法采用多的有:冒泡法、選擇法和插入法等。冒泡法的思路是:冒泡法的思路是: 將相鄰兩個(gè)數(shù)將相鄰兩個(gè)數(shù)ai和和ai+1比較,將大數(shù)調(diào)到后頭,小數(shù)調(diào)到比較,將大數(shù)調(diào)到后頭,小數(shù)調(diào)到前頭前頭;第一輪比較下來,將最大值放入第一輪比較下來,將最大值放入a6;第二輪比較下來,次大數(shù)放入了第二輪比較下來,次大數(shù)放入了a5;如此循環(huán)如此循環(huán)n-1輪,則將輪,則將6個(gè)數(shù)按從小到大分別存在個(gè)數(shù)按從小到大分別存在a1,a2,a6中。中。17冒泡法圖示 交換 5 2 6 4 1 3 不交換 交換 交換 交換 2 5 6 4 1 3 2 5 6 4 1
8、3 2 5 4 6 1 3 2 5 4 1 6 3 2 5 4 1 3 6 最大值 圖4.2 冒泡排序法圖示 18void main() int a7,i,j,t; coutinput 6 numbers:n; for(i=1;iai; for(i=1;i6;i+) for(j=1;jaj+1) t=aj; aj=aj+1; aj+1=t; for (i=1;i=6;i+) coutai“ ”;a0a1a2a3a4a5a6可省略可省略itj _5 2 6 4 1 3 526413input 6 numbers:1 152552226654 46 416 61136 63 633 4 5 621
9、 154234 531 4133 441 2132 351226 1 2 3 4 5 6 _194.2 二維數(shù)組及多維數(shù)組 用用2個(gè)下標(biāo)區(qū)分具體元素的數(shù)組稱為二維數(shù)組。個(gè)下標(biāo)區(qū)分具體元素的數(shù)組稱為二維數(shù)組。 用用3個(gè)及個(gè)及3個(gè)以上下標(biāo)表示的數(shù)組稱為多維數(shù)組。個(gè)以上下標(biāo)表示的數(shù)組稱為多維數(shù)組。4.2.1 二維數(shù)組及多維數(shù)組定義二維數(shù)組及多維數(shù)組定義二維數(shù)組定義的一般形式為:二維數(shù)組定義的一般形式為: 存儲(chǔ)類型存儲(chǔ)類型 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名常量常量常量常量; int a23,b5l0;同理定義一個(gè)三維數(shù)組:同理定義一個(gè)三維數(shù)組: int c234;204.2.2 二維數(shù)組及多維數(shù)組的存儲(chǔ)
10、形式二維數(shù)組中元素的排列順序是按行連續(xù)存放的,二維數(shù)組中元素的排列順序是按行連續(xù)存放的,即在內(nèi)存中先順序存放完第一行元素,即在內(nèi)存中先順序存放完第一行元素,再繼續(xù)存放第二行元素,再繼續(xù)存放第二行元素,直到最后一行。直到最后一行。例如:例如:int a23;二維數(shù)組二維數(shù)組a中元素排列順序中元素排列順序 a00 a01 a02 a10 a11 a12二維數(shù)組二維數(shù)組a在內(nèi)存中的存儲(chǔ)格式在內(nèi)存中的存儲(chǔ)格式 a00 a01 a02 a10 a10 a11 2000 2004 2008 200C 2010 2014 多維數(shù)組元素在內(nèi)存中的存放規(guī)律與二維數(shù)組相同,多維數(shù)組元素在內(nèi)存中的存放規(guī)律與二維數(shù)組
11、相同,元素最左邊的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。元素最左邊的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。 214.2.3 二維數(shù)組元素的引用數(shù)組不能對(duì)其整體引用,只能對(duì)具體元素進(jìn)行引用。數(shù)組不能對(duì)其整體引用,只能對(duì)具體元素進(jìn)行引用。格式:格式: 數(shù)組名數(shù)組名下標(biāo)表達(dá)式下標(biāo)表達(dá)式下標(biāo)表達(dá)式下標(biāo)表達(dá)式 說明:說明:(1)下標(biāo)表達(dá)式可是整型常量或變量表達(dá)式。)下標(biāo)表達(dá)式可是整型常量或變量表達(dá)式。 例如:例如: int a23;合法引用:合法引用: a01, aij,a3*2-56%3等。等。(2)同樣在數(shù)組引用中要特別注意下標(biāo)越界問題。)同樣在數(shù)組引用中要特別注意下標(biāo)越界問題。 224.2.4 二維數(shù)
12、組的初始化 二維數(shù)組初始化方式有兩種方式二維數(shù)組初始化方式有兩種方式1按行對(duì)二維數(shù)組初始化。按行對(duì)二維數(shù)組初始化。例如:例如: int a23=1,2,3,4,5,6;2按數(shù)組元素存放順序?qū)Τ跏蓟0磾?shù)組元素存放順序?qū)Τ跏蓟?。例如,例如?int a23=l,2,3,4,5,6;23說明:說明:(1)初始化時(shí)可對(duì)數(shù)組全部元素初始化,也可以只對(duì)部)初始化時(shí)可對(duì)數(shù)組全部元素初始化,也可以只對(duì)部分元素初始化。分元素初始化。 例如:例如: int a341,2,3; 它的作用是只對(duì)各行第一列的元素賦初值,其余元素它的作用是只對(duì)各行第一列的元素賦初值,其余元素值自動(dòng)為值自動(dòng)為0。 0123012 i j
13、aij12300000000024說明:說明:也可以只對(duì)某幾行賦初值,也可以只對(duì)某幾行賦初值,例如例如:int a34=1,2,3; 0123012 i jaij12003000000025說明:說明:(2)對(duì)全部元素初始化時(shí),可以省略數(shù)組第一維的對(duì)全部元素初始化時(shí),可以省略數(shù)組第一維的長度,但第二維的長度不能省略。長度,但第二維的長度不能省略。例如:例如: int a 3=1,2,3,4,5,6;01201 i jaij142536 由于未指定數(shù)組第一維的長度,由于未指定數(shù)組第一維的長度,C C編譯程序?qū)⒕幾g程序?qū)⒏鶕?jù)數(shù)組第二維的長度以及初始化數(shù)據(jù)的個(gè)數(shù),確根據(jù)數(shù)組第二維的長度以及初始化數(shù)據(jù)
14、的個(gè)數(shù),確定數(shù)組第一維的長度為定數(shù)組第一維的長度為2 2,保證數(shù)組大小足夠存放,保證數(shù)組大小足夠存放全部初始化數(shù)據(jù)。全部初始化數(shù)據(jù)。26說明:說明:(3)按行初始化時(shí),對(duì)全部或部分元素初始化均可省略數(shù)組)按行初始化時(shí),對(duì)全部或部分元素初始化均可省略數(shù)組第一維的長度,第一維的長度,例如:例如: int a32=1,2,0,3;還可寫成:還可寫成: int a 2=1,2,0,3;系統(tǒng)能根據(jù)初始值分行情況自動(dòng)確定該數(shù)組第一維的長度為系統(tǒng)能根據(jù)初始值分行情況自動(dòng)確定該數(shù)組第一維的長度為3。 01012 i jaij10320027b4.2.5 二維數(shù)組程序設(shè)計(jì)舉例【例4.5】將一個(gè)二維數(shù)組的行和列元
15、素互換(即矩陣的轉(zhuǎn)置),將結(jié)果存到另一個(gè)數(shù)組中。 矩陣的轉(zhuǎn)置算法:矩陣的轉(zhuǎn)置算法: aij=bji123456456a123b123456456a123bij=aji ijij28#include void main() int a23=1,2,3,4,5,6,b32; int i,j; coutarray a is:endl; for (i=0;i2;i+) for (j=0;j3;j+) coutsetw(10)aij; coutendl; array a is:123456abij12345629 coutarray b is:endl; for(i=0;i3;i+) for(j=0;j
16、2;j+) bij=aji; coutsetw(10)bij; coutendl; abarray b is:iij123j45641123456236514253630void main() int a4=3,16,87,65,4,32,11,108,10,25,12,27; int b3,i,j,rowmax; for(i=0;i=2;i+) rowmax=ai0; for(j=1;jrowmax) rowmax=aij; bi=rowmax; 16 87 6532 11 108a3425 12 2710browmaxij6512874 32 11108108103 16 87252727
17、【例4.6】在二維數(shù)組a中選出各行最大的元素組成一個(gè)一維數(shù)組b。31 coutarray a is:endl; for(i=0;i=2;i+) for(j=0;j=3;j+) coutsetw(10)aij; coutendl; coutarray b is:endl; for(i=0;i=2;i+) coutsetw(10)bi; coutendl; 8710827b16 87 6532 11 108a3425 12 2710316 87 65432 11 10810 25 12 278710827array a is:array b is:_324.3 字符數(shù)組與字符串所謂所謂“字符串字符
18、串”是指若干有效字符的序列。是指若干有效字符的序列。C程序中的字符串可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字程序中的字符串可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。符等。 例如,下列字符串都是合法的。例如,下列字符串都是合法的。HelloC program35.29ChinatBeijingnC語言中沒有字符串變量,字符串不是存放在一個(gè)變量中,語言中沒有字符串變量,字符串不是存放在一個(gè)變量中,而是存放在一個(gè)字符型的數(shù)組中。而是存放在一個(gè)字符型的數(shù)組中。在在C語言中,字符串被作為字符數(shù)組來處理。語言中,字符串被作為字符數(shù)組來處理。334.3.1 4.3.1 字符數(shù)組與字符串字符數(shù)組與字符串 用于存放
19、字符串?dāng)?shù)據(jù)的數(shù)組是字符數(shù)組,用于存放字符串?dāng)?shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。字符數(shù)組中的一個(gè)元素存放一個(gè)字符。定義一維字符數(shù)組的一般格式為:定義一維字符數(shù)組的一般格式為: char 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式;例如,例如, char str10;由于字符型與整型是相互通用的,因此由于字符型與整型是相互通用的,因此上面定義還可以改為:上面定義還可以改為: int str10;1. 字符數(shù)組的定義字符數(shù)組的定義str10合法合法引用引用越界越界 str0 str1 str2 str3 str4 str5 str6 str7 str8 str9str342. 字符數(shù)組的初
20、始化字符數(shù)組的初始化 字符數(shù)組的初始化有兩種方式。字符數(shù)組的初始化有兩種方式。(1)逐個(gè)給數(shù)組中的各元素賦初值,即將字符常量依次放在花括逐個(gè)給數(shù)組中的各元素賦初值,即將字符常量依次放在花括號(hào)中。號(hào)中。 char str15=C, ,p,r,o,g,r,a,m;cprogram 0 0 0 0 0 0注意:注意:0在在C語言中是字符串結(jié)束標(biāo)志。即使初始化語言中是字符串結(jié)束標(biāo)志。即使初始化時(shí)時(shí)0后面還有其他字符,系統(tǒng)也會(huì)認(rèn)為后面還有其他字符,系統(tǒng)也會(huì)認(rèn)為0之前的字之前的字符才是字符串中的字符。例如:符才是字符串中的字符。例如:char str15=C, ,p,r,o,g,r,a,m,0,&
21、,C,+,+; 35(2)直接使用字符串常量初始化,字符串常量加不加花直接使用字符串常量初始化,字符串常量加不加花括號(hào)都可以。括號(hào)都可以。例如,例如,char str15=C program; 或者或者 char str15=C program; C編譯程序會(huì)自動(dòng)在字符串的末尾增加編譯程序會(huì)自動(dòng)在字符串的末尾增加1個(gè)個(gè)0字符。字符。注意:注意:初始化時(shí),一定要使定義的數(shù)組的大小至少比初始化時(shí),一定要使定義的數(shù)組的大小至少比所賦的字符串長度大所賦的字符串長度大1。(3) 初始化時(shí)也可以不指定數(shù)組的大小,上面初始化初始化時(shí)也可以不指定數(shù)組的大小,上面初始化的語句也可寫成:的語句也可寫成: char
22、 str =C program;這時(shí),系統(tǒng)會(huì)根據(jù)實(shí)際字符串的長度決定數(shù)組的大小。這時(shí),系統(tǒng)會(huì)根據(jù)實(shí)際字符串的長度決定數(shù)組的大小。 364.3.2 4.3.2 字符數(shù)組的輸入與輸出字符數(shù)組的輸入與輸出字符串的輸入輸出有如下兩種方式字符串的輸入輸出有如下兩種方式1. 用格式符用格式符“%c”實(shí)現(xiàn)逐個(gè)字符輸入實(shí)現(xiàn)逐個(gè)字符輸入/輸出。輸出。【例【例4.7】閱讀程序,寫出程序結(jié)果?!块喿x程序,寫出程序結(jié)果。#includevoid main() char str5; int i; printf(input four characters:n); scanf(%c,%c,%c,%c,&str0,&
23、amp;str1,&str2,&str3); for(i=0;i4;i+) printf(%c,stri);input four characters:a,b,c,d a b c dbcdabcda 037【例【例4.8】閱讀程序,寫出程序結(jié)果?!块喿x程序,寫出程序結(jié)果。#includevoid main() char str5; printf(input four characters:n); scanf(“%s”,str); /讀入字符串,讀入字符串,格式串用格式串用%s printf(%s,str); /輸出字符串輸出字符串 input four characters:a
24、,b,c,d a b c dbcdabcda2. 用格式符%s實(shí)現(xiàn)整個(gè)字符串輸入/輸出。 038注意:(1)用)用scanf()函數(shù)輸入字符串時(shí),字符串中不能包含空格,函數(shù)輸入字符串時(shí),字符串中不能包含空格,否則空格將作為字符串的結(jié)束標(biāo)志。否則空格將作為字符串的結(jié)束標(biāo)志。 例如:例如:char str15; scanf(%s,str); 如果輸入如果輸入11個(gè)字符個(gè)字符How are you,實(shí)際上并不是把這,實(shí)際上并不是把這11個(gè)字符加上個(gè)字符加上0存到數(shù)組存到數(shù)組str中,而只將第一個(gè)空格前中,而只將第一個(gè)空格前的的How字符串送到字符串送到str中,中,str實(shí)際值為實(shí)際值為How0,系
25、統(tǒng)把第一個(gè)空格當(dāng)作了結(jié)束標(biāo)志。系統(tǒng)把第一個(gè)空格當(dāng)作了結(jié)束標(biāo)志。 39(2)在)在C語言中,數(shù)組名代表的是該數(shù)組的首地址。語言中,數(shù)組名代表的是該數(shù)組的首地址。 因此,當(dāng)因此,當(dāng)scanf函數(shù)的輸入項(xiàng)是字符數(shù)組名時(shí),則函數(shù)的輸入項(xiàng)是字符數(shù)組名時(shí),則不要加取地址符,不要加取地址符,例例 scanf(%s,str)但如果但如果str不是數(shù)組名,這種寫法將是錯(cuò)誤的。不是數(shù)組名,這種寫法將是錯(cuò)誤的。 40(3)二維數(shù)組可當(dāng)作一維數(shù)組來處理,因此,一個(gè)二維數(shù)組可存儲(chǔ)多個(gè)字符串。對(duì)二維數(shù)組輸入/輸出多個(gè)字符串時(shí),可用循環(huán)完成。例如:例如:char str210;for(i=0;i2;i+) scanf(%s
26、,stri); /stri代表行首地址代表行首地址for(i=0;i2;i+) printf(%s,stri);41將【例將【例4.8】改用】改用C+風(fēng)格,程序如下:風(fēng)格,程序如下:#include using namespace std;void main() char str5; coutinput four characters:str; /讀入字符串讀入字符串 coutstr a; while( ai!=0 ) bi=ai+3; /加密加密 if(biz|biZ&bia) bi=bi-26; i+; bi=0; /寫入字符串結(jié)束標(biāo)志寫入字符串結(jié)束標(biāo)志 44/*解密解密*/ i=
27、0; while(bi!=0) ci=bi-3; if(ciZ|ciA) ci=ci+26; i+; ci=0; coutbendlcendl;student vwxghqwstudent454.3.3 4.3.3 字符串處理函數(shù)字符串處理函數(shù) C語言本身不提供字符串處理的功能,但語言本身不提供字符串處理的功能,但C語言編譯系統(tǒng)語言編譯系統(tǒng)提供了大量的字符串處理庫函數(shù)提供了大量的字符串處理庫函數(shù). 頭文件頭文件“stdio.h”包含用于輸入包含用于輸入/輸出的字符串函數(shù)輸出的字符串函數(shù)頭文件頭文件“string.h” 包含用于比較、拷貝、合并等用途包含用于比較、拷貝、合并等用途的字符串函數(shù)的字
28、符串函數(shù)461. 1. 字符串輸出函數(shù)字符串輸出函數(shù)調(diào)用格式:調(diào)用格式:puts(字符數(shù)組名字符數(shù)組名);功能:功能:把字符數(shù)組中的字符輸出到標(biāo)準(zhǔn)輸出設(shè)備把字符數(shù)組中的字符輸出到標(biāo)準(zhǔn)輸出設(shè)備(顯示器),字符串結(jié)束標(biāo)志轉(zhuǎn)換成回車換行符。(顯示器),字符串結(jié)束標(biāo)志轉(zhuǎn)換成回車換行符。puts函數(shù)完全可以用函數(shù)完全可以用printf函數(shù)取代,當(dāng)需要按一函數(shù)取代,當(dāng)需要按一定格式輸出時(shí),通常用定格式輸出時(shí),通常用printf函數(shù)。函數(shù)。 472. 2. 字符串輸入函數(shù)字符串輸入函數(shù)調(diào)用格式:調(diào)用格式:gets(字符數(shù)組名字符數(shù)組名);功能:功能:從標(biāo)準(zhǔn)輸入設(shè)備從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤鍵盤)上輸入一個(gè)字符串。
29、本上輸入一個(gè)字符串。本函數(shù)得到一個(gè)函數(shù)值,即為該字符數(shù)組的首地址。函數(shù)得到一個(gè)函數(shù)值,即為該字符數(shù)組的首地址。注意:注意:gets()函數(shù)和使用函數(shù)和使用“%s”格式的格式的scanf()函數(shù)區(qū)別。函數(shù)區(qū)別。對(duì)于對(duì)于scanf函數(shù),函數(shù),“回車回車”或或“空格空格”都作為字符串都作為字符串結(jié)束標(biāo)志;結(jié)束標(biāo)志;而對(duì)于而對(duì)于gets函數(shù),只有函數(shù),只有“回車回車”才是字符串結(jié)束標(biāo)才是字符串結(jié)束標(biāo)志;志;“空格空格”則是字符串的一部分。則是字符串的一部分。48【例4.10】字符串輸入/輸出函數(shù)舉例。void main() char str15; coutinput a string:“字符串字符串2
30、,返回值為一正整數(shù);,返回值為一正整數(shù); 字符串字符串1=字符串字符串2,返回值為,返回值為0; 字符串字符串1字符串字符串2,返回值為一負(fù)數(shù);,返回值為一負(fù)數(shù);字符串比較的方法是對(duì)兩個(gè)字符串對(duì)應(yīng)的字符相比,字符串比較的方法是對(duì)兩個(gè)字符串對(duì)應(yīng)的字符相比,例如:例如:“A”“9”,“THIS”“these” 注意:注意:if(strl=str2) printf(yesn); /錯(cuò)誤錯(cuò)誤 只能引用只能引用strcmp()函數(shù)進(jìn)行字符串比較。()函數(shù)進(jìn)行字符串比較。526. 6. 測(cè)字符串長度函數(shù)測(cè)字符串長度函數(shù)調(diào)用格式:調(diào)用格式: strlen(字符串字符串);功能:功能:測(cè)字符串的實(shí)際長度測(cè)字符
31、串的實(shí)際長度(不含字符串結(jié)束標(biāo)不含字符串結(jié)束標(biāo)志志0)并作為函數(shù)返回值。并作為函數(shù)返回值。返回值返回值是正整數(shù),即字符串的長度。是正整數(shù),即字符串的長度。例如:例如: strlen(C language)=10 strlen(C0language)=1537. 7. 大小寫轉(zhuǎn)換函數(shù)大小寫轉(zhuǎn)換函數(shù)(1)小寫字母轉(zhuǎn)換成大寫字母小寫字母轉(zhuǎn)換成大寫字母調(diào)用格式:調(diào)用格式:strupr(字符串字符串);功能:功能:將字符串中的小寫字母轉(zhuǎn)換成大寫字母,其將字符串中的小寫字母轉(zhuǎn)換成大寫字母,其他字符不轉(zhuǎn)換。他字符不轉(zhuǎn)換。(2) 大寫字母轉(zhuǎn)換成小寫字母大寫字母轉(zhuǎn)換成小寫字母調(diào)用格式:調(diào)用格式:strlwr(字
32、符串字符串);功能:功能:將字符串中的大寫字母轉(zhuǎn)換成小寫字母,其將字符串中的大寫字母轉(zhuǎn)換成小寫字母,其他字符不轉(zhuǎn)換。他字符不轉(zhuǎn)換。 544.3.4 字符數(shù)組程序設(shè)計(jì)舉例 【例4.11】從鍵盤輸入一個(gè)字符串,要求不使用庫函數(shù),將字符串復(fù)制到另一個(gè)字符數(shù)組后顯示出來。void main() char str120,str220; int i=0; coutinput string1:endl; gets(str1); while(str1i!=0) str2i=str1i; i+; str2i=0; aainput string1:istr1str2Clanguage0C language lan
33、guag eCClanguageClangage0u055 coutstring 1 is: ; puts(str1); coutstring 2 is: “endl; puts(str2);aastring 1 is: string 2 is:Clangageu0Clangageu0str1str2C language C language 56【例【例4.124.12】在】在3 3個(gè)字符串中,找出其中最大者。個(gè)字符串中,找出其中最大者。#include using namespace std; void main() char string20; char str320; int i; c
34、outinput three strings:“endl; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0) strcpy(string,str2); coutthe largest string is:stringendl;the largest string is:stringstrstr0str1str20CPascal0Basic0Pascal0Pascal0Pascal584.5 數(shù)組程序舉例【例【例4.13】編寫在一組數(shù)據(jù)中查找一個(gè)數(shù)據(jù)的程序?!烤帉懺谝唤M數(shù)據(jù)中查找
35、一個(gè)數(shù)據(jù)的程序。問題是:在一維數(shù)組問題是:在一維數(shù)組a10中,中, 查找一個(gè)整數(shù)查找一個(gè)整數(shù)key;算法分析:算法分析: 結(jié)果結(jié)果1、若找到則輸出數(shù)組元素;、若找到則輸出數(shù)組元素; 結(jié)果結(jié)果2、否則輸出、否則輸出not found!。(1)查找的方法主要有:使用順序查找法)查找的方法主要有:使用順序查找法順序查找法的思路是:順序查找法的思路是: 將數(shù)組元素逐一和將數(shù)組元素逐一和key比較,若相等則查找成功,提前退出查比較,若相等則查找成功,提前退出查找的循環(huán);找的循環(huán); 若直到數(shù)組結(jié)束也沒有找到,則查找失敗,正常結(jié)若直到數(shù)組結(jié)束也沒有找到,則查找失敗,正常結(jié)束循環(huán),則下標(biāo)為束循環(huán),則下標(biāo)為10
36、; 59void main() int i,key,a10; /i記錄所找數(shù)的位置記錄所找數(shù)的位置 coutinput 10 integers:endl; for(i=0;iai; /輸入數(shù)組輸入數(shù)組 coutinput an searching integer: key; /輸入待查找的整數(shù)輸入待查找的整數(shù) for(i=0;i10;i+) if(ai=key) break; /若當(dāng)前元素與若當(dāng)前元素與key相等,結(jié)束查找相等,結(jié)束查找 if(i10) /若找到若找到key,則下標(biāo),則下標(biāo)i的值小于的值小于10 coutkey is in array a,the position is iendl; else cout“not found!n”; /給出查找信息給出查找信息Input 10 integers:38 67 10 5 92 23 12 81 50 input an searching integer:10 10 is in array a,the position is 3再運(yùn)行一次結(jié)果為:再運(yùn)行一次結(jié)果為:19 38 67 10 5 92 23 12 81 50 input an searching integer:20 not found!60【例【例4.144.14】求一個(gè)矩陣的對(duì)角線元素的和】求一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代企業(yè)員工激勵(lì)機(jī)制設(shè)計(jì)與實(shí)踐
- 班級(jí)環(huán)境衛(wèi)生與校園文化建設(shè)的結(jié)合
- 4《機(jī)械擺鐘》說課稿-2023-2024學(xué)年科學(xué)五年級(jí)上冊(cè)教科版
- 2023七年級(jí)數(shù)學(xué)上冊(cè) 第3章 一次方程與方程組3.2 一元一次方程的應(yīng)用第1課時(shí) 等積變形和行程問題說課稿 (新版)滬科版
- Unit 4 Plants around us Part A Let's learn(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 2024-2025學(xué)年新教材高中英語 Unit 3 The world meets China預(yù)習(xí) 新知早知道1(教用文檔)說課稿 外研版選擇性必修第四冊(cè)
- 2025日本食品業(yè)A公司特許合同樣本
- 2025年銀行擔(dān)保借款合同范本
- 1小蝌蚪找媽媽 說課稿-2024-2025學(xué)年語文二年級(jí)上冊(cè)統(tǒng)編版
- 2024-2025學(xué)年高中生物 第一章 孟德爾定律 第一節(jié) 分離定律說課稿1 浙科版必修2
- 第十一章《功和機(jī)械能》達(dá)標(biāo)測(cè)試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
- 2025年銷售部年度工作計(jì)劃
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫含答案解析
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績效的影響研究
- DB3713T 340-2024 實(shí)景三維數(shù)據(jù)接口及服務(wù)發(fā)布技術(shù)規(guī)范
- 八年級(jí)生物開學(xué)摸底考(長沙專用)(考試版)
- (工作規(guī)范)公路預(yù)防性養(yǎng)護(hù)工作手冊(cè)
- 2024年高考全國甲卷英語試卷(含答案)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫附答案
- 2024年4月浙江省00015英語二試題及答案含評(píng)分參考
- 文化差異與跨文化交際課件(完整版)
評(píng)論
0/150
提交評(píng)論