




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++期末練習題(帶答案)C++期末練習題(帶答案)C++期末練習題(帶答案)V:1.0精細整理,僅供參考C++期末練習題(帶答案)日期:20xx年X月(一)讀程序題1.類中包括其他類的對象成員,構(gòu)造函數(shù)中要列出成員對象名帶實參,生成該類對象時,要先調(diào)用成員對象的構(gòu)造函數(shù)。如果是成員對象的缺省構(gòu)造函數(shù)可以不列,但生成該類對象時,仍要先調(diào)用成員對象的缺省構(gòu)造函數(shù)。如下程序運行時的輸出結(jié)果是1135。#include<iostream.h>classONE{intc;public:ONE():c(0){cout<<1;}ONE(intn):c(n){cout<<3;}};classTWO:publicONE{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<5;}};voidmain(){TWOt(2);}二.派生類構(gòu)造函數(shù)中要列出基類名帶實參,生成派生類對象時,要先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)。沖突規(guī)則與支配規(guī)則。2.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classA{public: intx; A(){x=10;} A(inti){x=i;} voidShow(){cout<<"x="<<x<<'\t'<<"A\n";}};classB{public: inty; B(){y=30;} B(inti){y=i;} voidShow(){cout<<"y="<<y<<'\t'<<"B\n";}};classC:publicA,publicB{public: inty; C(inta,intb,intc):A(a),B(b+30){y=c;} voidShow(){cout<<"y="<<y<<'\t'<<"C\n";}};voidmain(void){ Cc1(20,30,40); c1.y=10; c1.Show();c1.A::Show();c1.B::Show(); }三.派生類中包含對象成員,構(gòu)造函數(shù)中要列出基類名帶實參,再列出成員對象名帶實參,生成派生類對象時,要先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用成員對象的構(gòu)造函數(shù),最后調(diào)用派生類的構(gòu)造函數(shù)。如果是調(diào)用基類或成員對象的缺省構(gòu)造函數(shù)可以不列,但生成派生類對象時,仍要先調(diào)用基類的缺省構(gòu)造函數(shù),再調(diào)用成員對象的缺省構(gòu)造函數(shù)。構(gòu)造函數(shù)與析構(gòu)函數(shù)調(diào)用順序相反。3.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classA{public:A(){cout<<"A()\n"; }~A(){cout<<"~A()\n";}};classB{public:B(){cout<<"B()\n";}~B(){cout<<"~B()\n"; }};classC:publicB,publicA{Aa;public:C() {cout<<"C()\n"; }~C() {cout<<"~C()\n";}};voidmain(){Cc1;}4.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classA{public: A(){ cout<<'A'<<endl; }};classT{ Aa;public: T(){ cout<<'T'<<endl; }};classX:publicA{ Tt;public: X(){ cout<<'X'<<endl; }};voidmain(){ Xob;}三.虛基類5.下列程序運行后的輸出結(jié)果是。#include<iostream.h>classA{public: A(){cout<<"A\n";} ~A(){cout<<"~A\n";}};classB:virtualpublicA{public: B():A(){cout<<"B\n";} ~B(){cout<<"~B\n";}};classC:publicvirtualA{public: C():A(){cout<<"C\n";} ~C(){cout<<"~C\n";}};classD:publicC,publicB{public: D():B(),C(),A(){cout<<"D\n";} ~D(){cout<<"~D\n";}};voidmain(){Dd1;}6.下列程序的輸出結(jié)果是。#include<iostream.h>classA{public: A(){cout<<"A\n";} ~A(){cout<<"~A\n";}};classB:publicA{public: B():A(){cout<<"B\n";} ~B(){cout<<"~B\n";}};classC:publicA{public: C():A(){cout<<"C\n";} ~C(){cout<<"~C\n";}};classD:publicC,publicB{public: D():B(),C(){cout<<"D\n";} ~D(){cout<<"~D\n";}};voidmain(){Dd1;}7.下列程序的輸出結(jié)果是。#include<iostream.h>#include<string.h>classB{ charstr[20];public: B(char*s="default"){strcpy(str,s);cout<<str<<endl;}};classIh1:publicvirtualB{ charstr1[20];public: Ih1(char*s1,char*s2):B(s1){strcpy(str1,s2);cout<<str1<<endl;}};classIh2:publicvirtualB{ charstr2[20];public: Ih2(char*s1,char*s2):B(s1){ strcpy(str2,s2);cout<<s2<<endl; }};classIh3:publicIh1,publicIh2{ charstr3[20];public: Ih3(char*s1,char*s2,char*s3,char*s4):Ih1(s1,s2),Ih2(s1,s3) { strcpy(str3,s4);cout<<str3<<endl; }};voidmain(){ Ih3h3("abc","def","ghi","jkl");}四.運行時多態(tài)8.下列程序的輸出結(jié)果是。#include<iostream.h>classA{public: virtualvoidf1(){cout<<"類A中的f1\n";} virtualvoidf2(){cout<<"類A中的f2\n";} voidf3(){cout<<"類A中的f3\n";}};classB:publicA{public: voidf1(){cout<<"類B中的f1\n";} voidf2(int){cout<<"類B中的f2\n";} voidf3(){cout<<"類B中的f3\n";}};voidmain(){ Aa1,*p; Bb1; p=&b1; p->f1();p->f2();p->f3();}9.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classA{public:virtualvoidf(){cout<<1;}voidg(){cout<<2;}};classB:publicA{public:virtualvoidf(){cout<<3;}voidg(){cout<<4;}};voidshow(A&a){a.f();a.g();}voidprint(A*p){p->f();p->g();}voidmain(){Bb;show(b);print(&b);}10.如下程序運行時的輸出結(jié)果是。#include<iostream.h>#include<string.h>classP{public: P(char*s){ name=newchar[strlen(s)+1]; strcpy(name,s); } virtualvoidprint(){ cout<<"Iam"<<name<<"\n"; } ~P(){ delete[]name; }protected: char*name;};classS:publicP{public: S(char*s,doubleg):P(s){ gj=g; } voidprint(intk){ cout<<name<<"is"<<gj*k<<endl; }private: doublegj;};classF:publicP{public: F(char*s,intn):P(s){ pub=n; } voidprint(){ cout<<name<<"published"<<pub<<"books.\n"; }private: intpub;};voidmain(){ inta=25; P*p; Ppers("Zhang"); Sstud("Wang",3.6); Fprof("Li",4); p=&pers; p->print(); p=&stud; p->print(); p=&prof; p->print(); stud.print(a);}11.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classA{ intx,n; intmul;public: A(inta,intb){ x=a; n=b; mul=10; } virtualintpower(void){ mul=1; for(inti=1;i<=n;i++) mul*=x; returnmul; } voidshow(void){ cout<<x<<'\t'<<n<<'\t'<<mul<<endl; }};classB:publicA{ inty,m; intp;public: B(inti,intj,intk,inth):A(i,j){ y=k; m=h; p=10; } intpower(void){ p=1; for(inti=1;i<=m;i++) p*=y; returnp; } voidshow(void){ A::show(); cout<<y<<'\t'<<m<<'\t'<<p<<endl; }};voidfun(A*f){ cout<<f->power()<<'\n';}voidmain(){ Aa(4,3),*p; Bb(2,4,3,3); p=&a; fun(p); p=&b; fun(p); b.show();}12.如下程序運行時的輸出結(jié)果是。#include<iostream.h>classAnimal{public:virtualchar*getType(){return“Animal”;}virtualchar*getVoice(){return“Voice”;}};classDog:publicAnimal{public:char*getType(){return“Dog”;}char*getVoice(){return“Woof”;}};voidtype(Animal&a){cout<<a.getType();}voidspeak(Animala){cout<<a.getVoice();}voidmain(){Dogd;type(d);cout<<”speak”;speak(d);cout<<endl;}五.友元函數(shù)13.#include<iostream.h>classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1;returns.x*fun(Sample(s.x-1));}voidmain(){intsum=0;for(inti=0;i<5;i++)sum+=fun(Sample(i));cout<<sum;}六.運算符重載14.寫出運算符重載函數(shù)調(diào)用形式。classA{intm,n;public:A(intx=0,inty=0){m=x;n=y;}Aoperator++(){++m;++n;return*this;}Aoperator++(int){At=*this;++(*this);returnt;}friendAoperator--(A&t){--t.m;--t.n;returnt;}friendAoperator--(A&t,int){Atemp=t;--t.m;--t.n;returntemp;}voidmain(){Aa1(1,2),a2(3,4),a3,a4;a3=++a1;//a4=a2++;// a3=--a1;// a4=a2--;// 15.寫出運算符重載函數(shù)調(diào)用形式。classComplex{intyuan,jiao,fen;public:Complex(inty=0,intj=0,intf=0){yuan=y;jiao=j;fen=f;}operatorfloat();};Complex::operatorfloat(){floatamount;amount=(yuan*100.0+jiao*10.0+fen)/100;returnamount;}voidmain(){Complexd1(10,20,30);floats1;s1=d1;//}16.如下程序運行時的輸出結(jié)果是。定義一個數(shù)組類Array,通過成員函數(shù)重載“+=”運算符,通過友元函數(shù)重載“-=”運算符,實現(xiàn)數(shù)組的加等、減等運算。具體要求如下:(1)私有數(shù)據(jù)成員 float*pa; //表示一維數(shù)組 intn; //數(shù)組的大?。?)公有成員函數(shù) Array(float*p,intx):構(gòu)造函數(shù),以形參初始化數(shù)據(jù)成員; voidoperator+=(Array&t):實現(xiàn)數(shù)組對象的加等運算; friendvoidoperator-=(Array&t1,Array&t2):實現(xiàn)數(shù)組對象的減等運算; voidprint():以每行5個元素的格式輸出數(shù)組; ~Array():析構(gòu)函數(shù),釋放動態(tài)內(nèi)存。(3)對所定義的類進行測試。#include<iostream.h>classArray{ float*pa; intn;public: Array(float*p,intx){ n=x; pa=newfloat[n]; for(inti=0;i<n;i++)pa[i]=p[i]; //A } voidoperator+=(Array&t){for(inti=0;i<n;i++)pa[i]+=t.pa[i];} //B friendvoidoperator-=(Array&t1,Array&t2){ for(inti=0;i<t1.n;i++)t1.pa[i]-=t2.pa[i]; //C } voidprint(){ for(inti=0;i<n;i++){ cout<<pa[i]<<'\t'; //D if((i+1)%5==0)cout<<'\n'; } } ~Array(){delete[]pa;}};voidmain(){ floata[10]={1,2,3,4,5,6,7,8,9,10},b[10]={0,1,2,3,4,5,6,7,8,9}; Arraya1(a,10),a2(b,10); a1+=a2;a1.print(); a1-=a2;a1.print();}一、函數(shù)編程1.求素數(shù)問題:定義函數(shù)判斷一個整數(shù)是否為素數(shù),求300以內(nèi)的素數(shù),每行3個數(shù)形式輸出。2.最大公約數(shù)和最小公倍數(shù)問題:求兩分數(shù)之和并輸出結(jié)果,要求:將求最小公倍數(shù)和最大公約數(shù)設(shè)計成獨立的函數(shù)。(提醒:分子、分母可分別用兩個整型變量表示。之和的分母就是兩分數(shù)分母的最小公倍數(shù);輸出示例:cout<<3<<”/”<<7;就完成了分數(shù)3/7的輸出顯示。)3.一維數(shù)組排序與元素移動綜合題:(1)定義整型數(shù)組a[10],從鍵盤輸入10個數(shù)為數(shù)組賦值,并分別定義兩個獨立函數(shù),voidprint(intb[])實現(xiàn)將一維數(shù)組元素輸出,voidsort(intb[],intn)實現(xiàn)將一維數(shù)組的元素按從小到大排序(用兩種方法實現(xiàn))。最后在主函數(shù)中分別調(diào)用兩個函數(shù)。4.二維數(shù)組與元素移動:(1)定義一個二維數(shù)組intb[2][3],從鍵盤輸入為二維數(shù)組賦值,將二維數(shù)組中按列循環(huán)前移或后移一位,并以矩陣形式輸出二維數(shù)組元素。(2)定義一個二維數(shù)組,inta[4][4],求其外圍元素之和與對角線之和,并以矩陣形式輸出二維數(shù)組元素。(求和用兩種方法實現(xiàn))5.字符串處理:設(shè)計一個通用函數(shù)實現(xiàn)在字符串s1中從第m個字符開始插入字符串s2,在主程序中對該函數(shù)進行測試。初始狀態(tài):s1:abcdefgs2:1234輸入插入字符串的位置:3目標狀態(tài):s1:ab1234cdefgs2:12346.拼數(shù)與合數(shù)問題:(1)在主函數(shù)中定義一個一維數(shù)組a[4]用來存放4個整型數(shù)3,12,0,1,并依次輸出一維數(shù)組中的元素。(2)依次取出數(shù)組中的元素,利用合數(shù)算法將這些元素合成一個數(shù),要求合數(shù)的過程寫成獨立函數(shù)的形式,編寫intfun(intb[],intn)函數(shù),其中b為一維數(shù)組,n為b數(shù)組中包含的元素個數(shù)。該函數(shù)用來實現(xiàn)合數(shù)過程,并在主函數(shù)中調(diào)用該函數(shù),并在主函數(shù)中輸出合成之后的數(shù)。7.數(shù)字字符與整數(shù)轉(zhuǎn)換算法:將字符串#ab78c15fk23d*中整型數(shù)據(jù)提取出來,合成一個整型數(shù)781523并輸出來。再將781523整數(shù)的各個數(shù)位數(shù)字拆開存放到一維數(shù)組intb[10]中,并將一維數(shù)組中的元素轉(zhuǎn)換為數(shù)字字符存放到字符數(shù)組s[100]中,并輸出該數(shù)字字符串"325187".8.字符數(shù)組:(1)定義一個字符數(shù)組chars[100]={"abc123"};定義兩個函數(shù)分別實現(xiàn)將字符串逆序排序和按照字符的ASCII碼從小到大排序,輸出并操作后的字符串。(2)定義兩個字符數(shù)組:chars1[100]="apple",s2[100]={"tree"};將兩個字符數(shù)組拼接成一個字符串(不用拼接函數(shù)),并輸出拼接前和拼接后的兩個字符串。9.請從鍵盤輸入一個正整數(shù),求這個數(shù)是幾位數(shù),并求出該正整數(shù)的各個位上的數(shù)字之和。如輸入1234,該正整數(shù)是4位數(shù),各個數(shù)位上的數(shù)字之和為10.10、循環(huán)結(jié)構(gòu):請從鍵盤輸入一個正整數(shù),求這個數(shù)是幾位數(shù),并求出該正整數(shù)的各個位上的數(shù)字之和。如輸入1234,該正整數(shù)是4位數(shù),各個數(shù)位上的數(shù)字之和為10.11、從鍵盤上輸入一個整數(shù)n的值,按下式求出y的值,并輸出n和y的值。y=1!+2!+3!+┄+n!12、求1-1/2+1/3-1/4+……+1/99-1/100的和。13、求1+1/1!+1/2!+……+1/10!的和14、從鍵盤輸入一個整數(shù)n,將該整數(shù)的每一位上的數(shù)字拆開,存放到一維數(shù)組inta[10]中,該過程用獨立函數(shù)形式實現(xiàn)。并將一維數(shù)組中的元素取出合成一個數(shù),并輸出合成的數(shù)和一維數(shù)組元素。如n:1234,存放到一維數(shù)組中的順序為4321,合成一個數(shù)為4321。二、類的編程:用類解決實際問題的方法分三個步驟,如下:1、定義類的框架2、公有成員函數(shù)的實現(xiàn)3、在主函數(shù)中測試類(用類定義對象,并用對象調(diào)用成員函數(shù))(一)數(shù)據(jù)成員為一維數(shù)組時問題描述如下:(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:私有數(shù)據(jù):intb[10],intm;公有成員函數(shù):Array(intt[]);//功能為一維數(shù)組b初始化Voidfun();//求一維數(shù)組b的最大值為mvoidsort();//功能為實現(xiàn)對一維數(shù)組從大到小排序voidmove();//功能為將一維數(shù)組元素循環(huán)后移一位voidprint();//功能為輸出一維數(shù)組元素(2)用類定義對象arr,并用對象arr調(diào)用成員函數(shù),實現(xiàn)對一維數(shù)組元素排序和數(shù)組元素循環(huán)后移一位,并輸出每次操作的結(jié)果。(二)數(shù)據(jù)成員為二維數(shù)組時1、問題描述如下:(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:私有數(shù)據(jù):inta[4][5];ints;公有成員函數(shù):Array(intt[][5]);//功能為二維數(shù)組b初始化voidsum();//功能為求二維數(shù)組b外圍元素之和為svoidfun();//對二維數(shù)組b按列前移voidprint();//功能為以矩陣形式輸出二維數(shù)組元素(2)用類定義對象array,并用對象array調(diào)用成員函數(shù)求出二維數(shù)組外圍元素之和,按列前移,再求二維數(shù)組外圍元素之和,輸出二維數(shù)組元素。2、問題描述如下:(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:私有數(shù)據(jù):intb[4][4];ints;公有成員函數(shù):Array(intt[][4]);//功能為二維數(shù)組b初始化voidsum();//功能為求二維數(shù)組b對角線元素之和為svoidfun();//將二維數(shù)組b最小元素所在的列與第0列對調(diào)voidprint();//功能為以矩陣形式輸出二維數(shù)組元素(2)用類定義對象array,并用對象array調(diào)用成員函數(shù)求出二維數(shù)組對角線元素之和,對調(diào)最小元素所在的列與第0列,輸出二維數(shù)組元素。(三)數(shù)據(jù)成員為字符數(shù)組時問題描述如下:定義一個字符串類String,將字符串b拼接到字符串a(chǎn)中,(不能用拼接函數(shù))。具體要求如下:(1)私有數(shù)據(jù)成員chara[100],b[100];(2)公有成員函數(shù)String(charc[],chard[]):構(gòu)造函數(shù),用參數(shù)初始化數(shù)據(jù)成員voidfun():功能函數(shù),實現(xiàn)將b拼接到a的后面voidinsert(intm);實現(xiàn)將字符數(shù)組b中的字符串插入到字符數(shù)組a中的第m個字符的位置。voidshow():功能函數(shù),輸出數(shù)據(jù)成員(3)用數(shù)據(jù)"123456789","abc"在主函數(shù)中對類測試。(四)數(shù)據(jù)成員為指針變量時1、定義一個字符串類String,為指針變量p動態(tà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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公園土地租賃協(xié)議
- 文件歸檔目錄清單表格
- 工程建設(shè)監(jiān)理內(nèi)部承包合同
- 三農(nóng)村電商運營案例分析
- IT技術(shù)支持服務(wù)評價表
- 供水水管道施工方案
- 道路給排水施工方案
- 農(nóng)村水管旱井施工方案
- 潛水泵施工方案
- 地面基層固化施工方案
- 2025年臨床醫(yī)師定期考核必考復(fù)習題庫及答案(1080題)
- 電梯維保知識培訓課件
- 急診預(yù)檢分診標準
- 2025年1月浙江高考首考英語應(yīng)用文范文講評課件
- ??谱o理人才培養(yǎng)
- 《廣東省建設(shè)工程消防設(shè)計、審查疑難問題解析》
- CNAS-R02:2023公正性和保密規(guī)則
- 2024-2030年中國骨傳導(dǎo)植入式助聽器和耳機行業(yè)應(yīng)用態(tài)勢與需求前景預(yù)測報告
- 公路工程施工質(zhì)量控制培訓
- 中國高血壓防治指南(2024年修訂版)
- 現(xiàn)場物資安全管理
評論
0/150
提交評論