河南農(nóng)大C++實驗報告3(純手工+源代碼通過)_第1頁
河南農(nóng)大C++實驗報告3(純手工+源代碼通過)_第2頁
河南農(nóng)大C++實驗報告3(純手工+源代碼通過)_第3頁
河南農(nóng)大C++實驗報告3(純手工+源代碼通過)_第4頁
河南農(nóng)大C++實驗報告3(純手工+源代碼通過)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗報告課程名稱: 面向?qū)ο蟪绦蛟O(shè)計年級:14級實驗日期:2015年4月25日姓名:鄭煥科學號:1410003031班級:計算機科學與技術(shù)(專升本)實驗名稱:VC+6.0開發(fā)環(huán)境與C+簡單程序設(shè)計1、 實驗?zāi)康募耙竽康囊螅海?) 學習使用數(shù)組(2) 學習字符串數(shù)據(jù)的組織和處理(3) 掌握指針的使用方法(4) 通過Debug觀察指針的內(nèi)容及其所指的對象內(nèi)容(5) 練習通過動態(tài)內(nèi)存分配實現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用(6) 分別使用字符數(shù)組和標準C+庫練習處理字符串的方法實驗內(nèi)容:(1) 編寫并測試33矩陣的轉(zhuǎn)置函數(shù),使用數(shù)組保存33矩陣(2) 使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組重新完成上題,使

2、用指針實現(xiàn)函數(shù)的功能(3) 編程實現(xiàn)兩字符串的連接。要求使用字符數(shù)組,不使用系統(tǒng)函數(shù)(4) 定義一個Employee類,其中包括姓名、街道、城市和郵編等屬性,以及change_name()和display等函數(shù)。Display()顯示姓名、街道地址、城市和郵編等屬性,change_name()改變對象的姓名屬性。(5) 定義包含5個元素的對象數(shù)組,每個元素都是Employee類型的對象。2、 源程序清單:程序1:3*3矩陣的轉(zhuǎn)置函數(shù)(用數(shù)組實現(xiàn),數(shù)組作為調(diào)用函數(shù)的參數(shù)相當于指針。)#include using namespace std;#define SIZE 3/宏定義矩陣為3行3列voi

3、d trans(int arrSIZESIZE)int temp;for(int i=0;iSIZE;i+)for(int j=i+1;jSIZE;j+)/只置換右上三角temp=arrij;/ *(p+i) 指向以p為首地址的第i行,*(第i行首地址+j)指向第i行,第j列arrij=arrji;/第i行第j列=第j行第i列arrji=temp; void input(int arrSIZESIZE)coutPlease input values of the matrix:endl;int t;for(int i=0;iSIZE;i+)for(int j=0;jt;arrij=t; cou

4、tendl;void display(int arrSIZESIZE)coutthe matrix after transposition is: endl;for (int i=0;iSIZE;i+)for (int j=0;jSIZE;j+) coutarrij ;coutendl;/內(nèi)層循環(huán),打完一行后,回車void main()/建立一個3*3的數(shù)組int arrSIZESIZE;/arr為一個二維數(shù)組/對二維數(shù)組的值輸入,轉(zhuǎn)置,輸出處理input(arr);trans(arr);display(arr);程序2: 3*3矩陣的轉(zhuǎn)置函數(shù)(使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組。并使用指針。)#i

5、nclude using namespace std;void trans(int *p,int*q,int row,int col)/對于row=col成立。for(int i=0;irow;i+)for(int j=0;jcol;j+)/只置換右上三角*(*(q+j)+i)=*(*(p+i)+j);/ *(p+i) 指向以p為首地址的第i行,*(第i行首地址+j)指向第i行,第j列void input(int *p,int row,int col)int t;coutPlease input a matrix of row row and col col:endl;for(int i=0;

6、irow;i+)for(int j=0;jt;*(*(p+i)+j)=t;coutendl;void display(int *q,int row,int col)coutafter transposition:endl;for (int i=0;icol;i+)for (int j=0;jrow;j+) cout*(*(q+i)+j) ;coutendl;/內(nèi)層循環(huán),打完一行后,回車void main()int row=0,col=0,i;coutplease input rows and columns of the matrix:rowcol;/動態(tài)分配一個row行col列的二維數(shù)組in

7、t *arr;/arr為一個二維數(shù)組arr=new int* row;/動態(tài)分配一個int類型的指針數(shù)組(由指針構(gòu)成的數(shù)組,arr是指向這些指針的一個指針),也是指針的指針,相當于一維,即可理解為arrrowfor(i=0;irow;i+)arri=new intcol;/為arrrow分別分配列指針,指向二維,相當于arricol;(arri等價于*arr+i)/動態(tài)分配一個col行row列的二維數(shù)組,用于存放轉(zhuǎn)換后的數(shù)據(jù)int *arr_1;/arr_1為一個新的二維數(shù)組,全局指針變量arr_1=new int* col;/原來的列數(shù)變?yōu)楝F(xiàn)在的行數(shù)for(i=0;icol;i+)arr_1

8、i=new introw;/原來的行數(shù)變?yōu)榱袛?shù)/對二維數(shù)組的值輸入,轉(zhuǎn)置,輸出處理input(arr,row,col);trans(arr,arr_1,row,col);display(arr_1,row,col);/釋放內(nèi)存for(i=0;irow;i+)delete arri;delete arr;for(i=0;icol;i+)delete arr_1i;delete arr_1;程序3:實現(xiàn)兩個字符串的鏈接(動態(tài)申請內(nèi)存)#includeusing namespace std;int main()int m,n;/讓用戶輸入一個長度值,用來做動態(tài)分配的大小(要比字符串長度大)coutP

9、lease input a length(larger than the first strings length that you will input):n;coutPlease input a length(larger than the second strings length that you will input):m;char *str1;str1=new charn;/6 zheng char *str2; str2=new charm;/7 huankechar *str_con;str_con=new charn+m;/13 zhenghuanke00/輸入字符串int

10、i,j;/計數(shù)器 coutPlease input the first string: str1; coutPlease input the second string: str2;/鏈接兩個字符串,顯示 for(i=0;str1i!=0;i+) str_coni=str1i;/ for(j=0;str2j!=0;j+)/ str_coni+j=str2j; /鏈接第二個字符串 str_coni+j+1=0; /將字符串的結(jié)束位改成0連接后的字符串的末尾 coutthe string after connection is: str_conendl;/釋放堆指針所指的內(nèi)存delete str1

11、;delete str2;程序4:建立一個Empolyee類,并測試(兩種實例方法)#include using namespace std;class Employee private:char Name20;char Address40;char City20;char Postcode10;public:Employee(char *name,char *address,char *city,char *postcode)/構(gòu)造函數(shù) strcpy(Name,name); strcpy(Address,address); strcpy(City,city); strcpy(Postcode

12、,postcode); void change_name(char *name)strcpy(Name,name); void display() cout name : Name endl;cout address : Address endl;cout city : City endl;cout postcode : Postcode endl;coutendldisplay(); e-change_name(HeSongcai); e-display(); delete e;return 0;程序5:建立一個Empolyee類,包含5個元素的對象數(shù)組,并測試#include using

13、namespace std;class Employee private:char Name20;char Address40;char City20;char Postcode10;public:Employee()/無參構(gòu)造函數(shù)Employee(char *name,char *address,char *city,char *postcode)/構(gòu)造函數(shù) strcpy(Name,name); strcpy(Address,address); strcpy(City,city); strcpy(Postcode,postcode); void set(char *name,char *ad

14、dress,char *city,char *postcode)strcpy(Name,name); strcpy(Address,address); strcpy(City,city); strcpy(Postcode,postcode); void change_name(char *name)strcpy(Name,name); void display() cout name : Name endl;cout address : Address endl;cout city : City endl;cout postcode : Postcode endl;coutendlendl;i

15、nt main()/創(chuàng)建對象數(shù)組,Employee em5;em0.set(Zheng-Huanke,Henau,ZhengZhou,450000);em1.set(Zhang-San,Peking,BeiJing,100010);em2.set(Li-Si,Tsinghua,BeiJing,10010);em3.set(Wang-Wu,Henau,ZhengZhou,450000);em4.set(Yang-Liu,Henau,ZhengZhou,450000);for(int i=0;idisplay();delete e;程序5和程序4類似,不再過多累述,創(chuàng)建對象數(shù)組的方式如下:Empl

16、oyee em5;四、實驗結(jié)果: 程序1:3*3矩陣的轉(zhuǎn)置函數(shù)程序2:3*3矩陣的轉(zhuǎn)置函數(shù)(使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組。并使用指針。)程序3:實現(xiàn)兩個字符串的鏈接(動態(tài)申請內(nèi)存)程序4:建立一個Empolyee類,并測試(兩種實例方法)程序5:建立一個Empolyee類,包含5個元素的對象數(shù)組,并測試(兩種實例方法)五、實驗環(huán)境: Win7 VC+6.0。六、總結(jié)五項實驗結(jié)果均成功調(diào)試出來,并達到了預期的實驗?zāi)康暮蛯嶒灲Y(jié)果。在本次試驗中用到了動態(tài)內(nèi)存分配實現(xiàn)動態(tài)數(shù)組。這就用到了老師上課講的關(guān)于堆棧的知識:堆是由程序員申請、釋放、管理的內(nèi)存空間(不能由操作系統(tǒng)和程序自動分配和釋放),他存放的是所有非常量的指針,他是動態(tài)的。另一方面,程序員可以申請的堆的大小僅受內(nèi)存和虛擬內(nèi)存的限制,理論上可以申請的空間很大。而棧、靜態(tài)區(qū)、常量區(qū)以及代碼區(qū)都是程序運行時自動申請的空間,他們由程序和操作系統(tǒng)控制,且他們所占用的大小是固定不變的。另外需要注意,new和delete是成對出現(xiàn)的,在動態(tài)分配,使用完后,需要釋放指針所指的內(nèi)存,不然可能會照成存儲區(qū)滿的結(jié)果。delete并不是要刪除指針,而是釋放指針所指的內(nèi)存另外實驗4和實驗5初步的展示了類的定義和使用,以及對象數(shù)組的使用,并且在構(gòu)造函數(shù)中,數(shù)組變量的賦值不能用“=”,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論