版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程程 序序 設(shè)設(shè) 計計 基基 礎(chǔ)礎(chǔ)主講教師:崔莉莉主講教師:崔莉莉 基本類型基本類型數(shù)數(shù)據(jù)據(jù)類類型型 構(gòu)造類型構(gòu)造類型整型整型 int字符型字符型 char實型(浮點型)實型(浮點型)數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類型單精度單精度 float雙精度雙精度 double 指針類型指針類型 空類型空類型 void構(gòu)造類型構(gòu)造類型數(shù)據(jù)是由基本類型數(shù)據(jù)按一定規(guī)則組成,它們的具數(shù)據(jù)是由基本類型數(shù)據(jù)按一定規(guī)則組成,它們的具體組成要由編程者按實際需要決定。體組成要由編程者按實際需要決定。第第7 7章章 用類型批量數(shù)據(jù)組織的編程與調(diào)試用類型批量數(shù)據(jù)組織的編程與調(diào)試學(xué)習目標:學(xué)習目標:q 理解數(shù)組的基本概念理
2、解數(shù)組的基本概念 q 熟練掌握一維數(shù)組的基本使用熟練掌握一維數(shù)組的基本使用 q 掌握二維數(shù)組的基本使用掌握二維數(shù)組的基本使用 章節(jié):章節(jié):7.1一維數(shù)組一維數(shù)組7.2二維數(shù)組二維數(shù)組7.3字符數(shù)組和字符串字符數(shù)組和字符串7.4應(yīng)用舉例應(yīng)用舉例n 構(gòu)造數(shù)據(jù)類型之一構(gòu)造數(shù)據(jù)類型之一n 數(shù)組數(shù)組: :是一些具有相同數(shù)據(jù)類型且按一定的次序排列的是一些具有相同數(shù)據(jù)類型且按一定的次序排列的變量集合,即有序數(shù)據(jù)的集合變量集合,即有序數(shù)據(jù)的集合, ,用數(shù)組名標識。用數(shù)組名標識。n 元素元素: :屬同一數(shù)據(jù)類型屬同一數(shù)據(jù)類型, ,用數(shù)組名和下標確定。每個數(shù)用數(shù)組名和下標確定。每個數(shù)組元素都具有相同的變量名,但具
3、有不同的序號(下組元素都具有相同的變量名,但具有不同的序號(下標)。標)。n 只有一個下標的數(shù)組稱為一維數(shù)組,有兩個下標的數(shù)只有一個下標的數(shù)組稱為一維數(shù)組,有兩個下標的數(shù)組稱為二維數(shù)組。以此類推,組稱為二維數(shù)組。以此類推,c c語言允許使用任意維數(shù)語言允許使用任意維數(shù)的數(shù)組。的數(shù)組。n 數(shù)組元素可以是基本數(shù)據(jù)類型(數(shù)組元素可以是基本數(shù)據(jù)類型(intint、floatfloat、charchar等等),也可以是構(gòu)造數(shù)據(jù)類型,但最低一級必須是基本),也可以是構(gòu)造數(shù)據(jù)類型,但最低一級必須是基本類型。類型。 一維數(shù)組的定義一維數(shù)組的定義v定義方式:定義方式: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 常量常量表
4、達式表達式 ; 合法標識符合法標識符unsigned int類型的正整數(shù),類型的正整數(shù),元素個數(shù)下標從元素個數(shù)下標從0開始開始 :數(shù)組運算符數(shù)組運算符單目運算符單目運算符優(yōu)先級優(yōu)先級(1)左結(jié)合左結(jié)合不能用不能用( )例例 int a6;a00145a1a2a3a4a523a數(shù)組名是數(shù)組名是地址常量地址常量,表示數(shù)組元素在內(nèi)存表示數(shù)組元素在內(nèi)存中的起始地址中的起始地址a0。7.1 一維數(shù)組一維數(shù)組例如:例如:float salary100;/存放存放100個職工的工資(以實數(shù)形式存放)個職工的工資(以實數(shù)形式存放)數(shù)組名,命名方法和變量名相同數(shù)組名,命名方法和變量名相同采用方括號,而不是圓括號
5、,不能寫成采用方括號,而不是圓括號,不能寫成float salary(100);其其中中100表示數(shù)組長度,即元素的個數(shù)。表示數(shù)組長度,即元素的個數(shù)。應(yīng)為應(yīng)為int n;cinn;int an;#define n 10;/或或const int n=10; int an; 錯誤提示錯誤提示: expected constant expression cannot allocate an array of constant size 0 a : unknown size一個數(shù)組被定義后,系統(tǒng)將在內(nèi)存中為它分配一塊含一個數(shù)組被定義后,系統(tǒng)將在內(nèi)存中為它分配一塊含有有n個(個(n為數(shù)組長度)存儲單元
6、的存儲空間,每個存儲單為數(shù)組長度)存儲單元的存儲空間,每個存儲單元包含的字節(jié)數(shù)等于元素類型的長度。如對于一個含有元包含的字節(jié)數(shù)等于元素類型的長度。如對于一個含有6個個int型元素的數(shù)組,它將對應(yīng)型元素的數(shù)組,它將對應(yīng)6*4=24個字節(jié)的存儲空間。個字節(jié)的存儲空間。注意:常量表達式中可以包括常量和符號常量,不能注意:常量表達式中可以包括常量和符號常量,不能包含變量。包含變量。int a10;或或一維數(shù)組的引用一維數(shù)組的引用v數(shù)組必須數(shù)組必須先定義先定義,后使用后使用v只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組v數(shù)組元素表示形式:數(shù)組元素表示形式: 數(shù)組名
7、數(shù)組名下標下標其中:其中:下標可以為常量,也可以為變量或表達式,下標可以為常量,也可以為變量或表達式,但其值必須是整數(shù),否則將產(chǎn)生編譯錯誤但其值必須是整數(shù),否則將產(chǎn)生編譯錯誤與數(shù)組的定義格式相同,但出現(xiàn)的位置是不與數(shù)組的定義格式相同,但出現(xiàn)的位置是不同的,當出現(xiàn)在變量定義語句時則為數(shù)組定義,同的,當出現(xiàn)在變量定義語句時則為數(shù)組定義,而當出現(xiàn)在表達式中時則為一個元素。而當出現(xiàn)在表達式中時則為一個元素。例例 int num-5; ( 表示數(shù)組長度的常量表達式必須是正的整型常量表達式,表示數(shù)組長度的常量表達式必須是正的整型常量表達式,通常是一個大于或等于通常是一個大于或等于1的整型常量的整型常量)例
8、例 int a10; couta; ( )必須必須 for(j=0;j10;j+) coutajt; ( )例例 int data5; data5=10; /c語言對數(shù)組不作越界檢查,使用時要語言對數(shù)組不作越界檢查,使用時要 注意注意假定假定n為一常量為一常量對于一個含有對于一個含有n個元素的數(shù)組(個元素的數(shù)組(int an;),),c語言規(guī)定:語言規(guī)定:它的下標依次為它的下標依次為0,1,2,.,n-1,因此全部,因此全部n個元素依次為個元素依次為a0,a1,a2,.,an-1,其中假定,其中假定a為數(shù)組名。為數(shù)組名。例如:假定例如:假定an為一個已定義的數(shù)組,則下面都是訪問該數(shù)組為一個已定
9、義的數(shù)組,則下面都是訪問該數(shù)組的下標變量的合法格式:的下標變量的合法格式: a5 /下標為一個常數(shù)下標為一個常數(shù) ai /下標為一個變量下標為一個變量 aj+ /下標為后增下標為后增1表達式表達式 a2*x+1 /下標為一般表達式下標為一般表達式 初始化方式初始化方式v在程序運行時初始化在程序運行時初始化可以用賦值語句或輸入語句在程序執(zhí)行時實現(xiàn)初始化??梢杂觅x值語句或輸入語句在程序執(zhí)行時實現(xiàn)初始化。v在定義數(shù)組時初始化在定義數(shù)組時初始化數(shù)據(jù)類型數(shù)組名數(shù)據(jù)類型數(shù)組名n=值值1,值值2,值值3,值值n,;說明:說明:l數(shù)組不初始化,其元素值為隨機數(shù)數(shù)組不初始化,其元素值為隨機數(shù)l對對static數(shù)
10、組元素不賦初值,系統(tǒng)會自動賦以數(shù)組元素不賦初值,系統(tǒng)會自動賦以0值值一維數(shù)組的初始化一維數(shù)組的初始化引用數(shù)組元素之前,必須保證引用數(shù)組元素之前,必須保證數(shù)組的元素已經(jīng)被賦予確定的值數(shù)組的元素已經(jīng)被賦予確定的值 int a5=1,2,3,4,5;等價于:等價于:a0=1; a1=2; a2=3; a3=4; a4=5;l當全部數(shù)組元素賦初值時,可不指定數(shù)組長度當全部數(shù)組元素賦初值時,可不指定數(shù)組長度如如 int a5=6,2,3; 等價于:等價于: a0=6; a1=2;a2=3; a3=0; a4=0;static int a5;等價于:等價于:a0=0; a1=0; a2=0; a3=0;
11、a4=0;l只給部分數(shù)組元素賦初值只給部分數(shù)組元素賦初值 int a=1,2,3,4,5,6;編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù)編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù) int main()int a10,i;for(i=0;i10;i+)ai=i; int main()int a10,i;for(i=0;i ai ;如果聲明數(shù)組時,在方括號中指定了元素個數(shù),那么初始如果聲明數(shù)組時,在方括號中指定了元素個數(shù),那么初始化時的數(shù)據(jù)個數(shù)就不能超過所指定的元素個數(shù)?;瘯r的數(shù)據(jù)個數(shù)就不能超過所指定的元素個數(shù)。 int a 5 = 1,2,3,4,5,6; (錯誤)(錯誤)初始化時,數(shù)據(jù)個數(shù)可以少于聲明數(shù)組時在方括
12、號中指定初始化時,數(shù)據(jù)個數(shù)可以少于聲明數(shù)組時在方括號中指定的元素個數(shù),但不能一個也沒有。的元素個數(shù),但不能一個也沒有。 int b5 = ;(錯誤)(錯誤) 如果聲明數(shù)組時,在方括號中不指定元素個數(shù),那么必須如果聲明數(shù)組時,在方括號中不指定元素個數(shù),那么必須緊接著進行初始化。緊接著進行初始化。 int c ; (錯誤)(錯誤)聲明一個能存放聲明一個能存放5個整數(shù)的數(shù)組個整數(shù)的數(shù)組s,批量讀入一組數(shù),批量寫,批量讀入一組數(shù),批量寫入一組數(shù)。入一組數(shù)。#include using namespace std;void main()int s5; /聲明存放聲明存放5個整數(shù)的數(shù)組個整數(shù)的數(shù)組sfor
13、 (int i=0; i si;for (i=0; i=4; i+) /讀出數(shù)組元素讀出數(shù)組元素s0,s1,s2,s3,s4的值,輸出到屏幕的值,輸出到屏幕上上cout si t; cout endl;程序舉例程序舉例程序舉例程序舉例例例 讀讀10個整數(shù)存入數(shù)組,找出其中最大值和最小值個整數(shù)存入數(shù)組,找出其中最大值和最小值步驟步驟:1. 輸入輸入:for循環(huán)輸入循環(huán)輸入10個整數(shù)個整數(shù)2. 處理處理:(a) 先令先令max=min=a0(b) 依次用依次用ai和和max,min比較比較(循環(huán)循環(huán)) 若若maxai,令令min=ai3. 輸出輸出:max和和min #include using
14、namespace std;#define n 10int main() int an,i,max,min; coutenter 10 integers:endl; for(i=0;in;i+) couti+1ai; max=min=a0; for(i=1;in;i+) if(maxai) min=ai; coutmaximum value is maxendl; coutminimum value is minendl;return 0;運行結(jié)果:運行結(jié)果:enter 10 integers:1:22:33:14:55:96:87:48:129:3010:23maximum value is
15、 30minimum value is 1f0f1f2f3f4f5f19.11f1901452319例例 用數(shù)組求用數(shù)組求fibonacci數(shù)列前數(shù)列前20個數(shù)個數(shù)235#include #include using namespace std;int main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) coutn; coutsetw(6)fi; couta1,則交換;然,則交換;然 后比較第二個數(shù)與第三個數(shù);依次類推,直至第后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第
16、個數(shù)和第 n個數(shù)比較為止個數(shù)比較為止第一趟冒泡排序第一趟冒泡排序,結(jié)果結(jié)果最大最大的數(shù)被安置在的數(shù)被安置在 最后一個元素位置上最后一個元素位置上(2)對前)對前n-1個數(shù)進行第二趟冒泡排序,結(jié)果使個數(shù)進行第二趟冒泡排序,結(jié)果使次大次大的數(shù)被安置在的數(shù)被安置在 第第n-1個元素位置個元素位置(3)重復(fù)上述過程,共經(jīng)過)重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束趟冒泡排序后,排序結(jié)束例例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第六趟第六趟38 4
17、9 65 76 13 27 30 97第一趟第一趟49 38 65 97 76 13 27 30初始關(guān)鍵字初始關(guān)鍵字n=83849769713972797309713767676273013652765306513134949304927382738303813 27第七趟第七趟輸入輸入n 個數(shù)給個數(shù)給a1 到到 anfor j=1 to n-1for i=1 to n-jaiai+1真真假假aiai+1輸出輸出a1 到到 an#include using namespace std;int main() int a11,i,j,t; coutinput 10 numbers:endl; fo
18、r(i=1;iai; coutendl; for(j=1;j=9;j+) for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; coutthe sorted numbers:endl; for(i=1;i11;i+)coutai ; return 0;例例 用簡單選擇法對用簡單選擇法對10個數(shù)排序個數(shù)排序排序過程:排序過程:(1)首先通過)首先通過n-1次比較,從次比較,從n個數(shù)中找出最小的,個數(shù)中找出最小的, 將它與第一個數(shù)將它與第一個數(shù) 交換交換第一趟選擇排序第一趟選擇排序,結(jié)果,結(jié)果最小最小的數(shù)被安置在第一個元素位置上的數(shù)被安置在第一個元素位置上(2)再通過)再通過
19、n-2次比較,從剩余的次比較,從剩余的n-1個數(shù)中找出關(guān)鍵字個數(shù)中找出關(guān)鍵字次小次小的記錄,的記錄, 將它與第二個數(shù)交換將它與第二個數(shù)交換第二趟選擇排序第二趟選擇排序(3)重復(fù)上述過程,共經(jīng)過)重復(fù)上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束趟排序后,排序結(jié)束二趟:二趟: 13 27 65 97 76 49 38 例例初始:初始: 49 38 65 97 76 13 27 ji=11349一趟:一趟: 13 38 65 97 76 49 27 i=22738三趟:三趟: 13 27 38 97 76 49 65 四趟:四趟: 13 27 38 49 76 97 65 五趟:五趟: 13 27 38
20、 49 65 97 76 六趟:六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjjk輸入輸入n 個數(shù)給個數(shù)給a1 到到 anfor i=1 to n-1for j=i+1 to najak真真假假min=aj k=j輸出輸出a1 到到 anmin=ai k=iai=minak=ai#include using namespace std;int main() int a11,i,j,k,min; coutinput 10 numbers:endl; for(i=1;iai; coutendl; for(i=1;i10;i+) min=ai; k=i; for(j=i
21、+1;j=10;j+) if(ajak) min=aj; k=j; ak=ai; ai=min; coutthe sorted numbers:endl; for(i=1;i11;i+)coutai ;return 0;#include iostream#include iomanip“using namespace std;#define n 6int main() int an,bb-60,c=1,2,3,4,5,6,i; for(i=0;iaibi; for(i=0;in;i+) coutsetw(6)ai; coutendl; for(i=0;in;i+) coutsetw(6)bi;
22、 coutendl; for(i=0;in;i+) ci=ai+bn-i-1; for(i=0;in;i+) coutsetw(6)ci; coutendl; return 0; 數(shù)組定義:必須用常量表達式數(shù)組定義:必須用常量表達式數(shù)組元素引用數(shù)組元素引用二維數(shù)組的定義二維數(shù)組的定義v定義方式:定義方式:數(shù)據(jù)類型數(shù)組名數(shù)據(jù)類型數(shù)組名常量表達式常量表達式常量表達式常量表達式;v數(shù)組元素的存放順序數(shù)組元素的存放順序l原因原因:內(nèi)存是一維的內(nèi)存是一維的l二維數(shù)組:按行序優(yōu)先二維數(shù)組:按行序優(yōu)先l多維數(shù)組:最右下標變化最快多維數(shù)組:最右下標變化最快例例 int a34; float b25; int
23、c234; int a3,4; ( )行數(shù)行數(shù)列數(shù)列數(shù)元素個數(shù)元素個數(shù)=行數(shù)行數(shù)*列數(shù)列數(shù)int a32a01a10a11a20a21014523a00a00 a01a10 a11a20 a217.2 二維數(shù)組二維數(shù)組例例 int a34;a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a0a1a2行名行名aa01a02a03a10a11a00a13a20a21a22a23a1201452367101189a0a1a2a aa a是一個二維數(shù)組,具有是一個二維數(shù)組,具有3 3行行4 4列,共定義了列,共定義了1212個個intint型變量;第一維下標型
24、變量;第一維下標變化范圍為變化范圍為0202,第二維下標變化范圍為,第二維下標變化范圍為0303。數(shù)組各元素在內(nèi)存中連續(xù)存放,按行排列(因內(nèi)存是一維存儲空間)。數(shù)組各元素在內(nèi)存中連續(xù)存放,按行排列(因內(nèi)存是一維存儲空間)。a a是數(shù)組名且表示數(shù)組在內(nèi)存中的首址。是數(shù)組名且表示數(shù)組在內(nèi)存中的首址。 二維數(shù)組二維數(shù)組a是由是由3個元素組成個元素組成每個元素每個元素ai由包含由包含4個元個元素素的一維數(shù)組組成的一維數(shù)組組成例例 int a3=1,4,5;a00 a01 a02 a10 a11 a12100450第一維第一維長度省略初始化長度省略初始化l按元素排列順序初始化按元素排列順序初始化 例例
25、int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化全部初始化例例 int a23=1,2,4;a00 a01 a02 a10 a11 a12120400部分初始化部分初始化例例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化全部初始化 例例 int a23=1,2,4;a00 a01 a02 a10 a11 a12124000部分初始化部分初始化例例 int a3=1,2,3,4,5;a00 a01 a02 a10 a11 a12123450第一維第一維長度省略初始化長度省略
26、初始化二維數(shù)組元素的引用二維數(shù)組元素的引用形式:形式: 數(shù)組名數(shù)組名下標下標下標下標二維數(shù)組元素的初始化二維數(shù)組元素的初始化l分行初始化:分行初始化:程序舉例程序舉例例例 將二維數(shù)組行列元素互換,存到另一個數(shù)組中將二維數(shù)組行列元素互換,存到另一個數(shù)組中(23矩陣轉(zhuǎn)置)矩陣轉(zhuǎn)置)a=1 2 34 5 6b=1 42 53 6#include #include using namespace std;int main() int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for(i=0;i=1;i+) for(j=0;j=2;j+) couts
27、etw(5)aij; bji=aij;coutendl; coutarray b:endl; for(i=0;i=2;i+) for(j=0;j=1;j+) coutsetw(5)bij; coutmax真真假假max=aijrow=icolum=j輸出:輸出:max和和row,colum#include using namespace std;int main() int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2; int i,j,row=0,column=0,max; max=a00; for(i=0;i=2;i+) for(j=0;jmax) max=aij;
28、row=i; column=j; coutmax=max,row= row,column=columnendl; return 0; 例例 讀入下表中值到數(shù)組,分別求各行、各列及表中所有數(shù)之和讀入下表中值到數(shù)組,分別求各行、各列及表中所有數(shù)之和12 4 615 7 9 8 23 3 2 5 1712 4 6 2215 7 9 31 8 23 3 34 2 5 17 2437 39 35 111#include #include using namespace std;int main() int x54,i,j; for(i=0;i4;i+) for(j=0;jxij; for(i=0;i3;
29、i+) x4i=0; for(j=0;j5;j+) xj3=0; for(i=0;i4;i+) for(j=0;j3;j+) xi3+=xij; x4j+=xij; x43+=xij; for(i=0;i5;i+) for(j=0;j4;j+) coutsetw(5)xij; coutendl; return 0; 例例 char ch5=h,e,l,l,o;ch0hello逐個字符賦值逐個字符賦值ch1ch2ch3ch4有問題有問題! 例例 char ch5=h,e,l,l,o;ch0hello逐個字符賦值逐個字符賦值ch1ch2ch3ch4 例例 char ch5=b,o,y;ch0boy
30、00逐個字符賦值逐個字符賦值ch1ch2ch3ch4 例例 char ch5=“boy”;ch0boy00用字符串常量用字符串常量ch1ch2ch3ch4 例例 char ch6=“hello”; char ch6=“hello”; char ch=“hello”;用字符串常量用字符串常量ch0helloch1ch2ch3ch40ch5逐個字符賦值初始化會在程序處理變量逐個字符賦值初始化會在程序處理變量ch時發(fā)生錯誤,時發(fā)生錯誤,因為因為c不知道其中的字符串到哪個元素為止。此外,如不知道其中的字符串到哪個元素為止。此外,如果花括號中提供的字符個數(shù)小于數(shù)組長度,將只為數(shù)組果花括號中提供的字符個數(shù)
31、小于數(shù)組長度,將只為數(shù)組的前幾個元素賦初值,其余的元素自動被賦予空字符。的前幾個元素賦初值,其余的元素自動被賦予空字符。如果初值個數(shù)大于數(shù)組長度,則認為是語法錯誤。如果初值個數(shù)大于數(shù)組長度,則認為是語法錯誤。正確的做法是在初始化時加上結(jié)束符,即正確的做法是在初始化時加上結(jié)束符,即 char ch6 = h,e,l,l,o,0; 用字符串常量初始化會自動地在最后一個字符后面用字符串常量初始化會自動地在最后一個字符后面加上一個加上一個0,作為字符串的結(jié)束符。由于字符串的長度,作為字符串的結(jié)束符。由于字符串的長度在程序的運行過程中允許發(fā)生變化,所以在程序的運行過程中允許發(fā)生變化,所以c+要依靠結(jié)束要
32、依靠結(jié)束符來判斷字符串的結(jié)束,聲明數(shù)組時必須留出這個位置,符來判斷字符串的結(jié)束,聲明數(shù)組時必須留出這個位置,換句話說,方括號中指定的元素個數(shù)必須大于將來存放字換句話說,方括號中指定的元素個數(shù)必須大于將來存放字符串的最大長度。符串的最大長度。 與整型實型數(shù)組的初始化不同,聲明數(shù)組時在方括號與整型實型數(shù)組的初始化不同,聲明數(shù)組時在方括號中指定了元素個數(shù)后,初始化的字符串可以是沒有字符的中指定了元素個數(shù)后,初始化的字符串可以是沒有字符的空串,即空串,即”。 字符數(shù)組字符數(shù)組v定義定義 v字符數(shù)組的初始化字符數(shù)組的初始化l逐個字符賦值逐個字符賦值l用字符串常量用字符串常量v字符數(shù)組的引字符數(shù)組的引例例
33、 char c10, ch34;4.3 字符數(shù)組和字符串字符數(shù)組和字符串 例例 char diamond5=., .,*,.,*,.,*, *, ., ., . ,*,.,*, .,*,., .,*;二維字符數(shù)組初始化二維字符數(shù)組初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例例 char fruit7=“apple”,”orange”, ”grape”,”pear”,”peach”;二維字符數(shù)組初始化二維字符數(shù)組初始化fruit0fruit1fruit2fruit3fruit4apple00orange0gr
34、ape00pear000peach00例例 輸出一個字符串輸出一個字符串#include using namespace std;int main() char c10=i, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) coutci; coutendl; return 0;iamaboy0123456789例例 計算給定字符串的長度,不包括結(jié)束符計算給定字符串的長度,不包括結(jié)束符0。#include using namespace std;int main() char str=happy; int i;i=0; while(stri!=0)i+; cou
35、tthe length of string is iendl; return 0;字符串字符串v字符串及其結(jié)束標志字符串及其結(jié)束標志l無字符串變量,用字符數(shù)組處理字符串無字符串變量,用字符數(shù)組處理字符串l字符串結(jié)束標志字符串結(jié)束標志:0例例 “hello”共共5個字符,在內(nèi)存占個字符,在內(nèi)存占6個字節(jié)個字節(jié) 字符串長度字符串長度5 h e l l o 0104 101 108 108 111 0內(nèi)存存放字符內(nèi)存存放字符ascii碼碼結(jié)果:結(jié)果: the length of string is 5字符串的輸入輸出字符串的輸入輸出 輸出輸出1)屏幕輸出)屏幕輸出#include using nam
36、espace std;int main() char a=china; couta;/a為數(shù)組名,將字符串輸出至屏幕。 字符串的輸入輸出字符串的輸入輸出 輸出輸出2)字符串輸出和整數(shù)、實數(shù)、字符輸出的區(qū)別)字符串輸出和整數(shù)、實數(shù)、字符輸出的區(qū)別& 對于整數(shù)、實數(shù)和字符,對于整數(shù)、實數(shù)和字符,cout每次只能輸出一個。每次只能輸出一個。& 對于字符串既可一次輸出,也可按字符多次輸出。對于字符串既可一次輸出,也可按字符多次輸出。 當字符串一次輸出時,系統(tǒng)根據(jù)當字符串一次輸出時,系統(tǒng)根據(jù)0找到字符串尾。找到字符串尾。若按字符一個個輸出,若按字符一個個輸出,cout根據(jù)字符串中字符個數(shù)
37、輸出。根據(jù)字符串中字符個數(shù)輸出。for(i=0;i字符串中字符個數(shù)字符串中字符個數(shù);i+)couta;/*a為數(shù)組名,從鍵盤輸入多個字符,以回車作為結(jié)束,系統(tǒng)自動在讀入的字符串未尾添加0。*/ 字符串的輸入輸出字符串的輸入輸出 輸入輸入2)字符串輸入和整數(shù)、實數(shù)、字符輸入的區(qū)別)字符串輸入和整數(shù)、實數(shù)、字符輸入的區(qū)別& 對于整數(shù)、實數(shù)和字符,對于整數(shù)、實數(shù)和字符,cin每次只能輸入一個。每次只能輸入一個。& 對于字符串既可一次輸入,也可按字符多次輸入。對于字符串既可一次輸入,也可按字符多次輸入。當字符串一次輸入時,系統(tǒng)自動在尾部添加當字符串一次輸入時,系統(tǒng)自動在尾部添加0。若按
38、字符一個個輸入,必須已知字符個數(shù),并且應(yīng)由用若按字符一個個輸入,必須已知字符個數(shù),并且應(yīng)由用戶程序在其末尾添加戶程序在其末尾添加0。#include using namespace std;int main()char a10; int i;for(i=0;iai;a9=0;例從鍵盤讀入一字符串,計算出其長度例從鍵盤讀入一字符串,計算出其長度(即有效字符個數(shù)),將長度輸出至屏幕。(即有效字符個數(shù)),將長度輸出至屏幕。 #include using namespace std;int main()char s100;cins;int i=0;while(si!=0)i+;couta;(2) co
39、uta;是允許的,即允許在提取或插入操作符后面使用一個字符數(shù)是允許的,即允許在提取或插入操作符后面使用一個字符數(shù)組名實現(xiàn)向數(shù)組輸入字符串或輸出數(shù)組中保存的字符串的目組名實現(xiàn)向數(shù)組輸入字符串或輸出數(shù)組中保存的字符串的目的。的。計算機執(zhí)行上述第一條語句時,要求用戶從鍵盤上輸入計算機執(zhí)行上述第一條語句時,要求用戶從鍵盤上輸入一個不含空格的字符串,用空格或回車鍵作為字符串輸入的一個不含空格的字符串,用空格或回車鍵作為字符串輸入的結(jié)束符,系統(tǒng)就把該字符串存入到字符數(shù)組結(jié)束符,系統(tǒng)就把該字符串存入到字符數(shù)組a中,當然在存入中,當然在存入的整個字符串的后面將自動存入一個結(jié)束符的整個字符串的后面將自動存入一個
40、結(jié)束符0。例如:字符數(shù)組長度為例如:字符數(shù)組長度為10v輸入字符串輸入字符串string,結(jié)果為,結(jié)果為stringv輸入字符串輸入字符串str ing,結(jié)果為,結(jié)果為strv輸入字符串輸入字符串stringandchar,結(jié)果報錯。,結(jié)果報錯。v輸入字符串輸入字符串“string”,結(jié)果為,結(jié)果為“string”注意:輸入的字符串的長度要小于數(shù)組注意:輸入的字符串的長度要小于數(shù)組a的長度,這樣才能夠的長度,這樣才能夠把輸入的字符串有效地存儲起來,否則是程序設(shè)計的一個邏把輸入的字符串有效地存儲起來,否則是程序設(shè)計的一個邏輯錯誤,可能導(dǎo)致程序運行出錯。另外,輸入的字符串不需輯錯誤,可能導(dǎo)致程序運
41、行出錯。另外,輸入的字符串不需要另加雙引號定界符,只要輸入字符串本身即可,假如輸入要另加雙引號定界符,只要輸入字符串本身即可,假如輸入了雙引號則被視為一般字符。了雙引號則被視為一般字符。例題:編寫程序,實現(xiàn)功能:輸入一字符串,計例題:編寫程序,實現(xiàn)功能:輸入一字符串,計算并輸出該字符串的長度。算并輸出該字符串的長度。 確定算法:確定算法: 用字符數(shù)組用字符數(shù)組str256保存字符串,用整型變量保存字符串,用整型變量strlen記錄長記錄長度,初值為度,初值為0 。1. 顯示輸入提示信息顯示輸入提示信息 2. 輸入字符串到輸入字符串到str 3. 循環(huán)變量循環(huán)變量i取初值取初值0 4. 如果如果
42、stri的值是的值是0轉(zhuǎn)到轉(zhuǎn)到6 5. strlen加加1,i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到4 6. 輸出輸出strlen的值的值 #include using namespace std;int main() char str256 = ; int strlen = 0; cout str; int i = 0; while (stri != 0) strlen +; i +; cout 字符串的長度字符串的長度 strlen n; return 0; 例題:編寫程序,實現(xiàn)功能:輸入一字符串,計例題:編寫程序,實現(xiàn)功能:輸入一字符串,計算并輸出其中字母算并輸出其中字母e(大小寫不論)的個數(shù)。(大小寫
43、不論)的個數(shù)。 確定算法:確定算法:用字符數(shù)組用字符數(shù)組str256保存字符串,用整型變量保存字符串,用整型變量count記錄字記錄字母母e的個數(shù),初值為的個數(shù),初值為0 。1. 顯示輸入提示信息顯示輸入提示信息 2. 輸入字符串到輸入字符串到str 3. 循環(huán)變量循環(huán)變量i取初值取初值0 4. 如果如果stri的值是的值是0,轉(zhuǎn)到,轉(zhuǎn)到7 5. 如果如果stri的值是字符的值是字符e或或e,count加加1 6. i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到4 7. 輸出輸出count的值的值 #include using namespace std;int main() char str256 = ; int
44、 count = 0; cout str; int i = 0; while (stri != 0) if (stri = e | stri = e) count +; i +; cout 字符串中字符串中e或或e的個數(shù)的個數(shù) count str1; /abcin str2; /cdei = 0;while(str1i != 0) i +; /i=2j = 0;while(str2j != 0) str1i = str2j; i+; j+;str1i = 0;cout 拼接后字符串拼接后字符串: str1 str1;cin str2;i = 0;while(str1i != 0) i +;j
45、= 0;while(str2j != 0) str1i+ = str2j+; /i+; /j+;str1i = 0;cout 拼接后字符串拼接后字符串: str1 str1; cin str2;i = 0;while(str1i != 0) i +;j = 0;while(str1i+=str2j+)!=0) ;cout 拼接后字符串拼接后字符串: str1 str;i = 0;for( i=0; i= a) & (si = a) & (si = z) ) j = si - a; countj +; i+;for(i = 0; i 26; i+) cout counti ;例題
46、:編寫程序,實現(xiàn)功能:鍵盤選擇幣種,輸入例題:編寫程序,實現(xiàn)功能:鍵盤選擇幣種,輸入金額,然后折算成人民幣金額輸出。假定每一百單金額,然后折算成人民幣金額輸出。假定每一百單位外幣折合人民幣如下:位外幣折合人民幣如下: 英鎊英鎊 港幣港幣 美元美元 1221.25 106.125 827.75 確定算法:確定算法:用實型數(shù)組用實型數(shù)組list4存放匯率,從下標存放匯率,從下標1開始使用,在聲明時初始化;開始使用,在聲明時初始化;用整型變量用整型變量choice存放鍵盤輸入的選擇,用實型變量存放鍵盤輸入的選擇,用實型變量money存放鍵存放鍵盤輸入的金額,用實型變量盤輸入的金額,用實型變量rmb存
47、放計算結(jié)果。存放計算結(jié)果。 1. 顯示選擇的提示信息顯示選擇的提示信息 2. 從鍵盤輸入選擇到從鍵盤輸入選擇到choice 3. 如果如果choice等于等于0,轉(zhuǎn)到,轉(zhuǎn)到4;如果;如果choice等于等于1或或2或或3,轉(zhuǎn)到,轉(zhuǎn)到5;如;如果果choice為其他,值轉(zhuǎn)到為其他,值轉(zhuǎn)到9 4. 結(jié)束運行結(jié)束運行 5. 顯示輸入金額的提示信息顯示輸入金額的提示信息 6. 從鍵盤輸入金額到從鍵盤輸入金額到money 7. 計算并輸出計算并輸出 8. 轉(zhuǎn)到轉(zhuǎn)到10 9. 顯示錯誤信息顯示錯誤信息 10. 轉(zhuǎn)回到轉(zhuǎn)回到1 #include #include using namespace std;in
48、t main() float list4 = 0,1221.25,106.125,827.75; int choice; float money,rmb; while (1) cout choice;switch(choice) case 0: exit(0); case 1: case 2: case 3: cout money; rmb = money * listchoice / 100; cout 折算人民幣金額折算人民幣金額 rmb endl; break; default: cout 19,轉(zhuǎn)到,轉(zhuǎn)到5 3、numbersi = numbersi-2 + numbersi-1 4、
49、i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到2 5、跳出本次循環(huán),執(zhí)行下一條語句,進入另一個新循環(huán),循、跳出本次循環(huán),執(zhí)行下一條語句,進入另一個新循環(huán),循環(huán)變量環(huán)變量i取初值取初值1 6、如果、如果i 19,轉(zhuǎn)到,轉(zhuǎn)到9 7、輸出、輸出numbersi 8、i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到6 9、結(jié)束運行、結(jié)束運行 #include using namespace std;int main() int numbers21 = 0,1; /其余各位為零其余各位為零int i; for (i = 2; i = 19; i+) numbersi = numbersi-2 + numbersi-1; for (i = 0; i
50、= 19; i +) cout numbersi t; cout 19,轉(zhuǎn)到,轉(zhuǎn)到6 4、numbersi = k + i 5、i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到3 6、跳出本次循環(huán),執(zhí)行下一條語句,進入新循環(huán),、跳出本次循環(huán),執(zhí)行下一條語句,進入新循環(huán),i取初值取初值1 7、如果、如果i 19,轉(zhuǎn)到,轉(zhuǎn)到13 8、輸出、輸出numbersi 9、count加加1 10、如果、如果count = 5,繼續(xù)執(zhí)行,繼續(xù)執(zhí)行11,否則轉(zhuǎn)到,否則轉(zhuǎn)到12 (控制每行輸出控制每行輸出5個數(shù)個數(shù))11、輸出換行、輸出換行count的值恢復(fù)為的值恢復(fù)為0 12、i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到7 13、結(jié)束運行、結(jié)束運行 #
51、include using namespace std;int main() int numbers20; int i,k,count = 0; cout k; for (i = 0; i = 19; i+) numbersi = k + i; for (i = 0; i = 19; i +) cout numbersi t; count +; if (count = 5) cout endl; count = 0; cout endl; return 0; 例題:編寫程序,實現(xiàn)功能:從鍵盤輸入一個學(xué)生例題:編寫程序,實現(xiàn)功能:從鍵盤輸入一個學(xué)生成績,然后將其插入到一個降序排列的成績表中,成績
52、,然后將其插入到一個降序排列的成績表中,插入后的成績表仍然保持降序,最后輸出結(jié)果。插入后的成績表仍然保持降序,最后輸出結(jié)果。 假定成績表存放在數(shù)組假定成績表存放在數(shù)組scores中,輸入的成績是中,輸入的成績是x,首先要在,首先要在成績表中從頭開始找到第一個比成績表中從頭開始找到第一個比x小的成績,小的成績,x就應(yīng)該插在這個成績就應(yīng)該插在這個成績之前,為了空出之前,為了空出x的存放位置,從這個成績開始,直到最后一個成的存放位置,從這個成績開始,直到最后一個成績,都要向后移動一個位置???,都要向后移動一個位置。 確定算法:確定算法: 假定成績表中原有假定成績表中原有n個成績,用實型數(shù)組個成績,用
53、實型數(shù)組scoresn+2存放存放n個成績,個成績,從下標從下標1開始,在聲明時初始化,多余一個位置準備插入新的成績;開始,在聲明時初始化,多余一個位置準備插入新的成績;用實型變量用實型變量x存放鍵盤輸入的成績。存放鍵盤輸入的成績。 1、輸出原來的成績表,輸入、輸出原來的成績表,輸入x 2、準備用變量、準備用變量p對準插入位置,對準插入位置,p的初值為的初值為1 3、只要、只要p不大于不大于n,并且,并且x的值小于的值小于scoresp的值,就反復(fù)把的值,就反復(fù)把p加加1 4、循環(huán)變量、循環(huán)變量i的初值為的初值為n 5、如果、如果i小于小于p,轉(zhuǎn)到,轉(zhuǎn)到8 6、把、把scoresi的值復(fù)制到的
54、值復(fù)制到scoresi+1 7、i減減1,轉(zhuǎn)回到,轉(zhuǎn)回到5 8、把、把x的值復(fù)制到的值復(fù)制到scoresp 9、輸出新的成績表、輸出新的成績表 #include using namespace std; #define n 5 int main() float scoresn+2 = 0,92,88,72,59,32; float x; int p,i; cout 原成績表:原成績表:; for (i = 1; i = n; i +) cout scoresi ; cout x; p = 1; while (p = n) & (x p; i -) scoresi+1 = scoresi
55、; scoresp = x; cout 新成績表:新成績表:; for (i = 1; i = n+1; i +) cout scoresi ; cout n; return 0; 例題:編寫程序,實現(xiàn)功能:對一個包含例題:編寫程序,實現(xiàn)功能:對一個包含10個成績的個成績的無序成績表進行排序,其成為降序排列的成績表,最無序成績表進行排序,其成為降序排列的成績表,最后輸出結(jié)果。后輸出結(jié)果。 首先,成績表的第首先,成績表的第1個位置應(yīng)當放整個成個位置應(yīng)當放整個成績表中的最高成績。在整個成績表中尋找績表中的最高成績。在整個成績表中尋找一個最高成績,然后把它換到第一個最高成績,然后把它換到第1個位置。
56、個位置。 其次,排除已經(jīng)處理妥當?shù)牡谄浯?,排除已?jīng)處理妥當?shù)牡?個位置,個位置,在其余位置上尋找一個最大的,然后把它在其余位置上尋找一個最大的,然后把它換到第換到第2個位置。個位置。 再,排除已經(jīng)處理妥當?shù)那霸?,排除已?jīng)處理妥當?shù)那?個位置,在個位置,在其余位置上尋找一個最大的,然后把它換其余位置上尋找一個最大的,然后把它換到第到第3個位置。個位置。 依此類推,等到倒數(shù)第依此類推,等到倒數(shù)第2個位置處理妥當,個位置處理妥當,整個成績表就是降序排列的成績表。整個成績表就是降序排列的成績表。 如無序成績表:如無序成績表:67,34,90,88,55,74,95,82,43,92 924382957
57、455889034673443556774828890929592438267745588903495344355677482889092953443826774558890929534435567748288909295尋找最高成績的程序,其核心片段如下尋找最高成績的程序,其核心片段如下max = scores1; max_index = 1; for (i = 2; i max) max = scoresi; max_index = i; 成績表存放在數(shù)組成績表存放在數(shù)組scores11中,從下標中,從下標1的位置開始存放。的位置開始存放。用變量用變量max保存當前的最大值,用變量保存當前
58、的最大值,用變量max_index保存當前的保存當前的最大值所在的位置。外循環(huán)變量最大值所在的位置。外循環(huán)變量j表示處理第幾個位置,內(nèi)循表示處理第幾個位置,內(nèi)循環(huán)變量環(huán)變量i控制尋找當前循環(huán)中的最大值??刂茖ふ耶斍把h(huán)中的最大值。 max_index=1、scoresmax_index=671)i=2 scores2=34 scoresmax_index=67max_index=33)i=4 scores4=88 scoresmax_index=90max_index=3不變不變4)i=5 scores5=55 scoresmax_index=90max_index=3不變不變5)i=6 sc
59、ores6=74 scoresmax_index=90max_index=77)i=8 scores8=82 scoresmax_index=95max_index=7不變不變8)i=9 scores9=43 scoresmax_index=95max_index=7不變不變9)i=10 scores10=92= 10,循環(huán)結(jié)束轉(zhuǎn)到,循環(huán)結(jié)束轉(zhuǎn)到10 3、用變量、用變量max保存保存scoresj的值,的值,max_index的初值取的初值取j 4、循環(huán)變量、循環(huán)變量i的初值取的初值取j + 1 5、如果、如果i 10,轉(zhuǎn)到,轉(zhuǎn)到8 6、如果、如果scoresi max,用,用scoresi的
60、值刷新的值刷新max的值,讓的值,讓max_index記下記下i的值的值 7、循環(huán)變量、循環(huán)變量i加加1,轉(zhuǎn)回到,轉(zhuǎn)回到5 8、交換、交換scoresmax_index和和scoresj的值的值 9、循環(huán)變量、循環(huán)變量j加加1,轉(zhuǎn)回到,轉(zhuǎn)回到2 10、輸出、輸出scores中的中的10個成績數(shù)據(jù)個成績數(shù)據(jù) #include using namespace std; int main() int scores11 = 0,67,34,90,88,55,74,95,82,43,92; int max,max_index,i,j; for (j = 1; j 10; j +) max = scoresj; max_index = j; for (i
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木材行業(yè)碳排放權(quán)交易合同8篇
- 二零二五版農(nóng)村電商合作發(fā)展合同4篇
- 二零二五年度環(huán)保設(shè)施滅四害服務(wù)合同及環(huán)保標準協(xié)議4篇
- Preparing for Pregnancy助產(chǎn)專業(yè)資源庫
- 水電安裝工程2025年度工程監(jiān)理合同2篇
- 2025版民間借貸教育基金擔保合同示例3篇
- 2025年度生態(tài)環(huán)保項目投資擔保合同書
- 2025年度離婚財產(chǎn)分割糾紛訴訟保全與執(zhí)行全程服務(wù)合同2篇
- 二零二五年度水利工程內(nèi)部施工合同4篇
- 2025年度個人別墅抵押借款合同范本5篇
- 乳腺癌的綜合治療及進展
- 【大學(xué)課件】基于BGP協(xié)議的IP黑名單分發(fā)系統(tǒng)
- 2025年八省聯(lián)考高考語文試題真題解讀及答案詳解課件
- 信息安全意識培訓(xùn)課件
- 2024年山東省泰安市初中學(xué)業(yè)水平生物試題含答案
- 美的MBS精益管理體系
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024安全員知識考試題(全優(yōu))
- 2024年衛(wèi)生資格(中初級)-中醫(yī)外科學(xué)主治醫(yī)師考試近5年真題集錦(頻考類試題)帶答案
- 中國大百科全書(第二版全32冊)08
- 第六單元 中華民族的抗日戰(zhàn)爭 教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版八年級歷史上冊
評論
0/150
提交評論