級計算機科學系_程序設計_A卷_第1頁
級計算機科學系_程序設計_A卷_第2頁
級計算機科學系_程序設計_A卷_第3頁
級計算機科學系_程序設計_A卷_第4頁
級計算機科學系_程序設計_A卷_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中山大學計算機科學系2007級 計算機科學與技術專業(yè)、網(wǎng)絡工程專業(yè)、信息平安專業(yè)ABCDE班程序設計 A卷學號 _ 姓名 _ 成績_(試卷共6頁,答案全寫在答題紙上,交卷時連試卷一同交回) 考試形式:閉卷任課老師:林瑛、肖菁、楊永紅2021-6?中山大學授予學士學位工作細那么?第六條:“考試作弊不授予學士學位。 一、 單項選擇(每題1分,共15分)1. C+源程序文件的擴展名為: A) likB) cppC) objD) exe2. 如果函數(shù)A被聲明為類B的友元,那么:A) A不得訪問類B的私有成員B) A是類B的成員函數(shù)C) A可以訪問類B的私有成員D) 類B的成員是A的友員3. 關于虛函數(shù)

2、的描述中,正確的選項是: A) 派生類的虛函數(shù)與基類的同名虛函數(shù)具有不同的參數(shù)個數(shù)和類型B) 虛函數(shù)是一個非成員函數(shù)C) 虛函數(shù)是一個static類型的成員函數(shù)D) 基類中說明了虛函數(shù)后,派生類中對同名函數(shù)的重定義時可不必說明為virtual,其虛特性保持不變4. 在C+語言中,允許派生類可兼容基類類型,這是類型兼容性規(guī)那么,但是這樣的類型兼容性只適用于: A) 公有派生B) 私有派生C) 受保護派生D) 所有類型的派生5. 函數(shù)的引用性聲明函數(shù)原型不包含哪一局部: A) 返回類型B) 函數(shù)名稱C) 形式參數(shù)D) 函數(shù)體6. 對以下聲明的類A,sizeof(A)的值為: class A sta

3、tic float std; float max, min; public: float fun(); ;A) 4B) 8C) 12D) 167. 要將一個局部變量的生存期擴展為全局的,那么定義它時應加上修飾符: A) registerB) externC) staticD) auto8. 在C+中,什么類只能用作派生其他類的基類,而本身不能創(chuàng)立對象實例: A) 基類B) 派生類C) 虛基類D) 抽象類9. 友元運算符 obj 被C+編譯器解釋為(表示某種運算符,obj是其操作數(shù)): A) operator(obj)B) operator(obj,0)C) obj.operator()D) o

4、bj.operator(0) 10. 以下函數(shù)中,不能重載的是:A) 構造函數(shù)B) 析構函數(shù)C) 非類成員的普通函數(shù)D) 類的成員函數(shù)11. template<class T>class APPLE;根據(jù)上述語句,定義類模板APPLE的成員函數(shù)的正確格式是: A) T APPLE<T>:Push(T obj) B)T APPLE:Push(T obj) C) template<class T>D)template<class T> T APPLE<T>:Push(T obj) T APPLE:Push(T obj) 12. 可以用友元

5、方式重載的運算符是:A) + : <<B) = >> /C) + & D) + | !13. 編譯程序在對函數(shù)調用進行靜態(tài)綁定時,根據(jù)以下因素決定調用哪一個函數(shù),不正確的選項是: A) 函數(shù)類型B) 函數(shù)名C) 實際參數(shù)個數(shù)D) 實參相應位置的類型14. 在C+語言中,以下哪個表達式采用了八進制表示整型常量: A) k = 0123;B) k = 123;C) k = x23;D) k = 0x123;15. 類A中有一成員函數(shù)說明如下void A:Set(A & a); 其中A & a的含義是: A) 指向類A的指針為aB) 將a的地址值賦給變

6、量SetC) a是類A的對象引用,用作函數(shù)Set()的形參D) 變量A與a按位與作為函數(shù)Set()的參數(shù)二、 程序改錯(共20分)1. 指出以下的程序片段的錯誤每題一個錯,說明錯誤原因,并改正:1) int how_to_do(int x = 0, int y = 0, int z, int w);2) class CIRCLE public:CIRCLE(int x = 0, int y = 0, int radius = 1);CIRCLE();int draw();private:auto int radius;3) char *department = "Computer S

7、cience Department"cout << "Depart: " << department << "n"delete department; 2. 閱讀下面的程序,指出在哪些行上有語法錯誤共2個錯誤,說明錯誤原因,并在不改動類數(shù)據(jù)成員的訪問方式的前提下,改正錯誤:1) #include <iostream.h>2) class POINT 3) public:4) POINT(int x, int y): x(x), y(y) 5) int getX() return x; 6) int

8、 getY() return y; 7) void print()8) cout << "Point: (" << getX() << ", " << getY() << ")"9) private:10) int x = 0, y = 0;11) ;12) class LINE 13) public:14) LINE(int x0, int y0, int x1, int y1)15) start.x = x0;start.y = y0;16) end.x = x1;end

9、.y = y1;17) 18) POINT getStart()return start; 19) POINT getEnd()return end; 20) void print()21) cout << "Line from "start.print();22) cout << " To "end.print();23) cout << ".n"24) 25) private:26) POINT start, end;27) ;28) void main()29) LINE line(0, 0,

10、 50, 50);30) line.print();31) 3. 閱讀下面的程序,指出在哪些行上有語法錯誤共3個錯誤,說明錯誤原因,并改正:1) #include <iostream.h>2) template <class TYPE>3) class BASE 4) public:5) void show(TYPE obj)6) cout << obj << "n"7) ;8) template <class TYPE, class TYPE1>9) class DERIVED: public BASE<T

11、YPE1> 10) public:11) void show(TYPE obj1, TYPE1 obj2)12) cout << obj1 << "n"13) BASE:show(obj2);14) 15) 16) void main()17) DERIVED<char*, double> obj;18) BASE<double> *pBase = &obj;19) DERIVED<char*, double> *pDerived = pBase;/ pDerived指向obj對象20) obj.sh

12、ow("Pi is ", 3.14); 21) 三、 程序填空共16分,每空2分1. 在以下程序中,希望對成員函數(shù)void who()實現(xiàn)動態(tài)綁定,請?zhí)钕鄳恼Z句#include <iostream.h>class BASEpublic: cout<<BASEn;class DERIVED:public BASEpublic:void who()cout<<Derivationn;void main() *p;/ 定義指針pDERIVEDobj; p->who();/ 此時調用的是DERIVED 類中定義的who()2. 要求執(zhí)行下

13、面的程序輸出結果,請?zhí)顚戇m當?shù)恼Z句:Calling special version, (10,20)Calling generic version, (A,B)#include <iostream.h>template<class TYPE>TYPE max(TYPE k, TYPE t) cout<< "Calling generic version, (" << k << "," << t << ")n" ; return ; int max(in

14、t k, int t) cout<< "Calling special version, (" << k << "," << t << ")n" ; if (k>t)return k;elsereturn t; / 上述兩個max版本實現(xiàn)相同功能void main() ; ;3. 下面程序求正整數(shù)a和b之間的奇數(shù)之和。#include <iostream.h>void SumOddEven (int a, int b, )*odd = 0;for(; a&l

15、t;=b; a+)if (a%2)*odd+=a;void main() int a, b, sodd;Cout<<請輸入求和的范圍a,b:cin>>a>>b;while (a<0|b<0|b-a<=10)cout<<a或b不是正整數(shù),或者不滿足b-a<=10的條件,請重新輸入a和b的值:; cin>>a>>b; SumOddEven(a, b, );cout<<a<<和<<b<<之間的奇數(shù)之和為:<<sodd;四、 程序輸出(共25分)1

16、. 給出以下程序的輸出結果#include <iostream.h>int fib(int n)int result;cout << n << " "if (n < 2) result = 1; else result = fib(n - 1) + fib(n - 2);return result;int main()cout << fib(3) << "n"2. 給出以下程序的輸出結果#include <iostream.h>#include <string.h>

17、const int MAXLEN = 20;class PERSON public:PERSON(char* name = "Zhao", int salary = 300): salary(salary)strcpy(PERSON:name, name);cout << "Constructing Person " << name << "n"PERSON(const PERSON& other) / 拷貝構造函數(shù)strcpy(name,);salary= other.

18、salary;cout << "Copy constructing Person: " << name << "" << endl;virtual void show()cout << "Salary per month for Person " << name;cout << " is " << salary << " yuann"PERSON operator =(const PERS

19、ON& other)cout << "Calling Person operator =, set " << name;cout << " equal to " << << "" << endl;strcpy(name, );salary= other.salary;return *this;PERSON()cout << "Destructing Person " <<

20、 name << "n"protected:char nameMAXLEN+1;int salary;class EMPLOYEE: public PERSON /雇員類public:EMPLOYEE(char* name = "Qian", int salary = 200): PERSON(name, salary)cout << "Constructing Employee " << name << "n"virtual void show()cout <

21、< "Salary per week for Emplyee " << name;cout << " is " << salary << " yuann" ;EMPLOYEE()cout << "Destructing Employee " << name << "n"class PROFESSOR: public EMPLOYEE /教授類,每位教授都是一個雇員public:PROFESSOR(char*

22、 name = "Sun", int salary = 10):EMPLOYEE(name, salary), assistant("NULL",0)/設當前教授對象雇用名為NULL的助教cout << "Constructing Professor " << name <<"n"virtual void show()cout << "Salary per hour for Professor " << name;cout <&l

23、t; " is " << salary << " yuann"void setAssistant(PERSON ass)/指定該教授的助教是誰assistant = ass; PROFESSOR()cout << "Destructing Professor " << name << "n"protected:PERSON assistant;/ 每位教授都雇用了一名助教,助教是PERSON類的對象;void main()PERSON *personPtr

24、3;PERSONperson;EMPLOYEEemployee;PROFESSORprofessor;cout<<"-n"/輸出時只畫一條直線即可,/不必計算輸出多少個-號personPtr0 = &person;personPtr1 = &employee;personPtr2 = &professor;for (int i = 0; i < 3; i+) personPtri->show();cout<<"-n"professor.setAssistant(person);cout<<"-n"五、 程序設計24分1. 8分類屬類ARRAY描述一個動態(tài)數(shù)組。數(shù)組中的元素記錄在一個長度為n的數(shù)組X中,要求X根據(jù)使用時的實際長度n動態(tài)分配。ARRAY提供如下操作:² 賦值運算將一個ARRAY數(shù)組賦給另一個ARRAY數(shù)組;² 以友元形式重載了運算符+實現(xiàn)兩個ARRAY數(shù)組對應位置上的元素相加;² 求該ARRAY數(shù)組的最大值。ARRAY的用法如以下主程序所示。要求根據(jù)主程序中的應用,考慮ARRAY類應該提供什么功能,并給出ARRAY類界面的聲明類中聲明了什么成員,不必提供ARRAY的類實現(xiàn)不必定義類的成員函數(shù)。提示:定

溫馨提示

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

評論

0/150

提交評論