南航C++(A)試卷_第1頁
南航C++(A)試卷_第2頁
南航C++(A)試卷_第3頁
南航C++(A)試卷_第4頁
南航C++(A)試卷_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 第11頁(共11頁)本題分數30得 分一選擇題: (每題2分,共30分,請將正確答案寫在題號左邊)1在下列成對的表達式中,運算結果類型相同的一對是( ) A72和7.02.0 B72.0和72C7.02和72 D7.02.0和7.02 2能正確表示“當x的取值在1, 10和200, 210范圍內為真,否則為假”的表達式是( )A(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B(x>=1)|(x<=10)|(x>=200)|(x<=210)C(x>=1)&&am

2、p;(x<=10)|(x>=200)&&(x<=210)D(x>=1)|(x<=10)&&(x>=200)|(x<=210)3使用值傳遞方式將實參傳給形參,下列說法正確的是( ) A引用類型形參不分配內存空間,僅僅是實參的別名 B引用類型形參分配內存空間,形參與實參占用不同的內存空間C指針類型形參分配內存空間,形參接受實參傳遞的數值D指針類型形參不分配內存空間,僅僅是實參的別名4若有宏定義:#define MOD(x, y) x%y 則執行以下語句后輸出為( ) int z, a = 15, b = 100; z = M

3、OD(b, a); cout<< z + +; A11 B10 C6 D宏定義不合法5若有以下定義和語句,則對數組元素a12的正確引用為( )。 int a23, (*p)3; p=a; A(*(p+1)2 B*p12 C*(p+1)2 D*(p+1)+26內聯函數的特點是( )A減少代碼量,加快訪問速度 B減少代碼量,減緩訪問速度C增加代碼量,減緩訪問速度 D增加代碼量,加快訪問速度7C+類中定義的成員默認訪問屬性為( )Apublic BprivateCprotected Dfriend8類的私有成員可在何處被訪問( )A本類的成員函數中 B本類及派生類的成員函數中C通過對象名

4、在任何位置 D不可訪問9對類A,拷貝構造函數的原型是( )AA:A(const A&); BA:A(const A *); CA:A(const A); DA:A( ); 10下列關于析構函數描述正確的是( )A可以重載 B函數體中必須有delete語句C返回類型必須是void類型 D不能指定返回類型 11如果類A被聲明成類B的友元,正確的是( ) A類A的成員函數即為類B的成員函數B類B的成員函數即為類A的成員函數C類A的成員函數不可以訪問類B的成員D類B不一定是類A的友元12this指針存在的目的是( )A保證基類公有成員在派生類中可以被訪問B保證每個對象擁有自己的數據成員,但共享

5、處理這些數據成員的代碼C保證基類保護成員在派生類中可以被訪問D保證基類私有成員在派生類中可以被訪問13在公有繼承的情況下,允許派生類直接訪問的基類成員包括 ( ) A只能是公有成員 B公有成員和保護成員C公有成員、保護成員和私有成員 D只能是保護成員14下列關于虛函數的描述中,正確的是( ) A虛函數是一個static類型的成員函數B虛函數是一個非成員函數C基類中采用virtual說明一個虛函數后,派生類中相同原型的函數也是虛函數D派生類中的虛函數必須與基類中相同函數名的虛函數具有不同的參數個數或類型15下列關于運算符重載的描述中,正確的是( ) A運算符重載為成員函數時,若參數表中無參數,重

6、載的是一元運算符B一元運算符只能作為成員函數重載 C二元運算符重載為非成員函數時,參數表中有一個參數 DC+中可以重載所有的運算符本題分數24得 分二寫出下列程序的運行結果 (每題3分,共24分)1. #include <iostream.h>void main( ) int x=4 ; if ( x+ > 5) cout<< x ; else cout<< x-; 程序運行結果為: 。 2#include <iostream.h>void fun(int &x,int y,int *z) intt=y;x=*z;*z=t; voi

7、d main( )int a3=23,42,56;fun(a0,a1,&a2);cout << a0 << ", " << a1<< ", " << a2<<endl; 程序運行結果為: 。 3. #include <iostream.h>int dtoh (int c,int n)int i=0; while(n) ci+=n%16; n/=16; return(i);void main() int c20, n=698, i;i=dtoh (c,n);for(

8、i-;i>=0 ; i-) if (0<=ci&&ci<=9)cout <<char (ci+'0');else cout<<char(ci-10+'A'); 程序運行結果為: 。4. #include<iostream.h>#include<string.h>class Student char Num10; char *Name; int Score; public: Student(char *nump, char *namep, int score) if(nump) st

9、rcpy(Num, nump); else strcpy(Num, "");if(namep) Name=new charstrlen(namep)+1; strcpy(Name, namep);else Name=0;Score=score;cout<<"Constructor Called!n"Student( ) if(Name) delete Name;cout<<"Desturctor Called!n" void Show( )cout << Num <<'t'

10、;<< Name << 't' << Score << endl;void main( ) Student a("0409204", "George", 90);a.Show( );程序運行結果為: 。5.#include <iostream.h> class A int num1;static int num2;public:A() num1=1; num2-; cout<<num1<<'t'<<num2<<end

11、l;static int getnum(A &n1)return n1.num1+num2;int A:num2=5;void main() A n1,n2; cout<<A:getnum(n1)<<endl;程序運行結果為: 。6. #include <iostream.h> class Aprotected: int x;public:A(int a=0)x=a;void Show( ) cout << "A:x=" << x << 'n' ; ;class B : publ

12、ic Aprotected:int x; public:B(int a,int b) :A(a) x=b;void Show( ) cout<<"B:x="<<x<<endl; ;void main(void)B b(2,8); b.A:Show( ); b.Show( ); 程序運行結果為: 。7.#include <iostream.h>class Sampleint x, y;public: Sample( int a=0, int b=0)x=a; y=b; cout<<x<<',

13、9;<<y<<" default constructorn"Sample( Sample &s )x=s.x; y=s.y;cout<<x<<','<<y<<" copy constructorn"Sample( ) cout<<x<<','<<y<<" destructorn" void add( )x+=10; y+=10; ;void main( )Sample a (1

14、, 2);Sample b=a; Sample *ptr=new Sample(2,3);ptr->add( ); delete ptr;程序運行結果為: 。8.#include <iostream.h>class A int x;public: A() x=10; virtual void print() cout<<”x=”<<x<<t; ;class B:public A int y;public:B() y=20; void print() cout<<”y=”<<y<<t; ;class C:p

15、ublic A int z;public:C() z=30; void print() cout<<”z=”<<z<<n; ;void main() A a,*pa; B b; C c;pa=&a; pa->print(); pa=&b; pa->print(); pa=&c; pa->print(); 程序運行結果為: 。 本題分數16得 分三完善程序(每空2分,共16分)1以下程序是用選擇法對對數組a中的元素按由小到大順序排序。請填空:#include <iostream.h>void sort(in

16、t a,int n) int i,j,p, t; for(i=0;i<n-1;i+) (1) ; for( j=i+1; j<n; j+) if( (2) ) p=j;if (p!=i) t=ai;ai=ap;ap=t; void main() int a10=2,6,9,4,1,7,14,18,56,5, i,n=10; (3) ; for(i=0;i<n;i+) cout<<ai<<" " 2. 請完善程序,實現鏈表操作:#include <iostream.h>class Nodeint data;(4) ;pub

17、lic:friend class List;class List Node *head;public:List(int d)head = new Node;head->data = d;head->next = NULL;List( )head = NULL; void print( ) /輸出鏈表Node *p;p=head;while(p!=NULL)cout<<p->data<<'t'(5) ;List()while(head)Node *p=head;head = head->next;delete p;void main

18、()List a(100);a.print();3.將數值1100及其平方根寫入文件 sqrttable.txt #include <iostream.h>(6) #include <math.h>void main( )double x;ofstream out; (7) ; for(x=1; x<=100; x+)out<<x<<'t'<<sqrt(x)<<endl; (8) ; 四編程題(每題10分,共30分)1編寫一個函數void my_strcpy(char s1,char s2),將數組s

19、2中的字符串復制到數組s1中。要求:(1)必須自己編寫函數實現字符串復制,不可調用系統strcpy函數。(2)在主函數中輸入兩個字符串,調用my_strcpy函數實現字符串復制,并在主函數中將復制后的字符串s1的內容輸出。2定義平面點Point類,用友元函數分別實現點類的前置+和后置+運算符的重載。 要求:(1)定義平面點類(Point):私有數據成員:int x,y; 構造函數:完成點的初始化友元函數:實現前置+運算符的重載友元函數:實現后置+運算符的重載函數:在屏幕上顯示點的坐標(2)在主函數中建立4個Point對象p1,p2,p3,p4。p1的默認值為(2,3),在生成p2對象的時候,使

20、用p1初始化p2對象。分別使用重載運算符計算+p1和p2+的值,將計算結果先后賦值給p3和p4對象,最后分別輸出p1,p3和p2,p4的值。3定義直角坐標系上的一個點Point類,并作為基類,派生出描述一個直線Line類(兩點坐標確定一條直線),再派生出一個矩形Rectangle類(左上角和右下角坐標確定一個矩形)。在主函數中計算并且輸出直線的長度和矩形的面積。各類成員的具體要求如下:點類(Point)(1)保護數據成員:int x,y;(2)構造函數:完成點的初始化。線類(Line):公有繼承點類(1)保護數據成員:int x1,y1; 第二個點的坐標(2)構造函數:完成點的初始化。(3)函

21、數:float LineLen(); 求線的長度矩形類(Rectangle):公有繼承點類(1)保護數據成員:int x1,y1; 右下角的坐標(2)各類構造函數:完成點的初始化。(3)函數:float Area(); 求矩形的面積一、 選擇題(每題2分,共30分)1-5 DCABA 6-10 DBAAD 11-15 DBBCA二、試寫出下列程序的輸出結果(每題3分,共24分)1)5 2)56,42,42 3)2BA 4) Constructor Called!0409204 George 90Desturctor Called! 5)1 46)A:x=2 1 3B:x=8 47)1,2 de

22、fault constructor1,2 copy constructor2,3 default constructor12,13 destructor1,2 destructor1,2 destructor 8)x=10 y=20 z=30三、填空題(每題2分,共16分)(1) p=i(2) aj<ap(3)sort(a,n) 或sort(a,10) (4) Node *next (5) p = p->next (6) #include <fstream.h> (7) out.open("sqrttable.txt ") (8) out.close

23、()四、編程題(每題10分,共30分)1.#include <iostream.h>void my_strcpy(char s1,char s2) int i;for(i=0;s2i!='0'i+) s1i=s2i;s1i='0' void main()char a20,b10; cin>>a>>b; my_strcpy(a,b); cout<<"a="<<a<<endl; 2. #include <iostream.h>class Pointint x,y; public: Point(int a=0,int b=0) x = a;y = b;friend Point operator +(Point &m) return Point(+m.x,+m.y);friend Point operator +(Point &m,int) Point t=m;m.x+;m.y+;return t;void Show()cout<<"x="<<x<

溫馨提示

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

評論

0/150

提交評論