《C++語言程序設(shè)計(jì)》課件第4章_第1頁
《C++語言程序設(shè)計(jì)》課件第4章_第2頁
《C++語言程序設(shè)計(jì)》課件第4章_第3頁
《C++語言程序設(shè)計(jì)》課件第4章_第4頁
《C++語言程序設(shè)計(jì)》課件第4章_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++語言程序設(shè)計(jì)第十一組C++語言程序設(shè)計(jì)第四章數(shù)組及自定義數(shù)據(jù)類型C++語言程序設(shè)計(jì)1目錄C++語言程序設(shè)計(jì)2“數(shù)組枚舉類型結(jié)構(gòu)類型聯(lián)合類型基本知識字符數(shù)組與字符串多維數(shù)組冒泡排序結(jié)構(gòu)數(shù)組編程技能字符數(shù)組輸入輸出多維數(shù)組在內(nèi)存中的映像枚舉類型內(nèi)存空間結(jié)構(gòu)類型內(nèi)存空間刨根問底C++語言程序設(shè)計(jì)3基本知識a4.1數(shù)組數(shù)組定義數(shù)組(Array)用于表示具有一定順序關(guān)系且類型相同的若干變量的集合,組成數(shù)組的變量稱為該數(shù)組的元素。定義一維數(shù)組的語法形式:類型標(biāo)識符

數(shù)組名[常量表達(dá)式];說明

類型標(biāo)識符:任何合法的類型標(biāo)識符,用于說明數(shù)組元素的類型;數(shù)組名

:程序員對該數(shù)組的命名,數(shù)組的命名規(guī)則同變量命名;方括號及常量表達(dá)式:用于說明該數(shù)組中元素的個(gè)數(shù)。C++語言程序設(shè)計(jì)44.1數(shù)組例:10級119班5名同學(xué)“C++程序設(shè)計(jì)”課程的成績

intscore[5];例:實(shí)驗(yàn)測得一組電阻R隨溫度T變化的值

floatRi[30];shortTc[30];C++語言程序設(shè)計(jì)54.1數(shù)組C++語言程序設(shè)計(jì)6一維數(shù)組在內(nèi)存中存儲映射intscore[5];數(shù)組名表示該內(nèi)存空間的起始地址4.1數(shù)組C++語言程序設(shè)計(jì)7注意定義一個(gè)數(shù)組,系統(tǒng)為這個(gè)數(shù)組保留一定數(shù)量的連續(xù)內(nèi)存單元;數(shù)組名是一個(gè)地址常量,禁止給數(shù)組名賦值;數(shù)組各元素用數(shù)組名及下標(biāo)(或稱索引值)來標(biāo)識:score[0],score[1],…,score[4]分別表示數(shù)組的第1~5個(gè)元素;C語言和C++語言中,元素的下標(biāo)從0開始計(jì),數(shù)組元素的最大下標(biāo)比元素個(gè)數(shù)少1:數(shù)組score最大下標(biāo)對應(yīng)的元素是score[4],而不是score[5](訪問越界);4.1數(shù)組C++語言程序設(shè)計(jì)8注意數(shù)組名表示數(shù)組在內(nèi)存中的起始地址,可將元素的下標(biāo)理解為元素存放位置相對數(shù)組名的偏移量,第i個(gè)元素score[i]的起始地址相對于數(shù)組的起始地址偏移了i個(gè)int型變量所占空間;每個(gè)元素可以視為一個(gè)同類型的變量,如score[i]可以視為一個(gè)整型變量;數(shù)組的每個(gè)元素占用空間大小與同類型變量占用的內(nèi)存大小一樣;數(shù)組占用的內(nèi)存空間是其全部元素所占空間的總和,如果數(shù)組有N個(gè)元素,它所占的字節(jié)數(shù)可以通過以下方式得到:sizeof(數(shù)組名)或

N*sizeof(數(shù)組類型)。4.1數(shù)組C++語言程序設(shè)計(jì)9數(shù)組初始化在定義數(shù)組時(shí),直接給出賦給數(shù)組元素的值,稱為數(shù)組初始化。數(shù)組初始化語法形式

類型標(biāo)識符

數(shù)組名[常量表達(dá)式]={以逗號隔開的初始化值};

例:定義并初始化整型數(shù)組score[5]的語句為:

intscore[5]={80,70,90,95,60};初始化列表中的數(shù)據(jù)依次賦給元素score[0]、score[1]、score[2]、score[3]、score[4]。注意不要丟掉語句最后的分號。4.1數(shù)組C++語言程序設(shè)計(jì)10注意初始化數(shù)組時(shí),給定的初始化數(shù)值不能比數(shù)組元素多,但可以比數(shù)組元素少;如果少,初始化列表中的初始值將從下標(biāo)0開始依次分配給各元素,后面沒有得到初始值的元素被初始化為0。

doubled[10]={1.0,2.0};如果使用初始化列表,則表內(nèi)至少包含一個(gè)初始值,否則編譯將出現(xiàn)錯(cuò)誤。如果沒有初始化列表,即只定義不做初始化,一般在函數(shù)內(nèi)部定義的自動局部數(shù)組,其各元素的值是隨機(jī)值,使用時(shí)需要重新給數(shù)組元素賦值。4.1數(shù)組C++語言程序設(shè)計(jì)11如果在初始化列表中給定數(shù)組元素的全部值,可以省略中括號中元素個(gè)數(shù)常量表示式。上述score數(shù)組的初始化也可以寫成:

intscore[]={80,70,90,95,60};此時(shí),編譯器自動計(jì)算出數(shù)組元素的個(gè)數(shù)為5,給score數(shù)組分配能夠存放5個(gè)int型數(shù)據(jù)的連續(xù)空間。思考題:如何將一個(gè)在某函數(shù)內(nèi)部定義的自動局部數(shù)組的所有元素都初始化為0?最簡單的方法是什么?

intscore[100]={0};4.1數(shù)組C++語言程序設(shè)計(jì)12訪問數(shù)組元素?cái)?shù)組元素是用下標(biāo)來區(qū)分的,指定要訪問的數(shù)組元素的語法形式為:

數(shù)組名[下標(biāo)表達(dá)式]下標(biāo)表達(dá)式可以是常量、變量或表達(dá)式,其值大于或等于0,小于數(shù)組的大小。例:intscore[10]; for(inti=0;i<10;i++) cin>>score[i];4.1數(shù)組C++語言程序設(shè)計(jì)13訪問數(shù)組元素時(shí)需要注意(1)數(shù)組元素的下標(biāo)表達(dá)式的結(jié)果必須為0或正整數(shù)。(2)數(shù)組元素的下標(biāo)值不得超過數(shù)組聲明時(shí)所限定的上下界。數(shù)組元素下標(biāo)的下界是0,上界是相應(yīng)維數(shù)大小減1。例:inta[10];//a數(shù)組可使用的有效下標(biāo)為0~9floatf[50];//f數(shù)組可使用的有效下標(biāo)為0~494.1數(shù)組C++語言程序設(shè)計(jì)14訪問數(shù)組元素時(shí)需要注意(3)越界訪問問題如果訪問數(shù)組元素時(shí),使用的下標(biāo)不是有效范圍內(nèi)的值,會造成“越界訪問”錯(cuò)誤。由于編譯器在編譯程序時(shí)不會檢查這種錯(cuò)誤,所以編輯人員要特別小心,盡可能杜絕這類錯(cuò)誤發(fā)生。使用面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的讀者可以定義下標(biāo)不能越界的數(shù)組,也就是C++中的vector類。4.1數(shù)組C++語言程序設(shè)計(jì)15字符數(shù)組char型的數(shù)組稱為字符數(shù)組,通常用來存儲字符串。定義并且初始化字符數(shù)組:

charchArray[]="helloworld!";4.1數(shù)組C++語言程序設(shè)計(jì)16初始化字符數(shù)組兩種方法:(1)用雙引號內(nèi)的字符串初始化字符數(shù)組例:chararray[10]={"hello"};可以省略大括號,簡化為:

chararray[10]="hello";用這種方法初始化時(shí),系統(tǒng)自動在數(shù)組最后一個(gè)元素后面補(bǔ)'\0'(結(jié)束符)。4.1數(shù)組C++語言程序設(shè)計(jì)17(2)用字符常量來初始化字符數(shù)組例:

chararray[10]={'h','e','l','l','o','\0'};該方法將初始值一一列舉在初始化列表中,這種方法通常用于輸入不容易在鍵盤上生成的不可見字符。例:下面的代碼中初始化值包含兩個(gè)制表符。

chararray[10]={'\a','\t','\b','\t','\0'};此種方式下,編程者要自己添加字符串結(jié)束符('\0'),同時(shí)不要忘記為最后的'\0'留出空間。4.1數(shù)組C++語言程序設(shè)計(jì)18字符數(shù)組的賦值有兩種方法(1)一個(gè)字符一個(gè)字符賦值數(shù)組元素例:chararray[10]; array[0]=‘h’;(2)用C的庫函數(shù)strcpy(字符數(shù)組1,字符串2)例:charstr1[10]=”“,str2[]=”hello”; strcpy(str1,str2);或strcpy(str1,”hello”);不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給字符數(shù)組賦值。str1=”hello”;//錯(cuò)?。?!因?yàn)閿?shù)組名是地址常量4.1數(shù)組多維數(shù)組的定義定義多維數(shù)組語法形式如下:二維數(shù)組類型標(biāo)識符

數(shù)組名標(biāo)識符[常量表達(dá)式1][常量表達(dá)式2];三維數(shù)組類型標(biāo)識符

數(shù)組名標(biāo)識符[常量表達(dá)式1][常量表達(dá)式2][常量表達(dá)式3];n維數(shù)組類型標(biāo)識符

數(shù)組名標(biāo)識符[常量表達(dá)式1]…[常量表達(dá)式n];C++語言程序設(shè)計(jì)194.1數(shù)組C++語言程序設(shè)計(jì)20例:

boolseat[10][6];//座位

unsignedcharimage[256][128];//256行128列圖像

floatmatrix[3][3];//三元一次線性方程組的系數(shù)矩陣

chartable[5][8];//課表二維數(shù)組元素的下標(biāo)從左至右稱為行、列。

charbook[200][32][40];//書三維數(shù)組元素的下標(biāo)由左至右可稱為頁、行、列或?qū)?、行、列?.1數(shù)組C++語言程序設(shè)計(jì)21在定義多維數(shù)組時(shí),需要注意首先要根據(jù)所要表示的對象內(nèi)容,選擇合適的數(shù)據(jù)類型(數(shù)組的類型,也就是數(shù)組元素的類型);其次確定數(shù)組的維數(shù),即幾維數(shù)組(有幾維就有幾對中括號);最后確定每一維的大?。ㄖ欣ㄌ杻?nèi))。特別強(qiáng)調(diào):數(shù)組每一維的大小必須用常量表達(dá)式聲明,否則,編譯會出錯(cuò)。這也是C和C++數(shù)組的一大缺陷:數(shù)組的使用不夠靈活。4.1數(shù)組C++語言程序設(shè)計(jì)22初始化多維數(shù)組提供數(shù)組元素的全部初始值提供部分元素的初始值這些初始化值位于大括號內(nèi),構(gòu)成初始值列表,多維數(shù)組初始化時(shí)需要使用嵌套的括號。inta[2][4]={{4,3,2,1},{1,2,3,4}};

doubled[3][4]={{l.0,2.0,3.0,4.0},{5.0,6.0,7.0,8.0},{9.0,10.0,11.0,12.0}};4.1數(shù)組C++語言程序設(shè)計(jì)23初始化多維數(shù)組可以省略內(nèi)層的括號,只要程序好讀即可。例如用換行的方式:

inta[2][4]={4,3,2,1,1,2,3,4};

doubled[3][4]={1.0,2.0,3.0,4.0,

5.0,6.0,7.0,8.0,

9.0,10.0,11.0,12.0};

4.1數(shù)組C++語言程序設(shè)計(jì)24初始化多維數(shù)組

多維數(shù)組的初始化,也可以只給出部分值;例:

inta[2][4]={4,3};則只有a[0][0]、a[0][1]分別得到初始值4和3,其余各元素的值為0??衫么颂匦詫⒁恍┯米鲇?jì)數(shù)器的多維數(shù)組初始化為0。例:定義并初始化二維整型計(jì)數(shù)器counts:intcounts[512][256]={0};

這是將多維數(shù)組元素置0的最簡便方法之一。4.1數(shù)組C++語言程序設(shè)計(jì)25訪問多維數(shù)組的元素訪問多維數(shù)組的元素時(shí),只要指定要訪問的數(shù)組元素的具體下標(biāo)值即可,語法形式為:

數(shù)組名[下標(biāo)表達(dá)式1]…[下標(biāo)表達(dá)式n]其中,下標(biāo)表達(dá)式的個(gè)數(shù)同數(shù)組維數(shù),“下標(biāo)表達(dá)式i”(1≤i≤n)可以用常量、變量或表達(dá)式,其值大于或等于0,小于數(shù)組對應(yīng)維的大小,即

0≤下標(biāo)表達(dá)式i的值<第i維的大小4.1數(shù)組C++語言程序設(shè)計(jì)26constintM=8,N=4;charmatrix[M][N];for(inti=0;i<M;i++){for(intj=0;j<N;j++){cin>>matrix[i][j];//給元素賦值,寫操作

}}定義并訪問數(shù)組元素4.2枚舉類型C++語言程序設(shè)計(jì)27C++語言不僅有豐富的基本數(shù)據(jù)類型,而且允許用戶自己定義數(shù)據(jù)類型。枚舉、結(jié)構(gòu)、聯(lián)合都屬于自定義類型4.2枚舉類型C++語言程序設(shè)計(jì)28枚舉型數(shù)據(jù)類型(簡稱枚舉類型)有些問題中所處理數(shù)據(jù)的取值可以一一列舉出來例:一周七天:星期日、星期1、星期2、星期3、星期4、星期5、星期6定義一種數(shù)據(jù)類型,一一列舉這種數(shù)據(jù)類型的變量的可能值,稱為枚舉類型,聲明形式為:

enum枚舉類型名{枚舉元素列表};可以使用這種自定義數(shù)據(jù)類型來定義變量。4.2枚舉類型C++語言程序設(shè)計(jì)29例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};weekdayday;

//定義一個(gè)weekday類型的變量:變量day的取值范圍:類型定義時(shí),表里列舉出來的七種標(biāo)識符,把這些標(biāo)識符看作符號常量。例如:day=sat;枚舉常量在機(jī)器內(nèi)部仍然是用整型數(shù)來存取定義某個(gè)枚舉類型的變量時(shí),分配幾個(gè)字節(jié)的內(nèi)存空間呢?自定義的數(shù)據(jù)類型枚舉元素或枚舉常量4.2枚舉類型C++語言程序設(shè)計(jì)30枚舉變量定義及使用enumweekday{sun,mon,tue,wed,thu,fri,sat};使用枚舉類型注意:在類型定義之后,對枚舉元素按常量處理,不能對它們賦值。sat=6;枚舉元素具有默認(rèn)值,它們依次為:0,1,2,……。也可以在類型聲明時(shí)另行指定枚舉元素的值。enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat}4.2枚舉類型C++語言程序設(shè)計(jì)31使用枚舉類型注意:枚舉值可以進(jìn)行關(guān)系運(yùn)算,不能進(jìn)行其他運(yùn)算。整數(shù)值不能直接賦給枚舉變量;如需要將整數(shù)值賦給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換.例:intx=2;

weekdayday;

day=x;

day=(weekday)x;

√C++語言程序設(shè)計(jì)32#include<iostream>usingnamespacestd;enumweekday{sun,mon,tue,wed,thu,fri,sat};voidmain(){ cout<<"今天是星期(請輸入一個(gè)數(shù)0-6):";

intn; cin>>n;

weekdaytoday=(weekday)n; weekdaythatday=(weekday)((today+10)%7);switch(thatday){casesun:

cout<<"ThatdayisSunday."<<endl; break; casemon:cout<<"ThatdayisMonday."<<endl; break; casetue:cout<<"ThatdayisTuesday."<<endl;break;casewed:cout<<"ThatdayisWednesday."<<endl; break;casethu:cout<<"ThatdayisThursday."<<endl;break;casefri:cout<<"ThatdayisFriday."<<endl;break;casesat:cout<<"ThatdayisSaturday."<<endl;break;default:cout<<"inputerror!"<<endl;}}讀入0-6之間的一個(gè)數(shù)代表今天,輸出十天后是星期幾。4.3結(jié)構(gòu)類型C++語言程序設(shè)計(jì)33結(jié)構(gòu)類型把現(xiàn)實(shí)生活中意義密切相關(guān)的一組數(shù)據(jù)組合成一個(gè)整體,即由各種數(shù)據(jù)類型(可以是基本數(shù)據(jù)類型或已聲明的自定義數(shù)據(jù)類型)的數(shù)據(jù)組成一個(gè)集合,稱為結(jié)構(gòu)類型。例如,一個(gè)學(xué)生的學(xué)號、姓名、年齡、成績等,雖然分別屬于不同的數(shù)據(jù)類型,但它們之間是密切相關(guān)的,因?yàn)槊恳唤M信息屬于一個(gè)人。4.3結(jié)構(gòu)類型C++語言程序設(shè)計(jì)34結(jié)構(gòu)類型的定義和初始化結(jié)構(gòu)的聲明形式:struct

結(jié)構(gòu)類型名{數(shù)據(jù)類型標(biāo)識符1成員名1;數(shù)據(jù)類型標(biāo)識符2成員名2;┇數(shù)據(jù)類型標(biāo)識符n成員名n;};structstudent{longnum;//學(xué)號

charname[20];//姓名

charsex;//性別

intage;//年齡

floatscore; //成績

charaddr[30];//住址};//必須以分號結(jié)束結(jié)構(gòu)的定義4.3結(jié)構(gòu)類型C++語言程序設(shè)計(jì)35結(jié)構(gòu)變量的定義和使用結(jié)構(gòu)成員的訪問:

結(jié)構(gòu)變量名.成員名例:students1;

s1.num=1;

cout<<s1.num<<endl;

cout<<<<endl;如同使用一個(gè)變量如同使用一個(gè)數(shù)組4.3結(jié)構(gòu)類型C++語言程序設(shè)計(jì)36結(jié)構(gòu)變量的初始化定義結(jié)構(gòu)變量時(shí)直接初始化

students2={20041118,”LiLi”,18,90};分別給各個(gè)成員賦值

students1;

s1.num=20041118;

strcpy(,“LiLi”);C++語言程序設(shè)計(jì)37#include<iostream>#include<iomanip>usingnamespacestd;structstudent//聲明新的數(shù)據(jù)類型{longnum;

//學(xué)號

charname[20];//姓名

charsex;

//性別

intage;

//年齡}stu={20041118,"LiLi",'F',18};voidmain(){cout<<setw(8)<<stu.num<<setw(10)<<<<setw(3)<<stu.sex<<setw(3)<<stu.age<<endl;}運(yùn)行結(jié)果:20041118LiLiF18結(jié)構(gòu)類型的聲明,變量的定義和初始化4.3結(jié)構(gòu)類型C++語言程序設(shè)計(jì)38結(jié)構(gòu)體可以由不同數(shù)據(jù)類型的成員構(gòu)成,這些成員可能是基本數(shù)據(jù)類型,也可能是自定義的數(shù)據(jù)類型,例如已聲明的另一個(gè)結(jié)構(gòu)類型。結(jié)構(gòu)的賦值運(yùn)算屬于同一結(jié)構(gòu)類型的各個(gè)變量之間可以相互賦值。這一點(diǎn)和數(shù)組不同,C++規(guī)定,不能直接進(jìn)行數(shù)組名的賦值,因?yàn)閿?shù)組名是一個(gè)常量,而結(jié)構(gòu)類型的變量可以賦值。不同結(jié)構(gòu)的變量不允許相互賦值。即使這兩個(gè)變量可能具有同樣的成員。4.4聯(lián)合類型C++語言程序設(shè)計(jì)39有時(shí)需要使幾個(gè)不同類型的變量共用同一組內(nèi)存單元,這時(shí)可以聲明一個(gè)聯(lián)合型(Union)數(shù)據(jù)類型,語法形式為:union聯(lián)合類型名

{數(shù)據(jù)類型說明符1成員名1;

數(shù)據(jù)類型說明符2成員名2;……

數(shù)據(jù)類型說明符n成員名n;

};4.4聯(lián)合類型C++語言程序設(shè)計(jì)40聯(lián)合類型變量定義形式:

聯(lián)合類型名

聯(lián)合變量名;在某時(shí)刻,只能使用多個(gè)成員的其中之一,聯(lián)合成員的引用形式為:

聯(lián)合變量名.成員名例如:

unionuarea

{charc_data;

shorts_data;longl_data;

}ux;聯(lián)合類型可以不聲明名稱,稱為無名聯(lián)合,常用做結(jié)構(gòu)類型的內(nèi)嵌成員。C++語言程序設(shè)計(jì)41設(shè)有若干個(gè)人員的信息,其中有學(xué)生和教師。從鍵盤輸入相關(guān)人員的信息。#include<iostream>usingnamespacestd;structperson{intnum;charname[10];charsex;charjob;//人員的類別

union//無名聯(lián)合作為結(jié)構(gòu)體的內(nèi)嵌成員

{intclasses;//為學(xué)生存放班級

charposition[10];//為教師存放職稱

};}p[2];voidmain(){inti;for(i=0;i<2;i++)

{cin>>p[i].num>>p[i].name>>p[i].sex>>p[i].job;if(p[i].job=='s')cin>>p[i].classes;

elseif(p[i].job=='t')cin>>p[i].position;

elsecout<<"inputerror!"<<endl;}for(i=0;i<2;i++)//按學(xué)生或教師顯示信息{if(p[i].job=='s')cout<<p[i].name<<"isastudentofclass"<<p[i].classes<<"."<<endl;elseif(p[i].job=='t')cout<<p[i].name<<"isateacher,heisa"<<p[i].position<<".\n";}}運(yùn)行結(jié)果:

9910401zhangms104↙

2355wangftprof↙zhangisastudentofclass104.

wangisateacher,heisaprof.4.4聯(lián)合類型C++語言程序設(shè)計(jì)42聯(lián)合型變量的特點(diǎn)如下(1)同一段內(nèi)存用來存放幾種不同類型的成員,但在某一時(shí)刻只能存放其中一種,而不是同時(shí)存放幾種;(2)聯(lián)合變量中起作用的成員是最后一次存放的成員,在存入一個(gè)新的成員后,原有的成員就會失去作用;(3)聯(lián)合變量的地址和它的各個(gè)成員的地址是同一地址;(4)不能對聯(lián)合變量名賦值,也不能在定義時(shí)初始化;(5)不能用聯(lián)合變量作為函數(shù)參數(shù)或返回值。C++語言程序設(shè)計(jì)編程技能b43(一)字符數(shù)組與字符串C++語言程序設(shè)計(jì)44#include<iostream>usingnamespacestd;voidmain(){//數(shù)組及變量定義;

constintN=80;charbuffer[N];intk=0;constintNUM=26;

intcounts[NUM]={0};

charletters[NUM];inti=0;do//循環(huán)輸入每一行字符

{cout<<"enterastring:\n";cin.getline(buffer,N,'\n');//獲得一行輸入字符串從鍵盤輸入一行或多行字符串,用字符數(shù)組存儲,并統(tǒng)計(jì)所輸入的字符串中26個(gè)字母出現(xiàn)的次數(shù)。

k=0;

//對于輸入的每一行字符,統(tǒng)計(jì)字符出現(xiàn)的次數(shù)while(buffer[k]!='\0'){i=tolower(buffer[k])-'a';counts[i]++;k++;//counts[tolower(buffer[k++])-'a']++;//用此行可代替前三句

}}while(buffer[0]!='\0');

cout<<"thestatisticsresult:"<<endl;for(i=0;i<NUM;i++)//輸出統(tǒng)計(jì)結(jié)果

{letters[i]=(char)('a'+i);if(counts[i]>0){cout<<letters[i]<<":"<<counts[i]<<endl;}}}(二)多維數(shù)組C++語言程序設(shè)計(jì)45編程實(shí)現(xiàn)矩陣轉(zhuǎn)置功能,矩陣行數(shù)為M,列數(shù)為N,用二維數(shù)組表示矩陣。#include<iostream>#include<ctime>#include<iomanip>usingnamespacestd;voidmain(){constintM=5;constintN=6;intmatrix[M][N];//矩陣

inttMatrix[N][M];//轉(zhuǎn)置矩陣

srand((unsignedint)time(NULL));inti,j;cout<<"matrix:"<<endl;

for(i=0;i<M;i++)//生成矩陣

{for(j=0;j<N;j++){matrix[i][j]=rand()%100;//給數(shù)組元素賦值

cout<<setw(4)<<matrix[i][j]<<"";}cout<<endl;}cout<<"transposeofmatrix:"<<endl;

for(i=0;i<N;i++) //得到轉(zhuǎn)置矩陣

{for(j=0;j<M;j++){tMatrix[i][j]=matrix[j][i];//給數(shù)組元素賦值

cout<<setw(4)<<tMatrix[i][j]<<"";}cout<<endl;}}(二)多維數(shù)組C++語言程序設(shè)計(jì)46編程實(shí)現(xiàn)計(jì)算兩個(gè)N階方陣乘積矩陣的功能,矩陣元素為整形,N=5。#include<iostream>#include<iomanip>#include<ctime>usingnamespacestd;voidmain(){constintN=5;inta[N][N],b[N][N];//兩個(gè)相乘的矩陣

intc[N][N]={0};//乘積矩陣

inti,j,k;srand((unsignedint)time(NULL));//生成矩陣a和bfor(i=0;i<N;i++)//行循環(huán)

{for(j=0;j<N;j++)//列循環(huán)

{a[i][j]=rand()%100;b[i][j]=rand()%100;}}

//顯示矩陣a,再顯示矩陣bcout<<"matrixa:"<<endl;for(i=0;i<N;i++){for(j=0;j<N;j++){cout<<setw(5)<<a[i][j];}cout<<endl;}cout<<"matrixb:"<<endl;for(i=0;i<N;i++){for(j=0;j<N;j++){cout<<setw(5)<<b[i][j];}cout<<endl;}

//計(jì)算乘積矩陣c,并顯示

for(i=0;i<N;i++){for(j=0;j<N;j++){for(k=0;k<N;k++) //求c的一個(gè)元素

c[i][j]+=a[i][k]*b[k][j];}}

cout<<"matrixc:"<<endl;for(i=0;i<N;i++){for(j=0;j<N;j++){cout<<setw(10)<<c[i][j];}cout<<endl;}}(三)冒泡排序用冒泡排序法對整型數(shù)組中的元素按照從小到大進(jìn)行排序C++語言程序設(shè)計(jì)47#include<iostream>#include<iomanip>usingnamespacestd;intmain(){constintarraySize=10;inta[arraySize]={6,2,10,4,8,12,89,68,45,37};inti,hold;cout<<"Dataitemsinoriginalorder\n";for(i=0;i<arraySize;i++)cout<<setw(4)<<a[i];for(intpass=1;pass<arraySize;pass++)

for(i=0;i<arraySize–1-pass;i++)

if(a[i]>a[i+1]){hold=a[i];a[i]=a[i+1];a[i+1]=hold;}

cout<<"\nDataitemsinascendingorder\n";for(i=0;i<arraySize;i++)cout<<setw(4)<<a[i];cout<<endl;return0;}(四)結(jié)構(gòu)數(shù)組C++語言程序設(shè)計(jì)48#include<iostream>usingnamespacestd;structEmployee{charname[20];unsignedlongid;floatsalary;};Employeeallone[6]={{"zhang",12345,3390.0},{"wang",13916,4490.0},{"zhou",27519,3110.0},{"meng",42876,6230.0},{"yang",23987,4000.0},{"chen",12335,5110.0}};公司有六個(gè)員工,把他們按工資由低到高排序。voidmain(){Employeetemp;

for(inti=1;i<6;i++)//排序

{

for(intj=0;j<=5-i;j++)//一輪比較

{

if(allone[j].salary>allone[j+1].salary){temp=allone[j];//結(jié)構(gòu)變量的交換

allone[j]=allone[j+1];allone[j+1]=temp;}

}

}

for(intk=0;k<6;k++)//輸出

cout<<allone[k].name<<""<<allone[k].id<<""<<allone[k].salary<<endl;}刨根問底cC++語言程序設(shè)計(jì)49(I)字符數(shù)組的輸入和輸出C++語言程序設(shè)計(jì)50字符數(shù)組的輸入和輸出字符數(shù)組的輸入是給數(shù)組各元素賦值的過程在循環(huán)中通過cin一個(gè)一個(gè)地輸入通過cin整串輸入調(diào)用I/O流類的成員函數(shù)輸入,例如使用getline()函數(shù)輸入一行字符。

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論