秋季C程序設(shè)計語言復(fù)習(xí)語音答疑_第1頁
秋季C程序設(shè)計語言復(fù)習(xí)語音答疑_第2頁
秋季C程序設(shè)計語言復(fù)習(xí)語音答疑_第3頁
秋季C程序設(shè)計語言復(fù)習(xí)語音答疑_第4頁
秋季C程序設(shè)計語言復(fù)習(xí)語音答疑_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2004年秋季C+程序設(shè)計語言語音復(fù)習(xí)題一、判斷分析題(正確的畫上,錯誤的畫上)1C+支持的多態(tài)性包括通過重載運算符和重載函數(shù)支持編譯時的動態(tài)多態(tài)性,以及通過虛函數(shù)支持運行時的靜態(tài)多態(tài)性?!?】2能訪問一個類CMyClass中的private成員的可以是類CMyClass的成員函數(shù),友元函數(shù)和公有派生類中的成員函數(shù)?!?】3語句“ int (*p)(int x, int y,float z);”說明了p是一個指向整數(shù)的指針?!?】4C+程序的內(nèi)存格局通常分為全局?jǐn)?shù)據(jù)區(qū)、代碼區(qū)、棧區(qū)和堆區(qū),malloc()、free()系統(tǒng)函數(shù)和new、delete算符都是從堆中進(jìn)行分配和釋放。【 】5現(xiàn)在有以

2、下語句:char * p1=“China”,“Japan”,“Korea”,“Russia”,“Vietnam”;char p2=“Hello,everyone”;int s1=sizeof (p1);int s2=sizeof(p2);int s3=strlen(p2); 則變量s1, s2, s3的值分別為20,15,14?!?】6如果一個類的所有對象都共享某一個變量,則應(yīng)當(dāng)將該變量定義為該類的static成員?!?】7在C+中用new分配的內(nèi)存空間,在不需要時一般用free將該空間釋放?!?】8C+中,如果條件表達(dá)式值為-1, 則表示邏輯為假?!?】9C+中的多態(tài)性就是指在編譯時,編譯器

3、對同一個函數(shù)調(diào)用,根據(jù)情況調(diào)用不同的實現(xiàn)代碼?!?】10能訪問一個類CMyClass中的private成員的可以是類CMyClass的成員函數(shù),友元函數(shù)和友元類中的成員函數(shù)?!?】二、程序填空題1以下函數(shù)完成求兩個數(shù)n1和n2的最大公約數(shù)。#include <iostream.h>int fac(int n1, int n2)int tmp;if( ) / n1 < n2tmp = n1;n1 = n2 ;n2 = tmp ;while( )/ n1 % n2 != 0 或 n1 % n2tmp = n1 % n2; n1 = n2 ; n2 = tmp;return n2;

4、2以下函數(shù)完成求表達(dá)式 的值,請?zhí)羁帐怪瓿纱斯δ堋loat sum( float x )float s=0.0;int sign=1;float t=1.0;for(int i=1; ; i+)/ i<=100t=t*x;s=s+ ;/ -sign*i/(t+sign*i)sign=-sign; ;/ return s3以下方陣類CSquare完成查找n行n列的二維int數(shù)組中兩對角線上最大元素的值。請你填空完成此功能。#include <iostream.h> class CSquare int *arr; /arr 為矩陣首地址 int num; /表示行數(shù)與列數(shù) p

5、ublic: CSquare(int *p,int n) / arr=p;num = n; / int FindMax() const ; int CSquare:FindMax() const int max; int i=0; int r,c,tmp; max=arr0; for(;i<num;i+) r=arri*num+i ; /(提示:r為第i行對角線上的一個元素值) / c=arri*num+(num-1-i); if(r>c) /(提示:c為第i行另一個對角線上的一個元素值)tmp=r;else tmp=c; if (max<tmp) max=tmp; retu

6、rn max; void main()int a55=20,-5,21,18,156,3,-6,-8,26,-3,10,7,74,200,0,11,94,3,239,11,-7,23,88,28,83; CSquare s(int*)a,5); int max = s.FindMax(); cout<<"max="<<max<<endl; /(提示:應(yīng)輸出:max=239)4以下是類CSort的定義, 完成對其成員p所指向的整數(shù)數(shù)組進(jìn)行從小到大排序,該數(shù)組的元素個數(shù)由num表示,請?zhí)羁胀晟圃擃惗x。#include <iostrea

7、m.h>class CSortint *p;int num;public:void Order();CSort(int *,int);void Disp();CSort:CSort(int *arry, int n):p(arry), num(n) void CSort:Order()int m, tmp;for(int i=0;i<num-1;i+)m=i;for( ;j<num;j+)/ int j=i+1if(pj<pm)m=j;if(m!=i)tmp=pi;pi=pm;pm=tmp;void CSort:Disp()for(int i=0;i<num-1;

8、i+)cout<<pi<<"," ;/ cout<<pi<<endl;三、閱讀程序題1寫出下面程序的運行結(jié)果。#include <iostream.h>void main()long fib(int g);long k;13 k=fib(7);cout<<k<<endl;long fib(int g)switch(g)case 0:return 0;case 1:case 2:return 1;return fib(g-1)+fib(g-2);1abcdefg2abcdefg3abcdefg

9、4abcdefg5abcdefg2寫出下面程序的運行結(jié)果。#include <iostream.h>#define N 5void main()typedef char str80;typedef str stringN;string s1="1abcdefg","2abcdefg","3abcdefg","4abcdefg","5abcdefg"for(int i=0;i<N;i+)cout<<*(s1+i)<<endl;3寫出下面程序執(zhí)行的結(jié)果。#i

10、nclude <iostream.h>class T97,a98,b99,cint i;char c;public:T(int x,char ch)i=x;c=ch;void show()cout<<i<<","<<c<<endl;void main()T t=T(97,a), T(98,b), T(99,c);for(int j=0;j<3;j+)tj.show();4寫出下面程序執(zhí)行的結(jié)果。#include <iostream.h>class Aint a;public:class BA 3B

11、 10int b;public:B(int i)b=i;void show()cout<<"B: "<<b<<endl;A(int k)a=k;void show()cout<<"A: "<<a<<endl;void main()A a1(3);a1.show();A:B b(10);b.show();5閱讀下面程序,寫出程序運行結(jié)果。#include <iostream.h>#include <math.h>template <class T>

12、class TaddT x,y;public:TAdd(T a, T b)sum1=30sum2=30.3x=a;y=b;T add()return x+y;void main()TAdd<int > ob1(10,20);TAdd<double> ob2(10.1, 20.2);cout<<”sum1=”<<ob1.add()<<endl;cout<<”sum2=”<<ob2.add()<<endl;6寫出下面程序的運行結(jié)果。#include <iostream.h>void main

13、()long fun(long num);120long n=12345;cout<<fun(n)<<endl;long fun(long num)long k=1;if(num<0)num*=-1;dok*=num%10;num/=10;while(num);return k;7寫出下面程序的運行結(jié)果。#include <iostream.h>void main()struct ST1char c4;char *s;a,dabc,defghi,mnohi,nos1="abc","def"struct ST2ch

14、ar *cp;ST1 ss1;s2="ghi","jkl","mno"cout<<s1.c0<<","<<*s1.s<<endl;cout<<s1.c<<","<<s1.s<<endl;cout<<s2.cp<<","<<s2.ss1.s<<endl;cout<<+s2.cp<<","<

15、;<+s2.ss1.s<<endl;8寫出下面程序的運行結(jié)果。#include <iostream.h>union Tunsigned int x;aAunsigned char c2;void set(int m)x=m;void show()cout.setf(ios:hex);cout<<x<<endl;void main()T t;t.set(0x4142);t.c0=a;t.show();9寫出下面程序執(zhí)行的結(jié)果#include<iostream.h>constructing nomallyconstructing w

16、ith a number:20display a number:0display a number:20destructingdestructingclass Samplepublic:        Sample();        Sample(int);        Sample();        void

17、display();    protected:        int x;Sample:Sample()x=0;    cout<<"constructing normallyn"Sample:Sample(int m)x=m;    cout<<"constructing with a number:"<<x<<endl;void Sample:

18、display()cout<<"display a number:"<<x<<endl;Sample:Sample()cout<<"destructingn"void main()Sample obj1;    Sample obj2(20);    obj1.display();    obj2.display();10寫出下面程序的運行結(jié)果。#include <iostream.h>class Tpub

19、lic:double x;double y;T(double i,double j)x=i;y=j;100,200150,250;void main()int T:*a=&T:x,&T:y;T t(100,200);T t2(150,250);for(int i=0;i<2;i+)cout<<t.*ai<<endl;for(i=0;i<2;i+)cout<<t2.*ai<<endl;四、編寫程序題1編寫一個應(yīng)用程序,其功能是利用虛函數(shù)計算三角形、正方形和圓形三種圖形的面積。參考答案:#include <iostr

20、eam.h>class baseprotected:int x,y;public:base(int i,int j)x=i;y=j;virtual void disp()=0;class triangle:public basepublic:triangle(int x,int y):base(x,y) void disp()cout<<"Area of Trangle is:"<<endl;cout<<x*y*0.5<<endl;class square:public basepublic:square(int x):

21、base(x,x) void disp()cout<<"Area of Square is:"<<endl;cout<<x*x<<endl;class circle:public basepublic:circle(int x):base(x,x) void disp()cout<<"Area of Circle is:"<<endl;cout<<x*x*3.1415926<<endl;void main()base *p;triangle t(20,20);

22、square s(20);circle c(20);p=&t;p->disp();p=&s;p->disp();p=&c;p->disp();2設(shè)計類模板用于實現(xiàn)對一個有序數(shù)組采用二分法查找指定元素的下標(biāo)(位置),并分別使用字符型數(shù)組和整型數(shù)組對其進(jìn)行測試。參考答案:#include <iostream.h>#define M 100template <class T> class SearchT arrM;int n;public:Search() Search(T v, int i)n=i;for(int j=0;j<

23、n;j+)arrj=vj;int seek(T c)int low=0,hight=n-1,mid;while(low<=hight)mid=(low+hight)/2;if(arrmid=c)return mid;else if(arrmid<c)low=mid+1;elsehight=mid-1;return -1;void disp()for(int i=0;i<n;i+)cout<<arri<<" "cout<<endl;void main()char a="cdefbkjolw"int b=

24、1,3,9,10,23,27,29,56,77,89;Search<char> ob1(a,10);Search<int> ob2(b,10);cout<<"char: "ob1.disp();cout<<"position of element 'k' is: "<<ob1.seek('k')<<endl;cout<<"int : "ob2.disp();cout<<"position of el

25、ement 56 is: "<<ob2.seek(56)<<endl;3編寫一個應(yīng)用程序,其功能是利用虛函數(shù)計算正方體、球體和圓柱體三種圖形的體積。參考答案:#include <iostream.h>class baseprotected:double r;public:base(double rd)r=rd;virtual double volume()=0;class cube:public basepublic:cube(double rd):base(rd) double volume()return r*r*r;class sphere:

26、public basepublic:sphere(double rd):base(rd) double volume()return 3.1415926*r*r*r*4/3;class cylinder:public basedouble h;public:cylinder(double ht,double rd):base(rd)h=ht;double volume()return 3.1415926*r*r*h;void main()base *p;cube c(5);sphere s(5);cylinder cy(3,5);p=&c;cout<<"Volume of cube is: "<<p->volume()<<endl;p=&s;cout<<"Volume of sphere is: "<<p->volume()<<endl;p=&cy;cout<<"Volume of cylin

溫馨提示

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

最新文檔

評論

0/150

提交評論