2004年秋季《C++程序设计语言》复习语音答疑_第1页
2004年秋季《C++程序设计语言》复习语音答疑_第2页
2004年秋季《C++程序设计语言》复习语音答疑_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2004年秋季C+程序设计语言语音复习题一、判断分析题(正确的画上“,错误的画上X)1 . C+支持的多态性包括通过重载运算符和重载函数支持编译时的动态多态性,以及通过虚函数支持运行 时的静态多态性。【X】2. 能访问一个类 CMyClass中的private 成员的可以是类 CMyClass的成员函数,友元函数和公有派生类中 的成员函数。【X】3. 语句"int(*p)(int x, int y, float z);”说明了 p是一个指向整数的指针。【X】4. C+程序的内存格局通常分为全局数据区、代码区、栈区和堆区,malloc()、free()系统函数和new、delete算符

2、都是从堆中进行分配和释放。【V】5. 现在有以下语句:char * p1=“ China ” , “ Japan”,“ Korea” , “ Russia ”, “ Vietnam ” ;char p2=“Hello,everyone ” ;int s1=sizeof (p1);int s2=sizeof(p2);int s3=strle n( p2);则变量s1, s2, s3的值分别为20, 15, 14。【V】6如果一个类的所有对象都共享某一个变量,则应当将该变量定义为该类的static 成员。【V】7 .在C+冲用new分配的内存空间,在不需要时一般用free将该空间释放。【X】8.

3、C+中,如果条件表达式值为-1 ,则表示逻辑为假。【X】9. C+中的多态性就是指在编译时,编译器对同一个函数调用,根据情况调用不同的实现代码。【X】10. 能访问一个类 CMyClass中的private 成员的可以是类 CMyClass的成员函数,友元函数和友元类中的 成员函数。【V】、程序填空题1 .以下函数完成求两个数n1和n2的最大公约数。#in clude <iostream.h>int fac(i nt n1, i nt n2) int tmp;if()/ n1 < n2 tmp = n1;n1 = n2 ;n2 = tmp ;或 n1 % n2while()/

4、 n1 % n2 != 0 tmp = n1 % n2; n1 = n2 ; n2 = tmp;return n2;2 .以下函数完成求表达式sum(x)1234x 1 x22 x33 x441)i-7xi 1 (1) i100x100100的值,请填空使之完成此功能。float sum( float x ) float s=0.0;int sig n=1; float t=1.0;for(int i=1;i+)/i<=100t=t*x; s=s+;/-sig n*i/(t+sig n*i)sig n=-sig n; ;/return s3 .以下方阵类CSquare完成查找n行n列的二

5、维int数组中两对角线上最大元素的值。请你填空完成此功 能。#in elude <iostream.h>class CSquare int *arr; arr int num; /为矩阵首地址 表示行数与列数public:CSquare(i nt *p,int n)/arr=p;num = n;/int Fin dMax() const ;int CSquare:Fi ndMax() const int ma x;int i=0;max=arr0;for(;i< nu m;i+)r=arri* nu m+i ; /if(r>c)/int r,c,tmp;(提示:r为第i

6、行对角线上的一个元素值)/ c=arri*num+(num-1-i);(提示:c为第i行另一个对角线上的一个元素值)tmp=r;elsetmp=c;if (max<tmp)max=tmp;return ma x;void mai n()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(i nt*)a,5);int max = s.Fin dMax();cout<<"max="<<max<<e ndl;

7、/ (提示:应输出:max=239)num4以下是类CSort的定义,完成对其成员p所指向的整数数组进行从小到大排序,该数组的元素个数由表示,请填空完善该类定义。#in elude <iostream.h>class CSort int *p;int num;public:void Order();CSort(i nt *,i nt);void Disp();CSort:CSort(int *arry, int n):p(arry), num(n) void CSort: :Order() int m, tmp;for(i nt i=0;i <nu m-1;i+) m=i;f

8、or( um;j+)/ int j=i+1if(pj<pm)m=j;if(m!=i) tmp=pi;pi=pm; pm=tmp;void CSort:Disp()for(i nt i=0;i< nu m_1;i+)cout<<pi<<",";/ cout<<pi<<endl; 三、阅读程序题1 写出下面程序的运行结果。#in clude <iostream.h>void mai n()long fib(i nt g);long k;13k=fib 7); cout<<k<<e n

9、dl;long fib(i nt g) switch(g) case 0: retur n 0;case 1:case 2: retur n 1;return fib(g_1)+fib(g_2);2 写出下面程序的运行结果。#in elude <iostream.h>#define N 5void mai n() typedef char str80; typedef str stri ngN;1abcdefg 2abcdefg 3abcdefg 4abcdefg 5abcdefgstring s仁"1abcdefg","2abcdefg",

10、"3abcdefg","4abcdefg","5abcdefg"for(int i=0;i<N;i+) cout<<*(s1+i)<<e ndl;3 写出下面程序执行的结果。#in clude <iostream.h>class Tint i;char c;public:T(i nt x,char ch) i=x;c=ch;void show()cout<<i<<","<<c<<e ndl;void mai n() T t=T

11、(97,' a' ), T(98,' b' ), T(99,for(i nt j=0;j<3;j+)tj.show();4 写出下面程序执行的结果。#in clude <iostream.h>class Aint a;public:class Bint b;public:B(int i) b=i;void show() cout<<"B: "<<b<<e ndl;A(i nt k)97, a98, b99, cc' );A 3B 10sum1=30 sum2=30.3120 a=k

12、;void show() cout<<"A: "<<a<<e ndl;;void mai n() A a1(3);a1.show();A:B b(10); b.show();5 阅读下面程序,写出程序运行结果。#in clude <iostream.h>#in clude <math.h> template <class T> class Tadd T x,y;public:TAdd(T a, T b) x=a;y=b;T add() retur n x+y;void mai n() TAdd<i

13、 nt > ob1(10,20);TAdd<double> ob2(10.1,20.2); cout<< ” sum1=” <<ob1.add()<<endl; cout<< ” sum2=” <<ob2.add()<<endl;6 写出下面程序的运行结果。#in clude <iostream.h>void mai n()long fun (I ong nu m);long n=12345; cout<<fu n(n)<<en dl;long fun (I ong n

14、um) long k=1;if(n um<0)nu m*=-1;dok*=num%10;num/=10;while( nu m); return k;7 写出下面程序的运行结果。#in elude <iostream.h>void mai n() struct ST1 char c4; char *s;s仁"abc","def"struct ST2 char *cp;ST1 ss1;s2="ghi","jkl","m no"cout<<s1.c0<<&q

15、uot;,"<<*s1.s<<e ndl; cout<<s1.c<<","<<s1.s<<e ndl; cout<<s2.cp<<","<<s2.ss1.s<<e ndl;cout<<+s2.cp<<","<<+s2.ss1.s<<e ndl; 8 写出下面程序的运行结果。#in clude <iostream.h>union Tun sig ne

16、d int x;un sig ned char c2;void set(i nt m) x=m;void show() cout.setf(ios:hex);cout<<x<<e ndl;void mai n() T t;t.set(0x4142);t.c0=' a't.show();9 写出下面程序执行的结果#in clude<iostream.h>class Sample public:Sample();Sample(i nt);Sample();void display();protected:int兀;aAa,d abc,def gh

17、i,m no hi, nocon struct ing no mallycon struct ing with a nu mber:20 display a nu mber:0 display a nu mber:20 destruct ingdestruct ingSample:Sample()x=0;cout<<"c on struct ing n ormallyn"Sample:Sample(i nt m) x=m;cout<<"c on struct ing with a nu mber:"<<x<<

18、;e ndl;void Sample:display() cout<<"display a nu mber:"<<x<<e ndl;Sample:Sample()cout<<"destruct ingn"void mai n() Sample obj1;Sample obj2(20);obj1.display();obj2.display(); 10写出下面程序的运行结果。#in clude <iostream.h> class T public: double x; double y; T(d

19、ouble i,double j) x=i; y=j;100, 200150, 250;void mai n()int T:*a= &T:x,& T:y;T t(100,200);T t2(150,250);for(i nt i=0;i<2;i+) cout<<t.*ai<<e ndl;for(i=0;i<2;i+) cout<<t2.*ai<<e ndl;四、编写程序题1 编写一个应用程序,其功能是利用虚函数计算三角形、正方形和圆形三种图形的面积。参考答案:#in clude <iostream.h> c

20、lass base protected:int x,y;public: base(int i,int j) x=i; y=j;virtual void disp()=0;class triangle:public base public: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 base public:square(int x):ba

21、se(x,x) void disp()cout<<"Area of Square is:"<<endl;cout<<x*x<<endl;class circle:public base public: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设计类模板用于实现对一个有序数组采用二分法查找指定元素的下标(位置),并分别使用字符型数组 和整型数组对其进行测试。 参考答案:#include <iostream.h>#define M 100template <class T> class Search T 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;else hight=mid-1;return -1;void disp()for(int i=0;i<n;i+)cout<<arri<<" "cout<<endl;void main() char a="cdefbkjolw&

24、quot;int b=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<<"p

25、osition of element 56 is: "<<ob2.seek(56)<<endl; 3编写一个应用程序,其功能是利用虚函数计算正方体、球体和圆柱体三种图形的体积。 参考答案:#include <iostream.h>class base protected: double r;public: base(double rd) r=rd; virtual double volume()=0;class cube:public base public: cube(double rd):base(rd) double volume() ret

26、urn r*r*r;class sphere:public base public: sphere(double rd):base(rd) double volume() return 3.1415926*r*r*r*4/3;class cylinder:public base double 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 cylinder is: "<<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论