C++語言程序設(shè)計實驗答案-數(shù)組、指針與字符串_第1頁
C++語言程序設(shè)計實驗答案-數(shù)組、指針與字符串_第2頁
C++語言程序設(shè)計實驗答案-數(shù)組、指針與字符串_第3頁
C++語言程序設(shè)計實驗答案-數(shù)組、指針與字符串_第4頁
C++語言程序設(shè)計實驗答案-數(shù)組、指針與字符串_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE4實驗06數(shù)組、指針與字符串(4學時)(第6章數(shù)組、指針與字符串)一、實驗?zāi)康?1)學習使用數(shù)組數(shù)據(jù)對象。(2)學習字符串數(shù)據(jù)的組織和處理。(3)學習標準C++庫的使用。(4)掌握指針的使用方法。(5)練習通過調(diào)試功能觀察指針的內(nèi)容及其所指的對象的內(nèi)容。(6)練習通過動態(tài)內(nèi)存分配實現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用。(7)分別使用字符數(shù)組和標準C++庫練習處理字符串的方法。二、實驗任務(wù)6_1(習題6-25)編寫并測試3×3矩陣轉(zhuǎn)置函數(shù),使用數(shù)組保存3×3矩陣。6_2(習題6-26)使用動態(tài)內(nèi)存分配生成動態(tài)數(shù)組來重新完成上題(n階方陣),使用指針實現(xiàn)函數(shù)的功能。6_3編程實現(xiàn)兩字符串的連接。要求使用字符數(shù)組保存字符串,不要使用系統(tǒng)函數(shù)。6_4使用string類聲明字符串對象,重新實現(xiàn)上一小題。6_5(習題6-27)聲明一個Employee類。其中包括姓名、街道地址、城市和郵編等屬性,以及change_name()和display()等函數(shù)。display()顯示姓名、街道地址、城市和郵編等屬性,change_name()改變對象的姓名屬性,實現(xiàn)并測試這個類。6_6(習題6-27)聲明包含5個元素的對象數(shù)組,每個元素都是Employee類型的對象。6_7修改實驗4中的people(人員)類。具有的屬性如下:姓名charname[11]、編號charnumber[7]、性別charsex[3]、生日birthday、身份證號charid[16]。其中“出生日期”聲明為一個“日期”類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、聚集。在測試程序中聲明people類的對象數(shù)組,錄入數(shù)據(jù)并顯示。三、實驗步驟1.(編程,習題6-25)編寫矩陣轉(zhuǎn)置函數(shù),輸入?yún)?shù)為3×3整型數(shù)組。使用循環(huán)語句實現(xiàn)矩陣元素的行列對調(diào),注意在循環(huán)語句中究竟需要對哪些元素進行操作,編寫main()函數(shù)實現(xiàn)輸入輸出。程序名:lab6_1.cpp。參考運行結(jié)果:★程序及運行結(jié)果:(2)使用二維動態(tài)數(shù)組表示方陣。(參考實驗提示)//lab6_2.cpp#include<iostream>#include<iomanip>usingnamespacestd;voidmove(int**matrix,intn){//矩陣為指向整型指針的指針,對應(yīng)二維數(shù)組 inttemp; for(inti=0;i<n;i++) for(intj=0;j<i;j++){ temp=matrix[i][j]; matrix[i][j]=matrix[j][i]; matrix[j][i]=temp; }}voidmain(){ inti,j,n,**mat; cout<<"輸入方陣的階數(shù):"; cin>>n; mat=newint*[n]; for(i=0;i<n;i++)mat[i]=newint[n]; cout<<"輸入"<<n<<"×"<<n<<"矩陣"<<endl; for(i=0;i<n;i++){ cout<<"第"<<i+1<<"行:"; for(j=0;j<n;j++)cin>>mat[i][j];//數(shù)組形式 } cout<<"\n輸入的矩陣為:"<<endl; for(i=0;i<n;i++){ for(j=0;j<n;j++) cout<<setw(4)<<mat[i][j]; cout<<endl; } move(mat,n); cout<<"轉(zhuǎn)置后的矩陣為:"<<endl; for(i=0;i<n;i++){ for(j=0;j<n;j++) cout<<setw(4)<<*(*(mat+i)+j);//指針形式 cout<<endl; } delete[]mat;}3.(編程)實現(xiàn)兩字符串的連接。聲明字符數(shù)組保存字符串,在程序中提示用戶輸入兩個字符串,實現(xiàn)兩個字符串的連接,最后用cout語句顯示輸出。程序名:lab6_3.cpp。用cin實現(xiàn)輸入,注意,字符串的結(jié)束標志是ASCII碼0,使用循環(huán)語句進行字符串間的字符拷貝。//字符串的結(jié)束標志'\0'參考運行結(jié)果:★程序及運行結(jié)果://lab6_3.cpp#include<iostream>usingnamespacestd;voidstrLL(char*a,char*b,char*c);voidmain(){ inti; chara[10],b[10],c[20]; cout<<"輸入一個字符串a(chǎn):";cin>>a; cout<<"顯示內(nèi)存中的字符串a(chǎn):";for(i=0;i<10;i++){ if(a[i])cout<<a[i];//a[i]不為0 else{ cout<<"\'\\0\'";//轉(zhuǎn)義 break; } } cout<<endl; cout<<"\n輸入另一個字符串b:";cin>>b; cout<<"顯示內(nèi)存中的字符串b:";cout<<b<<"\'\\0\'"<<endl; strLL(a,b,c); cout<<"\n顯示內(nèi)存中的連接字符串c:";for(i=0;i<20;i++){ if(c[i]) cout<<c[i]; else{cout<<"\'\\0\'";break;} } cout<<endl;}voidstrLL(char*a,char*b,char*c){ inti,j; for(i=0;a[i];i++)c[i]=a[i];//循環(huán)直到a[i]為0 for(j=0;b[j];i++,j++)c[i]=b[j]; c[i]=0;}4.(編程)使用string類聲明字符串對象,實現(xiàn)兩字符串的連接。在string類中已重載了運算符“+=”實現(xiàn)字符串的連接,可以使用這個功能。程序名:lab6_4.cpp。★程序及運行結(jié)果://lab6_4.cpp#include<string>//使用C++中的string#include<iostream>usingnamespacestd;voidmain(){ strings1,s2; cout<<"輸入字符串s1:"; cin>>s1; cout<<"輸入字符串s2:"; cin>>s2; s1+=s2; cout<<"s1+s2="<<s1<<endl;}5.(編程,習題6-27)聲明Employee類并應(yīng)用。在employee.h文件中聲明Employee類。Employee類具有姓名、街道地址、城市和郵編等私有數(shù)據(jù)成員,都可以用字符數(shù)組來表示。成員函數(shù):構(gòu)造函數(shù)用來初始化所有成員數(shù)組,對字符數(shù)組的賦值可以使用字符串拷貝函數(shù)strcpy(char*,char*name);display()使用cout顯示姓名、街道地址、城市和郵編等屬性;change_name()改變類中表示姓名屬性的字符數(shù)組類型的數(shù)據(jù)成員。在主程序中聲明這個類的對象并對其進行操作。程序名:lab6_5.cpp。參考運行結(jié)果:★程序及運行結(jié)果://lab6_5employee.h#include<cstring>//使用C中的string#include<iostream>usingnamespacestd;classEmployee{private: charname[10],street[20],city[10],mail[7];//姓名、街道、城市、郵編public: Employee(char*n,char*s,char*c,char*m); voiddisplay(); voidchange_name(char*n);};Employee::Employee(char*n,char*s,char*c,char*m){ strcpy(name,n);strcpy(street,s); strcpy(city,c); strcpy(mail,m);}voidEmployee::display(){ cout<<"姓名:"<<name<<endl; cout<<"街道:"<<street<<endl; cout<<"城市:"<<city<<endl; cout<<"郵編:"<<mail<<endl;}voidEmployee::change_name(char*n){strcpy(name,n);}//lab6_5.cpp#include"lab6_5employee.h"voidmain(){ Employeeemp("張山","海甸三西路13號","海口市","570228"); emp.display(); emp.change_name("李世"); cout<<endl; emp.display();}6.(編程,習題6-27)使用上一小題中的Employee類聲明對象數(shù)組emp[5]。使用循環(huán)語句把數(shù)據(jù)顯示出來。程序名:lab6_6.cpp。參考運行結(jié)果:★程序及運行結(jié)果://lab6_6.cpp#include"lab6_5employee.h"#include<iostream>usingnamespacestd;voidmain(){ Employeeemp[5]={Employee("n1","s1","c1","m1"), Employee("n2","s2","c2","m2"), Employee("n3","s3","c3","m3"), Employee("n4","s4","c4","m4"), Employee("n5","s5","c5","m5")}; for(inti=0;i<5;i++){ emp[i].display(); cout<<endl; }}7.(編程)修改實驗4中的people(人員)類。程序名:lab6_7.cpp。參考運行結(jié)果:★程序及運行結(jié)果:(1)lab6_7.h:People(人員)類的聲明及成員函數(shù)的實現(xiàn)//lab6_7.h#include<iostream>#include<cstring>usingnamespacestd;classDate{private: intyy,mm,dd;public: Date(){ } Date(Date&d):yy(d.yy),mm(d.mm),dd(d.dd){}//增添 ~Date(){} intGetyy()const{returnyy;} intGetmm()const{returnmm;} intGetdd()const{returndd;} voidSetyy(inty){yy=y;} voidSetmm(intm){mm=m;} voidSetdd(intd){dd=d;}};classPeople{private: charname[11]; //姓名,增添 charnumber[7]; //編號,改為數(shù)組 charsex[3]; //男或女,改為數(shù)組 Datebirthday; //出生日期 charid[16]; //身份證號,改為數(shù)組public: People(){} People(People&p); ~People(){} voidGetname(charna[]){strcpy(na,name);} voidGetnumber(charnu[]){strcpy(nu,number);} voidGetsex(charse[]){strcpy(se,sex);} intGetbirthyy()const{returnbirthday.Getyy();} intGetbirthmm()const{returnbirthday.Getmm();} intGetbirthdd()const{returnbirthday.Getdd();} voidGetid(chard[]){strcpy(d,id);} voidSetname(charna[]){strcpy(name,na);} voidSetnumber(charnu[]){strcpy(number,nu);} voidSetsex(charse[]){strcpy(sex,se);} voidSetbirthyy(inty){birthday.Setyy(y);} voidSetbirthmm(intm){birthday.Setmm(m);} voidSetbirthdd(intd){birthday.Setdd(d);} voidSetid(chard[]){strcpy(id,d);} voidinput(); voidoutput();};People::People(People&p):birthday(p.birthday){ strcpy(name,); strcpy(number,p.number); strcpy(sex,p.sex); strcpy(id,p.id);}inlinevoidPeople::input(){ cout<<"姓名:"; cin>>name; cout<<"編號:"; cin>>number; cout<<"性別(男/女):"; cin>>sex; cout<<"出生日期(年月日):"; inty,m,d;cin>>y>>m>>d; Setbirthyy(y);Setbirthmm(m);Setbirthdd(d); cout<<"身份證號:"; cin>>id;}inlinevoidPeople::output(){ cout<<"姓名:"<<name<<"\n編號:"<<number<<endl; cout<<"性別:"<<sex<<endl; cout<<"出生日期:"<<Getbirthyy()<<"年" <<Getbirthmm()<<"月"<<Getbirthdd()<<"日"<<endl; cout<<"身份證號:"<<id<<endl;}(2)lab6_7.cpp:主函數(shù)(輸入、輸出和拷貝構(gòu)造函數(shù)測試)//lab6_7.cpp#include"lab6_7.h"voidmain(){ Peoplep; p.input(); cout<<endl; p.output(); Peoplepp(p); cout<<endl; pp.

溫馨提示

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

評論

0/150

提交評論