面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第1頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第1頁。學(xué)習(xí)中心/函授站_ 濰坊學(xué)習(xí)中心姓 名 杜君 學(xué)號(hào) 7024140092004西安電子科技大學(xué)網(wǎng)絡(luò)與繼續(xù)教育學(xué)院2015學(xué)年上學(xué)期《面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)》期末考試試題(綜合大作業(yè))題號(hào) 一 二 三 四 五 總分題分 10 20 20 20 30得分考試說明:1、大作業(yè)于 2015年4月3日公布,2015年5月9日前在線提交;2、考試必須獨(dú)立完成,如發(fā)現(xiàn)抄襲、雷同、拷貝均按零分計(jì)。一、簡答題(10分)1.1(3分)C++提供了哪些循環(huán)語句?它們各自的特點(diǎn)是什么?解答:C++提供了三種循環(huán)語句 for、while 和do-while。while 循環(huán)語句先判斷是否滿足循環(huán)條件,如果滿足循環(huán)條件,則執(zhí)行一次循環(huán)體,再判斷是否執(zhí)行下一次循環(huán),否則退出循環(huán)。do-while 循環(huán)語句先執(zhí)行一次循環(huán)體后再判斷是繼續(xù)執(zhí)行循環(huán)體還是退出循環(huán)。for 循環(huán)先設(shè)置循環(huán)變量的初值,再判斷是執(zhí)行循環(huán)體還是退出循環(huán)體。如果執(zhí)行了循環(huán)體,再改變循環(huán)變量值后,判斷是執(zhí)行下一次循環(huán)體還是退出循環(huán),依此類推。1.2(3分)在C++中什么可以充當(dāng)友元?友元是否可以繼承,為什么?解答:在C++中函數(shù)和類都可以充當(dāng)友元,分別稱為友元函數(shù)和友元類。友元不可以繼承,因?yàn)橛言皇穷惖某蓡T。1.3(4分)若派生類以 private 方式從一個(gè)基類派生,派生類的對(duì)象可以訪問基類中的那些成員?派生類的成員函數(shù)可以訪問基類中的那些成員?解答:若派生類以 private 方式從一個(gè)基類派生,派生類的對(duì)象不能訪問基類中的任何成員;派生類的成員函數(shù)可以訪問基類中的 public 和protected 成員。二、填空題(每空1分,共20分)2.1break語句在循環(huán)結(jié)構(gòu)中的功能是退出其所在的循環(huán), continue 語句的功能是結(jié)束第1頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第2頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第2頁。本次循環(huán)。2.2有一段程序?yàn)椋?while( 表達(dá)式)語句1 語句2,,當(dāng)表達(dá)式的值為非 0時(shí),執(zhí)行 執(zhí)行循環(huán)體一次 ;當(dāng)表達(dá)式為 0時(shí),執(zhí)行 退出while 循環(huán) 。2.3 使用關(guān)鍵字 inline 說明的函數(shù)稱為內(nèi)聯(lián)函數(shù)。 編譯時(shí),源程序中所有對(duì)該函數(shù)的調(diào)用被替換為此函數(shù)的 定義2.4 數(shù)組名代表的是該數(shù)組的 首地址 ;數(shù)組元素作為函數(shù)的實(shí)參時(shí),是以指針方式傳遞參數(shù)的。2.5在C++中,類A的每一個(gè)非靜態(tài)成員函數(shù)都有一個(gè)隱藏的指針類型的形參 this,它指向當(dāng)前正在操作的對(duì)象,其類型為 A*const 。2.6C++語言引入了異常處理機(jī)制,用throw語句“拋出”異常,然后用相應(yīng)的語句catch捕獲被“拋出”的異常,并做出相應(yīng)的處理。2.7在C++語言中,用 new 表達(dá)式來創(chuàng)建動(dòng)態(tài)的類對(duì)象;用 delete 表達(dá)式釋放動(dòng)態(tài)類對(duì)象。2.8C++支持兩種類型的多態(tài),編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。 運(yùn)行時(shí) 多態(tài)是通過虛函數(shù)來實(shí)現(xiàn)的, 編譯時(shí)多態(tài) 多態(tài)是通過函數(shù)重載來實(shí)現(xiàn)的。2.9 純虛函數(shù)就是沒有函數(shù)體的虛函數(shù),包含純虛函數(shù)的類稱為抽象類。2.10在某些應(yīng)用中,需要程序中屬于某個(gè)類的所有對(duì)象共享某個(gè)數(shù)據(jù)。在 C++語言中,為了不破壞數(shù)據(jù)的封裝性,需將所要共享的數(shù)據(jù)說明為類的 私有成員 ,即用關(guān)鍵字_private____ 說明的類成員。三、選擇題(每題2分,共20分)3.1在下列給字符數(shù)組賦值語句中, A 是錯(cuò)誤的。已知, chars[5] 。A.s[0]='m'; B.s[5]='n'; C.s[1]='a'; D.s[2]='b';3.2下列對(duì)結(jié)構(gòu)變量賦值的描述中, C 是錯(cuò)誤的。A.結(jié)構(gòu)變量可以使用初始值表對(duì)它初始化B.可以給一個(gè)結(jié)構(gòu)變量的各個(gè)成員賦值C.可將任意已知的結(jié)構(gòu)變量名賦給一個(gè)結(jié)構(gòu)變量D.可將一個(gè)已知結(jié)構(gòu)變量名賦給相同結(jié)構(gòu)類型的另一個(gè)結(jié)構(gòu)變量3.3下列if 語句中,條件為真的語句是 B 。A.if(0) B.if(3) C.boolbFlag=ture;if(!bFlag) D.if(a)3.4若i的初值為 1,B 能輸出1到10的整數(shù)。A.if(i++<10)cout<<i; B.docout<<i;while(++i<=10);C.while(i++<10)cout<<i; D.switch(++i<=10)cout<<i;3.5在下面的程序中,若實(shí)參 a與形參x以引用傳遞的方式傳遞信息,實(shí)參 b與形參y以值傳遞的方式傳遞信息, 那么從函數(shù) compute返回主程序后,a和b的值分別為 A 。MainProgram voidcompute(x,y)a:=1; x:=x+2*y;b:=2; y:=2*x+y;compute(a,b); return;A.5和2 B.5和12 C.1和2 D.1和123.6下列關(guān)于運(yùn)算符重載的描述中, B 是正確的。A.運(yùn)算符重載可改變其優(yōu)先級(jí) B.運(yùn)算符重載不改變其語法結(jié)構(gòu)第2頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第3頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第3頁。C.運(yùn)算符重載可改變其結(jié)合性 D.運(yùn)算符重載可改變其操作數(shù)的個(gè)數(shù)3.7 為了使類中的成員能夠被類的對(duì)象通過成員運(yùn)算符訪問, 則應(yīng)該把成員的訪問權(quán)限定義為 A 。A.public B.protected C.private D.packaged3.8 假設(shè)A是一個(gè)類,那么執(zhí)行語句“ Aa, b(3), *p;”,調(diào)用了 C 次構(gòu)造函數(shù)。A.2 B.3 C.4 D.53.9 假設(shè)類AB用成員函數(shù)的方式重載加法運(yùn)算符, 以實(shí)現(xiàn)兩個(gè) AB類對(duì)象的加法,并返回相加的結(jié)果,則該成員函數(shù)的聲明為 B 。A.ABoperator+(AB&a,AB&B); B.ABoperator+(AB&);C.operator+(ABa); D.AB&operator+();3.10 下列對(duì)C++中靜態(tài)數(shù)據(jù)成員的描述中,正確的是 A 。A.靜態(tài)數(shù)據(jù)成員是類的所有對(duì)象共享的數(shù)據(jù)B.類的每個(gè)對(duì)象都有自己的靜態(tài)數(shù)據(jù)成員C.類的不同對(duì)象有不同的靜態(tài)數(shù)據(jù)成員值D.靜態(tài)數(shù)據(jù)成員不能通過類的對(duì)象來調(diào)用四、讀程題(每題5分,共20分)4.1給出下列源程序的輸出結(jié)果。#include<iostream.h>intadd(int*x,intn){intsum,i;for(sum=0,i=0;i<n;i++)sum+=*(x+i);returnsum;}voidmain(){intarr[]={1,3,5,7};cout<<add(arr,4)<<endl;}解:第一個(gè)調(diào)用 add(int)返回4+1=5第二個(gè)調(diào)用 add(int,int)返回4+5=94.2 指出下列類定義中的 3處錯(cuò)誤。#include<iostream.h>classA{public:A(){a1=a2=0;cout<<"Defaultconstructorcalled.\n";}A(inti,intj){a1=i;a2=j;cout<<"Constructorcalled.\n";}voidprint(){cout<<"a1="<<a1<<","<<"a2="<<a2<<endl;}private:inta1,a2;};voidmain(){Ax,y(3,9);第3頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第4頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第4頁。x.print();y.print();}解:<:print1(); 不要class;endl: ,要返回類型{A:voidprint2();good" 主義class 只在定義時(shí)用 ;classB; 不要class}:publicA{public#include<};iostream>:voidprint1(){cout</<//}};"/usingnamespacestd:print2()/:;classA{public;/ ,其他不要用voidB;boy.print2();<voidmain(){Bboy4.3 給出下述源程序的運(yùn)行結(jié)果。#include<iostream.h>#include<string.h>structStudent{char*name;doublescore;}*p;voidmain(){Students1;p=&s1;p->name=(char*)newchar[50];p->score=95.5;strcpy(p->name,"Maping");cout<<p->name<<','<<(*p).score<<endl;第4頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第5頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第5頁。}解:輸出的是Maping95.54.4 給出下述源程序的運(yùn)行結(jié)果并說明該程序的功能。#include<iostream.h>intadd(inta,intb=5);voidmain(){intm=5;cout<<"sum1="<<add(m)<<endl;cout<<"sum2="<<add(m,add(m))<<endl;cout<<"sum3="<<add(m,add(m,add(m)))<<endl;}intadd(intx,inty){returnx+y;}sum1=10sum2=15sum3=20解:voidmain(void){cout<<c+m(15,42);//m(15,42) 的返回值為 66,c為全局變量,// 在returnm(m(::c+=a+b+c)); 語句中已修改值為 64,所以結(jié)果為 130//在m(::c+=a+b+c)調(diào)用中,::c為全局c,a+b+c中的c為局部c}五、編程題(每題15分,共30分)5.1有n個(gè)整數(shù)已按由小到大的順序排列好,要求輸入一個(gè)整數(shù),把它插入到原有數(shù)列中,而且仍然保持有序,同時(shí)輸出新的數(shù)列。 (插入時(shí)應(yīng)考慮到插入的數(shù)的各種可能性,比所有的數(shù)都??;比所有的數(shù)都大;在最大數(shù)和最小數(shù)之間)解:printf(",8.h>%d",n;k;),a[i]);11,6;i++){k=i;for(i=0;i<intmain(){inta[11]={0:\stdio;i<if(n<}}for(i=0;\10;a[k]=n;i++)printf(",3;i>,4;;,&n),7;%d"break#include<printf(",9;scanf("i--)a[i]=a[i-1];a[i]){for(i=10;n"請(qǐng)輸入N值,2;第5頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第6頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第6頁。inti,k,10},5;return0;n")5.2 利用運(yùn)算符重載,定義復(fù)數(shù)類的加法與減法,使之能夠執(zhí)行下列運(yùn)算。解:Complexa(4.0,6),b(7.4,2),c(0,0);c=a+b;c=4.1+a;c=b+2.3;#include<iostream>#include<cstdlib>usingnamespacestd;classComplex{public:Complex(){real=0.0;imag=0.0;}Complex(floatr,floati){real=r;imag=i;}Complexoperator+(Complex&);Complexoperator-(Complex&);Complexoperator+(float);friendComplexoperator-(float,Complex&);friendComplexoperator+(float,Complex&);Complexoperator-(float);voidprint(){if(real>0)cout<<imag<<"i+"<<real<<endl;elseif(real<0)cout<<imag<<"i-"<<-real<<endl;elsecout<<imag<<"i"<<endl;}private:floatreal;floatimag;};第6頁 (共8頁)面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第7頁。面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)全文共8頁,當(dāng)前為第7頁。ComplexComplex::operator+(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}ComplexComp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論