




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
逵書破互卷___下筆力逵書破互卷___下筆力0有注電清華大學計算機系期末考試題及答案一、填空題(25小題,共50分)(以下每小題1分,共10分)1在中,函數的參數有兩種傳遞方式,它們是值傳遞和地址或指針或引用傳遞。2當一個成員函數被調用時,該成員函數的指針指向調用它的對象。3.在基類和派生類中,派生類可以定義其基類中不具備的數據和操作。對兩個有相同名字的數據成員進行訪問時,0果沒有作用域分隔符限定時,對此數據成員的訪問將出現歧義。拷貝構造函數使用引用作為參數初始化創建中的對象。在公有繼承的情況下,基類數據成員在派生類中的訪問權限保持不變。6描述命題小于或小于的表達式為。7用申請某一個類的動態對象數組時,在該類中必須能夠匹配到沒有形參的或缺省參數構造函數,否則應用程序會產生一個編譯錯誤。8.靜態數據成員在類外進行初始化,且靜態數據成員的一個拷貝被類的所有對象共享。9為了避免可能出現的歧義,對…語句配對規則規定為:總是與與最近的配對。O設,表達式()的值是。(以下每小題2分,共20分)11.面向對象的程序設計有四大特征,它們是抽象、封裝、繼承、多態。.在中,定義重載函數時,應至少使重載函數的參數個數或參數類型不同;在基類和派生類中,成員函數的覆蓋是指派生類成員函數與在基類被覆蓋的成員函數名、參數個數、參數類型和返回值類型均相同。13.構造函數與析構函數除功能不同外,在定義形式上,它們的區別還包括構造函數名與類名相同,而析構函數名是在類名前加一個~、析構函數沒有參數、析構函數可以定義為虛函數。14.動態聯編要滿足兩個條件,它們是被調用的成員函數是虛函數、用指針或引用調用虛函數。.在類中,有一種不能定義對象的類,這樣的類只能被繼承,稱之為抽象類,定義該類至少具有一個純虛函數。6在類中,關鍵字可以修飾對象和成員函數,對象不能被修改,成員函數不能修改類數據成員。7舉出中兩種用戶自定義的數據類型:類、枚舉。中沒有字符串類型,字符串是通過字符數組來表示的,每一個字符串都有一個結尾字符\。中沒有輸入輸出語句,輸入輸出是通過輸入輸出庫實現的,寫出一條打印整型
變量的輸出語句:(以下每小題4分,共20分)(以下每小題4分,共20分)21.下面程序的運行結果是.單選:10*2.簡答:4*5.程序分析:5*8.程序設計:2*10考點.:、、:(1)運算符重載(2)文件IO流(3)異常處理下面程序的運行結果是下面程序的運行結果是逵書破互卷___下筆力逵書破互卷___下筆力0有注電下面程序的運行結果是、問答題(每小題5分,共分)1.若程序員沒有定義拷貝構造函數,則編譯器自動生成一個缺省的拷貝構造函數,它可能會產生什么問題?解答要點:當對象含有指針數據成員,并用它初始化同類型的另一個對象時,缺省的拷貝構造函數只能將該對象的數據成員復制給另一個對象,而不能將該對象中指針所指向的內存單元也復制過去。這樣,就可能出現同一內存單元釋放兩次,導致程序運行出錯。簡述成員函數、全局函數和友元函數的差別。解答要點:以下幾點必須說清楚:成員函數是在類內部定義的,作用域在類的內部,成員函數可以訪問類的數據成員(公有、保護和私有數據成員),可以調用該類的其它成員函數(公有、保護和私有成員函數),可以調用全局函數。0果友元函數是另一個類的公有成員函數,則該類的成員函數也只能通過那個類的對象調用,不能調用那個類的保護和私有成員函數。非本類成員函數(其它類成員函數或全局函數)可以通過該類的對象訪問該類的公有數據成員和調用該類的的公有成員函數。不是在類中定義的成員函數都是全局函數。0果某一個函數(全局函數或類的成員函數)定義為另一個類的友元函數,需要在那個類中用關鍵字聲明,友元函數并不是類的成員,它的定義自然是在那個類的外面。簡述結構化的程序設計、面向對象的程序設計的基本思想。解答要點:結構化的程序設計將數據和對數據的操作分離,程序是由一個個的函數組成的,面向對象的程序設計將數據和操作封裝在一起,程序是由一個個對象組成的,對象之間通過接口進行通信,它能夠較好地支持程序代碼的復用。4結構和類有什么異同?解答要點:和都可以定義類,但是缺省訪問權限說明時,的成員是公有的,而的成員是私有的。在中,可被代替。三、找出下面程序(或程序段)中的語法錯誤,并予以糾正(每小題4分,共8分)(1)程序功能是倒序輸出各給定的字符串。應為"charstr[5]["charstr[5][10應為應為"printf("%c應"為,應為(2)程序功能是將各個平方根值放入數組中。①增加②應為改為:四、(分)下列類是一個表示形狀的抽象類,為求圖形面積的函數,則是一個通用的用以求不同形狀的圖形面積總和的函數。請從類派生三角形類、矩形類(),并給出具體的求面積函數五、(6五、(6分)完成順序查找函數。其過程是:從表頭開始,根據給定的模式,逐項與表中元素比較。0果找到所需元素,則查找成功,并打印出它在表中的順序號。0果查找整個表仍未找到所需對象,則查找失敗指針數組,指向字符串模式串表的長度③或或}六、(分)完成使鏈表逆置函數,若有鏈表:鏈表結點的結構0下:鏈表頭結點uctnode*p,*te或mp1=head;head=p;mp2=p;p->next;或返回逆置后的鏈表的頭結點逵書破互卷___下筆力逵書破互卷___下筆力0有注電一、選擇填空題(共20小題,每小題2分,共40分)。1.關于C++與C語言關系的描述中,(4)是錯誤的。a.C語言是C++語言的一個子集b.C語言與C++語言是兼容的c.C++語言對C語言進行了一些改進d.C++語言和C語言都是面向對象的2.按照標識符的要求,(1)符號不能組成標識符。a.連接符b.下劃線c.大小寫字母d.數字字符.為了避免嵌套的if-else語句的二義性,C語言規定else總是與(3)組成配對關系。a.縮排位置相同的ifb.在其之前未配對的ifc.在其之前未配對的最近的ifd.同一行上的if.在"inta口[3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(3)。a.1b.0c.6d.2.設"char**s;",以下正確的表達式是(2)。a.s="computer";b.*s="computer";c.**s="computer";d.*s='c';.對于"int*pa[5];"的描述中,(4)是正確的。a.pa是一個指向數組的指針,所指向的數組是5個int型元素b.pa是一個指向某數組中第5個元素的指針,該元素是int型變量c.pa[5]表示某個元素的第5個元素的值d.pa是一個具有5個元素的指針數組,每個元素是一個int型指針.在下列表示引用的方法中,(1)是正確的。已知:intm=10;&x=m;&y=10;&z;d.float&t=&m;.下列for循環的次數為(2)。for(i=0,x=0;!x&&i<=5;i++)a.5b.6c.1d.無限.對于C/C++語言的函數,下列敘述中正確的是(1)。a.函數的定義不能嵌套,但函數調用可以嵌套b.函數的定義可以嵌套,但函數調用不能嵌套c.函數的定義和調用都不能嵌套d.函數的定義和調用都可以嵌套.在一個被調用函數中,關于return語句使用的描述,(4)是錯誤的。a.被調用函數中可以不用return語句b.被調用函數中可以使用多個return語句c.被調用函數中,如果有返回值,就一定要有return語句d.被調用函數中,一個return語句可以返回多個值給調用函數.在一個函數中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用(1)。a.內聯函數b.重載函數c.遞歸調用d.嵌套調用.使用fseek函數可以實現的操作是(1)。a.改變文件指針的當前位置b.文件的順序讀寫c.文件的隨機讀寫d.以上都不對.下列存儲標識符中,(3)的可見性與存在性不一致。a.外部類b.自動類c.內部靜態類d.寄存器類.在如下結構定義中,不正確的是(2)。a.structstudent{intno;charname[10];floatscore;};b.structstud[20]{intno;charname[10];floatscore;};c.structstudent{intno;charname[10];floatscore;}stud[20];d.struct{intno;charname[10];floatscore;}stud[100];.將兩個字符串連接起來組成一個字符串時,選用(3)函數。a.strlen()b.strcpy()c.strcat()d.strcmp().(4)不是構造函數的特征a.構造函數的函數名與類名相同b.構造函數可以重載c.構造函數可以設置缺省參數d.構造函數必須指定類型說明.已知:類A中一個成員函數說明如下:voidSet(A&a);其中,A&的含義是(3)。a.指向類A的指針為ab.將a的地址值賦給變量Setc.a是類A對象的引用,用來作函數Set()的參數d.變量A與a按位與作為函數Set()的參數.已知:print()函數是一個類的常成員函數,它無返回值,下列表示中,(1)是正確的。a.voidprint()const;b.constvoidprint();c.voidconstprint();d.voidprint(const);.關于虛函數的描述中,(3)是正確的。a.虛函數是一個static類型的成員函數b.虛函數是一個非成員函數c.基類中說明了虛函數后,派生類中將其對應的函數可不必說明為虛函數d.派生類的虛函數與基類的虛函數具有不同的參數個數和類型.關于new運算符的下列描述中,(4)是錯的。a.它可以用來動態創建對象和對象數組b.使用它創建的對象和對象數組可以使用運算符delete刪除c.使用它創建對象時要調用構造函數d.使用它創建對象數組時必須指定初始值二、問答題(15分)(3分)虛析構函數有什么作用?(3分)拷貝構造函數在哪幾種情況下調用?(4分)函數重載與函數覆蓋有什么不同,它們與多態有什么關系?(3分)C++繼承是如何工作的?(2分)類與對象有什么區別?三、(6分)分析下面程序的運行結果#include<iostream.h>classB{public:B(){}B(inti){b=i;}virtualvoidvirfun(){cout<<"B::virfun()called.\n";}private:intb;};classD:publicB{public:D(){}D(inti,intj):B(i){d=j;}private:intd;voidvirfun(){cout<<"D::virfun()called.\n";}};voidfun(B*obj){obj->virfun();}voidmain(){D*pd=newD;fun(pd);}四、(9分)下面的程序可以統計命令行第一個參數中出現的字母個數,請填充下面空白,完成程序。#include<stdio.h>#include<ctype.h>voidmain(intargc,argv[];){char*str;intcount=0;if(argc<2)exit(1);str=;while(*str)if(isalpha())count++;printf("①字母個數:%d\n",count);}提示:intisalpha(intch)函數功能是檢查ch是否是字母五、(8分)定義一個字符棧類Stack(包括類的實現)。數據成員包括一個存放字符的數組stck□和一個棧指針tos。棧數組的尺寸由常量SIZE確定。棧的基本操作為Push()和Pop()。六、(10分)完成下面的函數,對有n個元素的數組a,使數組元素按逆序排列。voidinverse(int*a,intn){}七、(12分)下面的函數統計子字符串substr在字符串str中出現的次數,如果substr在str中不出現,則返回值0。請完成該函數。intstr_count(char*substr,char*str){}一、選擇填空題1、D2、A3、C4、C5、B6、D7、A8、B9、A10、D11、A12、A13、C14、B15、C16、D17、C18、A19、C20、D二、問答題虛析構函數有什么作用?解答要點:對象銷毀時,需要調用析構函數。在多態調用時,是用基類的指針訪問派生類的對象。如果析構函數是非虛函數,則基類指針只能訪問基類的析構函數,而不能訪問派生類的析構函數,導致派生類對象銷毀時,沒有調用派生類的析構函數,只是調用了基類的析構函數。如果把析構函數定義成虛函數,則可克服這個問題??截悩嬙旌瘮翟谀膸追N情況下調用?解答要點:用一個對象初始化另一個對象時當用對象作為函數參數傳遞時當函數返回對象時函數重載與函數覆蓋有什么不同,它們與多態有什么關系?解答要點:函數重載是指函數名相同,而函數的參數個數或類型不同;覆蓋是指在派生類中成員函數與基類成員函數的函數名、參數個數、類型與返回值均相同;C++中正是通過虛函數的覆蓋,實現多態的功能。4、C++繼承是如何工作的?解答要點:繼承使得派生類能夠使用基類的公有和保護成員,從而實現代碼的復用,派生類可以增加成員,也可以隱藏和覆蓋基類的成員。對于公有繼承,基類成員的訪問權限在派生類保持不變。類與對象有什么區別?解答要點:類是類型,是對象的抽象,對象是類的具體實例。一個類可以有多個對象,每個對象都有自己的存儲單元,而類不占存儲單元。三、運行結果為:D::virfun()called.四、填空①char*②argv[1]③*str++五、(8分)定義一個字符棧類Stack(包括類的實現)。數據成員包括一個存放字符的數組stck口和一個棧指針tos。棧數組的尺寸由常量SIZE確定。棧的基本操作為Push()和Pop()。constintSIZE=27;classStack{public:Stack():tos(0){};voidPush(charch);charPop();private:charstck[SIZE];inttos;};voidStack::Push(cha
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于情境教學的初中化學課堂教學效果評價研究論文
- 小學語文實驗:磁鐵磁力衰減故事創作的語文實驗探究與反思方法與技巧論文
- 基于綠色物流的電商包裝廢棄物回收體系優化論文
- 小學語文革命題材課文教學中的問題意識與解決策略研究論文
- 中國醫藥中間體市場供需格局及投資風險分析報告2025年
- 節假日公司管理制度
- 苗木進出庫管理制度
- 茶藝師外派管理制度
- 溶液-2021中考化學一模分類匯編(上海專用)
- 財務管理職位操作指南
- 杭州市富陽區衛健系統事業單位招聘筆試真題2024
- 2025遼寧沈陽副食集團所屬企業招聘25人筆試參考題庫附帶答案詳解析集合
- 2024年福建省廈門市思明區初中畢業班適應性練習(二)地理試卷
- 創造良好工作氛圍的有效途徑
- 2025年心理學基礎考試試卷及答案
- 2025上海電子信息職業技術學院輔導員考試試題及答案
- 三大國企面試題及答案
- 無人機設計與架構試題及答案
- 2025年航天知識競賽題庫及答案
- 布洛赫定理課件
- 2025浙江淳安縣事業單位招聘49人筆試備考試題及答案解析
評論
0/150
提交評論