華僑大學(xué)C++試卷_第1頁
華僑大學(xué)C++試卷_第2頁
華僑大學(xué)C++試卷_第3頁
華僑大學(xué)C++試卷_第4頁
華僑大學(xué)C++試卷_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用文檔華僑大學(xué) 面向?qū)ο蟪绦蛟O(shè)計(jì)(二) 試卷b 班 級(jí) 學(xué) 號(hào) 姓 名 成 績 注意:請(qǐng)將所有答案寫在答卷上!一、填空題(15分,每小題1分)1. 如果用戶自定義的函數(shù)在調(diào)用點(diǎn)之后再定義,則在調(diào)用點(diǎn)之前,必須用(1)對(duì)被調(diào)函數(shù)進(jìn)行說明。2. 函數(shù)的遞歸調(diào)用可以有直接遞歸調(diào)用和(2)遞歸調(diào)用。3. 靜態(tài)全局變量的作用域是(3) 。4. 若將某函數(shù)定義為靜態(tài)型(static),則該函數(shù)只能被(4)所調(diào)用。5. main(int argc,char *argv)函數(shù)中的參數(shù)argv用于(5) 。6. (6)提供了一種在程序內(nèi)和程序之間組織和使用名稱的技術(shù)。7. 用“const 類型標(biāo)識(shí)符&

2、 引用名=目標(biāo)變量名;”聲明引用,此處const的含義是(7) 。8. c+語言中,(8)定義一個(gè)結(jié)構(gòu)體類型,該結(jié)構(gòu)類型中包含指向自身結(jié)構(gòu)類型的指針成員。(填“可以”或“不可以”)9. 若有類型定義“typedef char string80; string s;”,則s的類型為(9) 。10. 類的對(duì)象可以直接訪問類中的(10)成員。(private/protected/public)11. 在定義類時(shí),若沒有為類提供析構(gòu)函數(shù),則編譯系統(tǒng)會(huì)自動(dòng)為該類創(chuàng)建一個(gè)默認(rèn)的析構(gòu)函數(shù),其形式為(11) 。12. 拷貝構(gòu)造函數(shù)的功能是實(shí)現(xiàn)對(duì)象值的拷貝,通過將一個(gè)同類對(duì)象的值拷貝給一個(gè)新對(duì)象,來完成對(duì)新對(duì)象

3、的初始化。定義一個(gè)拷貝構(gòu)造函數(shù)的方式是(12) 。13. 當(dāng)希望一個(gè)類(如a)可以存取另一個(gè)類(如b)的私有成員時(shí),可以將該類(a)聲明為另一類(b)的友元類,友元類(a)的所有成員函數(shù)都可視為該類(b)的(13)函數(shù)。14. 在靜態(tài)成員函數(shù)的實(shí)現(xiàn)中不能直接引用類中說明的非靜態(tài)成員,但可以引用類中說明的(14)成員。15. c+支持兩種不同類型的多態(tài):一種是編譯時(shí)的多態(tài),另一種是(15)時(shí)的多態(tài)。二、選擇題(18分,每小題2分)1. 進(jìn)行文件操作時(shí),需要包含(1)_文件。 a) iostream b) fstream c) stdio.h d) stdlib.h 2. 若有定義:enum we

4、ekday sun=7,mon=1,tue,wed,thu,fri,sat day;,以下正確的語句是(2) 。a) mon+; b)int k=mon+1; c) day=7; d)day+;3. 若有定義:int (*p)(int,int); ,則錯(cuò)誤的敘述是(3) 。a) p是一個(gè)指向返回值類型為int,帶有兩個(gè)int型參數(shù)的函數(shù)的指針b) 該類型的變量p可以作為另外一個(gè)函數(shù)的參數(shù)c) 若已定義了函數(shù)int sum(int x,int y),則p可以指向函數(shù)sum。d) p可以作自增運(yùn)算p+4. 若已有定義:struct student char *name,int age,float

5、mark;s8; student* p=s;,以下語句(組),正確的是(4) 。a) cin>>>>s0.age>>s0.mark; b) cin>>p->age>>p->mark;p->name="liuhua" c) =new char10;strcpy(p->name, "liuhua"); d) p->name=new char10; strcpy(p->name, "liuhua");5若有定義:int

6、 a,b;,下面引用變量的聲明中,(5)是正確的。a) int& ra=a; int& &rra=ra; b) int& y=10; c) int& z=int; d) int &x=a; int &y=b;6 對(duì)于下面定義的類myclass,在函數(shù)f中可以將對(duì)象obj的成員data值修改為50的語句是(6)。class myclass public: myclass(int x) data=x; void setnum(int value) data=value; private: int data;void f(void) mycla

7、ss obj(45),*ptr=&obj; (6) a) obj.data=50; b)obj.myclass(50); c)ptr->setnum(50); d)ptr->data=50;7.下面敘述正確的是(7) 。a) 基類的protected成員不能被派生類的成員函數(shù)訪問b) 基類的public成員能被派生類的對(duì)象直接訪問c) 基類的protected成員在派生類中可能是privated的d) 基類的private成員不能被基類的成員函數(shù)訪問8. 構(gòu)造函數(shù)不具備的特征的是 (8) 。 a) 構(gòu)造函數(shù)的函數(shù)名與類名相同 b)構(gòu)造函數(shù)可以重載 c) 構(gòu)造函數(shù)必須有返回值

8、類型 d)構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)9. 下面敘述錯(cuò)誤的是(9) 。a) 基類指針可以指向派生類對(duì)象 b) 基類指針可以指向基類對(duì)象c) 派生類指針可以指向派生類對(duì)象 d) 派生類指針可以指向基類對(duì)象 三、閱讀程序題(45分)1.閱讀下面程序,給出程序的運(yùn)行結(jié)果。(15分,每小題5分)1) #include<iostream>using namespace std;void fun(int x,int *py,int& z) x+; (*py)-; z*=2; cout<<"x="<<x<<","&l

9、t;<"*py="<<*py<<","<<"z="<<z<<endl;void main(void) int a=1,b=2,c=3; fun(a,&b,c); cout<<"a="<<a<<","<<"b="<<b<<","<<"c="<<c<<endl;

10、2) #include<iostream>using namespace std;void p(int w) if (w=0) return; p(w-1); cout<<w; p(w-1); void main(void) p(3); 3)#include<iostream>using namespace std;void print(int,int,int (*p_fun)(int,int);int add(int,int);int substract(int,int);void main(void) int a=10,b=-20,choice; int

11、(*p)(int,int); cout<<"enter your choice:" cin>>choice; switch(choice) case 1: p=add; break; default: p=substract; print(a,b,p);int add(int x,int y) return x+y; int substract(int x,int y) return x-y; void print(int i,int j,int (*p_fun)(int,int) cout<<"the result is &q

12、uot;<<p_fun(i,j)<<endl; 程序運(yùn)行時(shí):enter your choice:12.閱讀下面程序,回答相關(guān)問題。(30分)1)(7分)#include <iostream>using namespace std;struct studentint num;char name20;char sex;int age;void main(void) student* fun(student *,int);student stu= 11,"lilin",'m',18,3,"sunny",

13、9;m',24, 2,"zhao",'m',20, 4,"liu yanhong",'f',30 ;int size=sizeof(stu)/sizeof(student);student *p=fun(stu,size);cout<<p->num<<'t'<<p->name<<'t'<<p->age<<endl;student* fun(student *s, int n) /問題a和bint

14、 index=0,i;for(i=1;i<n;i+)if(si.num>sindex.num) index=i;return s+index;a) (3分)給出函數(shù)fun()的功能;b) (4分)若將函數(shù)student* fun(student *s, int n)的返回值類型改為student& ,要完成相同的功能,給出源程序中其它需要修改的語句并作相應(yīng)的修改。2)(6分)#include<iostream>using namespace std;class student char* name; int age; float score; public: s

15、tudent(char* n,int a,float s):age(a),score(s) cout<<"constructing."<<n<<endl; name=new charstrlen(n)+1; strcpy(name,n); student() cout<<"destructing."<<name<<endl; delete name;void main(void) student s("liu",18,86.5); student *p_st1=n

16、ew student("chen",18,86.5); delete p_st1; /問題b)a)(4分)給出程序的運(yùn)行結(jié)果; b)(2分)若去掉語句delete p_st1;,程序運(yùn)行結(jié)果會(huì)不同嗎?3)(9分)#include<iostream>using namespace std;class point private: char *name; float x,y;public: point(char* s,float a,float b) x=a;y=b;name=new charstrlen(s)+1;strcpy(name,s); cout<&

17、lt;"initializing point: "<<name<<", x="<<x<<" ,y="<<y<<endl; point(point &p); float getx() return x; float gety() return y; void show() cout<<"name:"<<name<<", x="<<x<<",y=&qu

18、ot;<<y<<endl; point() cout<<"deleting point: "<<name<<", "<<x<<","<<y<<endl; delete name; ;class linepoint p1,p2;public:line(char* p1name,float x1,float y1,char* p2name,float x2,float y2):p1(p1name,x1,y1),p2(p2name,x

19、2,y2)cout<<"line constructor."<<endl;line()cout<<"line destructor."<<endl;point:point(point &p) /問題b name=new charstrlen()+1; strcpy(name,); x=p.x; y=p.y; cout<<"coping point: "<<<<","<<x<

20、;<","<<y<<endl;void fun(point p) p.show(); void main(void) point a("obja",12,24); fun(a); line l1("p1",1,2,"p2",3,4);a)(6分)給出程序的運(yùn)行結(jié)果;b)(3分)給出拷貝構(gòu)造函數(shù)point(point &p)的功能。是否可以去掉該函數(shù)?4)(8分)#include<iostream>using namespace std;class basepubli

21、c:int bvalue;base(int v)bvalue=v;cout<<"base constructor."<<endl;int getbvalue() return bvalue; ;class d1:public basepublic:int d1value;d1(int v,int b):base(v)d1value=b;cout<<"d1 constructor."<<endl;int getd1value() return d1value; ;class d:public d1public

22、 :int dvalue;int getdvalue() return dvalue; d(int v1,int v2,int a):d1(v1,v2)dvalue=a;cout<<"d constructor."<<endl;void main(void)d obj(1,2,3);cout<<obj.getdvalue()<<endl; cout<<obj.getbvalue()<<endl; /問題b) cout<<obj.getd1value()<<endl;a)(6分)給

23、出程序的運(yùn)行結(jié)果;b)(2分)能否將表達(dá)式obj.getbvalue()改為obj.bvalue?四、編程題(22分)1. 一個(gè)簡(jiǎn)單分?jǐn)?shù)類的結(jié)構(gòu)如下,請(qǐng)補(bǔ)充相應(yīng)代碼,使之完成程序功能。#include<iostream.h>int gcd(int m,int n) /(1)完成求兩個(gè)數(shù)的最大公因數(shù)(5分) ?class fractionalnumber /分?jǐn)?shù)類的定義int numerator; /分子int denominator; /分母public:fractionalnumber(int n=0,int d=1) /完成構(gòu)造函數(shù)的實(shí)現(xiàn)(5分)?fractionalnumbe

24、r() cout<<"destructor is called."<<endl;fractionalnumber(const fractionalnumber& x)/拷貝構(gòu)造函數(shù)numerator=x.numerator;denominator=x.denominator;simplify();cout<<"copy constructor is called."<<endl;void simplify(void) /對(duì)分?jǐn)?shù)的分子和分母進(jìn)行化簡(jiǎn)int g=gcd(denominator,numer

25、ator);numerator/=g;denominator/=g;void output() cout<<numerator<<"/"<<denominator<<endl; /分?jǐn)?shù)的輸出void add(const fractionalnumber& x) /分?jǐn)?shù)的加法(5分)?friend fractionalnumber operator+(fractionalnumber& num1, fractionalnumber& num2); /友元函數(shù)的聲明;/類定義結(jié)束 fractionalnum

26、ber operator+(fractionalnumber& num1,fractionalnumber& num2)int nresult,dresult;dresult=num1.denominator*num2.denominator;nresult=num1.numerator*num2.denominator+num1.denominator*num2.numerator;return fractionalnumber(nresult,dresult); void main(void)/設(shè)計(jì)測(cè)試程序,創(chuàng)建類對(duì)象,使用output()、add()和運(yùn)算符+(7分) ?

27、/end of main()華僑大學(xué) 面向?qū)ο蟪绦蛟O(shè)計(jì)(二) 答卷姓 名 學(xué)號(hào) 成績 一、填空題(15分,每小題1分)(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12)(13) (14) (15)二、選擇題(18分,每小題2分)(1) (2) (3) (4) (5) (6) (7) (8) (9) 三、閱讀程序題(45分)1.閱讀下面程序,給出程序的運(yùn)行結(jié)果。(15分,每小題5分)1) 運(yùn)行結(jié)果:2)運(yùn)行結(jié)果:3)運(yùn)行結(jié)果:2.閱讀下面程序,回答相關(guān)問題。(30分)1)(7分)a) (3分)函數(shù)fun()的功能:b) (4分)需要修改:2)(6

28、分)a)(4分)運(yùn)行結(jié)果:b)(2分)3)(9分)a)(6分)運(yùn)行結(jié)果:b) (3分)4)(8分)1)(6分)運(yùn)行結(jié)果:2)四、編程題(22分)1. 一個(gè)簡(jiǎn)單分?jǐn)?shù)類的結(jié)構(gòu)如下,請(qǐng)補(bǔ)充相應(yīng)代碼,使之完成程序功能。int gcd(int m,int n) /(1)完成求兩個(gè)數(shù)的最大公因數(shù)(5分) fractionalnumber(int n=0,int d=1) /完成構(gòu)造函數(shù)的實(shí)現(xiàn)(5分)void add(const fractionalnumber& x) /分?jǐn)?shù)的加法(5分)void main(void)/設(shè)計(jì)測(cè)試程序,創(chuàng)建類對(duì)象,使用output()、add()和運(yùn)算符+(7分)

29、/end of main()參考答案一、填空題(15分,每小題1分)(1)函數(shù)原型 (2)間接 (3)定義它所在的源程序文件 (4)定義該函數(shù)的源程序所在文件的其他函數(shù) (5)指針數(shù)組中各元素分別指向命令行中的各個(gè)字符串(6)命名空間(7)引用的目標(biāo)變量是常量 (8)可以 9.字符數(shù)組 10.public 11.類名 12類名(const 類名& 對(duì)象名) 13友元函數(shù) 14.靜態(tài) 15.運(yùn)行二、選擇題(18分,每小題2分)(1)b (2)b (3)d (4)d (5)d (6)c (7)c (8)c (9)d三、閱讀程序題(45分)1.閱讀下面程序,給出程序的運(yùn)行結(jié)果。(15分,每小題5分)1) 2) 1 2 1 3 1 2 13) 2.閱讀下面程序,回答相關(guān)問題。(30分)1)(7分)a)函數(shù)返回最大學(xué)號(hào)的學(xué)生指針;b)需

溫馨提示

  • 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)論