《VC程序设计》期末复习题集(学生用).doc_第1页
《VC程序设计》期末复习题集(学生用).doc_第2页
《VC程序设计》期末复习题集(学生用).doc_第3页
《VC程序设计》期末复习题集(学生用).doc_第4页
《VC程序设计》期末复习题集(学生用).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

程序设计(VC+)考试试卷一选择题(在A、B、C、D中选择一个正确的,每题1分,共30分。用答题纸答题,二、填空题(每个空格1分,共30分。请将答案填写在答题纸的相应答题号内,每个答案只占一行)基本概念题,共5分1. 执行语句coutx86082n;后,输出结果为 x86 。2. 用new运算符申请动态对象时,系统将自动调用该对象的 构造函数。3. 定义内联函数的方法是在函数的返回值类型之前增加关键字 inline 。4. 在多重继承时,若欲使公共基类只在派生类中产生一个拷贝,则应在派生类中将该基类用关键字 virtual 。5. 在C+的I/O流类库中,预定义了4个流,即cin、cout、cerr和clog,其中 cerr和clog 不可重定向。阅读程序题,共13分6. 程序(2分) #include int m33= 1, 2, 3 , n33= 1, 2, 3 ; void main(void) coutm10+n00nm01+n10n; 程序的输出第一行是 3 ,第二行是 0 。7. 程序(2分) #include int f(char *s) char *p=s; while(*p) p+; return p - s; void main(void) coutf(“ABCDEF”); 程序的输出是 6 ,函数f的功能是 求字符串的长度 。8. 程序(2分) #include void f(int *s) static int j; do sj+=sj+1; while(+j2); void main(void) int k, a10=1, 2, 3, 4, 5;for(f(a),k=0; k5; k+) coutak; coutendl; for(f(a),k=0; k5; k+) coutak; coutendl; 程序输出的第一行是 35345 ,程序输出的第二行是 35745 。9. 程序(3分) #include int k=1; void f(int m) m+=k; k+=m; char k=B; cout k - A n; coutm,kn; void main(void) int i=4; f(i); couti,kn; 程序的输出第一行是 1 ,第二行是 5,6 ,第三行是 4,6 。10. 程序(2分) #include class A protected: int x; public: int& Access() return x; ; class B protected: int x; public: int& Access() return x; ; class C:public A,public B int y; public:C(int a,int b,int c) A:x=a; B:x=b; y=c; int& Accessy() return y; ; class D:public C int z; public: D(int a,int b,int c,int d):C(a,b,c) z=d; int& Accessz() return z; ; void main() D d(35,100,300,500);d.A:Access()+=20; d.B:Access()+=d.B:Access();coutd.A:Access(),d.B:Access()n;coutd.Accessy(),d.Accessz()n; 程序的输出第一行是 55,200 ,第二行是 300,500 。11. 程序(2分) #include class Shape public: Shape() virtual int Area()=0; ; class Circle:public Shape int r; public: Circle(int c) r=c; int Area() return int( 3.1415*r*r); ; class Rectangle:public Shape int h,w; public: Rectangle(int c, int d) h=c; w=d; int Area() return h*w; ; void fun(Shape &s) couts.Area()endl; void main() Circle c(4);fun(c); Rectangle r(10,2); fun(r); 程序的输出第一行是 50 ,第二行是 20 。完善程序题,共12分12. 下面的程序是统计学生中A类学生与B类学生各多少。A类学生的标准是平均分在80分以上,其余都是B类学生。程序(5分) #include int& level( int grade或int *grade ,int size, int &tA , int&tB ) int i,sum; for(i=0,sum=0;i=80) return tA; else return tB; void main() int a4=60,80,90,75,75,85,65,77,80,88,90,98, 89,100,78,81,62,68,69,75,86,85,77,91; int i,A=0,B=0; for(i=0;isizeof(a)/ sizeof(a0) ;i+) level(ai,4,A,B)+; coutA类学生人数为Aendl; coutB类学生人数为Bendl; 13. 以下程序中,数组类DArr通过重载运算符“”实现数组元素的顺序查找。 顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;否则返回-1。#includeclass DArrint *a,n;/分别为动态数组的指针和元素个数public:DArr(const int*b=0,const int m=0)if(b)a=new int n=m ;for(int i=0;in;i+) ai=bi;else a=0,n=0;DArr() delete a; int& Elem(int i) return ai; int operator(int f)/在当前对象中顺序查找值为f的元素for(int i=0;in;i+)if( ai=f ) return i;return -1;void main(void)int i,a5=1,2,5,0,-1;DArr d(a,5);if(i=d2)!=-1)/在d中查找值为2的元素cout找到指定元素,其下标为i,值为 d.Elem(i) endl;elsecout未找到指定元素n;14. 下列程序使用递归算法实现单向链表操作,具有创建、显示、释放链表的功能。#includestruct Lnodedouble data;Lnode* next;void ShowList(Lnode* list)if(list)coutdatanext) ShowList(list-next ) ;void AddToEnd(Lnode* New,Lnode*&head)if(head=NULL)head=New;elseAddToEnd(New, head-next );void DeleteList(Lnode*& head)Lnode* p=head;if(p)head= p-next ;delete p;if(head) DeleteList(head) ;void main()Lnode* head=NULL,*temp;temp=new Lnode;while(temp)temp-next=NULL;couttemp-data;if(temp-data0)AddToEnd(temp,head);else break;temp=new Lnode;ShowList(head);DeleteList(head);一、 填空题(30x2=60)1. 1、设 有int a,b;执行语句:b=(a=2+3,a*4),a+5;后,a+b的值为 25 。2、设指针p指向单向链表的某节点,p-next指向p节点的下一个节点。节点p是链表的倒数第三个节点的条件是: p-next-next=NULL 。3、执行下列语句序列后,变量i的值为 ,变量j的值为 。 找不到匹配的答案char s20=”1230abc”; int i=strlen(s),j=sizeof(s);4、下列程序的运行结果是 。#includevoid sub(int*x,int n,int k) if(k=n)sub(x,n,3*k); *x+=k;void main() int x=0;sub(&x,6,2); coutxendl;5、下列程序输出的第1行为 5 ,第2行为 7 ,第3行为 12 。#include int a,b=5;void fun(int a,int c)static x;x+=a+c;int y=10;y+=b+c;coutxtyn;void main()int a=10,b=20;fun(a,b);int a=30;fun(a,b);coutat:an;6. 下列程序的输出是 5 。#include void main(void)int a46=0, i, j, s;for( i=0;i3) break; for(j=0; j6; j+) if(j%2) continue; aij+; for( s=0, i=0; i4; i+)for ( j=0; j6; j+) s+=aij; coutsendl;7. 程序输出的第一行是 14 ,第二行是 21。#include int fun(int a,int &b)a=ab?a:b; b+=a;return ( a+b);void main(void)int a=5,b=2,c;c=fun(a,b);coutatbtcendl;c=fun(a,b); coutatbtcendl;8. 下列程序的输出是 20 。#includeint fun2(int);int fun1(int n)if(n=1) return 1;else return n+fun2(n-1);int fun2(int n)int t=1;if (n=1) t =1;else t = n*fun1(n-1);return t;void main(void)coutfun2(4)endl; 9. 下列程序的输出是 abcABCabc 。#include char * str(char *p1, char *p2)char* p=p1;while(*p)p+;while(*p+=*p2+);*p+=0 ;return p1;void main(void)char s150 = abc;char s2200 = ABC;cout str(s1,str(s2, s1) n;10. 下列程序输出的第一行是 8 ,第二行是 2 。#includeclass A int a,b;public: A(int t1,int t2)a=t1;b=t2; virtual void fun()couta+bn;class B:public A int c,d;public: B(int a,int b):A(2*a,2*b)c=a;d=b; void fun() coutc+dfun(); a1.fun(); delete pa; delete &a1;11、下列程序通过调用sort函数对具有n个元素的一维数组排序,sort函数采用间接选择排序法实现数组的降序排列,其算法是:(1)第1趟,找出数组中的最大元素放在第1位;第2趟,找出数组剩余元素中的最大者放在第2位;以此类推,直至排好数组的前n-1个元素;(2)每趟排序,找到当前数组中最大元素的位置,并把该位置的元素放到对应位置。请完善程序。程序#includevoid sort(int d,int n)for(int i=0;in-1;i+)for(int j=i+1,k=i;jdk) k=j;if(k!=i) int tmp=di ; di=dk ;dk=tmp ; void main()int t10=2,5,6,1,8,4,7,3,9,6;sort(t,10);for(int i=0;i10;i+)couttit;coutn;12、以下程序找出二维数组a中每列的最大值,并按一一对应的顺序放入一维数组b中。即第0列的最大值放入b0,第1行的最大值放入b1然后输出数组a和每列的最大值。请完善程序。程序#includevoid fun ( int p5, int n, int a ) for ( int i=0; i5 ; i+) ai= p0i ; for ( int j=0; jai) ai=pji;void main( ) int b5 , a35=23, 4, 45, 65, 5, 65, 8, 87, 3, 26, 7, 68, 4, 97, 243 ; fun(a,3, b) ;for ( int i=0; i3; i+) for ( int j=0; j5; j+) coutaijt; coutn; cout该列最大值:n;for ( i=0; i5; i+)cout bi t;coutn; 13、 以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方;(2)该三位数的各位数字中至少含有一个数字5。请完善程序#include int f(int y)/y若满足条件,返回1;否则返回0int i,j,k;i = (y%10 ; / 取出y的个位上的数字 j = y/10%10 ; / 取出y的十位上的数字 k = y/100 ; / 取出y的百位上的数字if ( i!=5&j!=5 &k!=5 ) / 判断y的各位数字中是否有数字5return 0;for(i=10;i+) if (i*i999) return 0;if( y=i*i ) return 1 ;return 0 ;void main(void) for(int i=105;i=995;i+)if(f(i)coutinext-next=NULL4. 35. 20 6. 266 30 357. 80 35 8 10 09. 1210 5 7 12 115 14 2112 20 13. abcABCabc 14. 815. 2 16. i+1;17. di=dk18. dk=tmp19. t,1020. p0i21. n22. fun(a,3, b)23. bi24y%1025y/10%1026y/10027 i!=5&j!=5 &k!=5 28 y=i*i29 130 0 模拟试题三第一题 填空题1、在C语言的结构化程序设计中, 函数 是程序的基本组成单元;在C+语言的面向对象设计框架中, 类 是程序的基本组成单元。3、C+语言提供的基本控制结构可以分为3种类型:顺序结构、 选择结构 和 循环结构。4、C+语句const char*const p=hello;,所定义的指针P和它所指的内容都不能被 改变 。5、C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 传地址 方式。6、对于下面定义的类My Class,请在函数f()中添加对象成员把n的值修改为50。 class My Class public:My Class(int x)n=x;void SetNum(int nl)n=nl;private:int n;Void f()My Class * ptr=new My Class(45); ptr-SetNum(50);7、继承的方式有公有继承、私有继承和 保护继承 3种。8、表达式operator+(x,y)还可以表示为 x+y 。9、类模板的使用实际上是将类模板实例化成一个具体的 类 。10、一般说来,要在C+中重载运算符,只需定义一个名为 operator 的一个函数就可以了。 二、判断题(每题2分,共16分)1、 数组可以作为函数参数。( 对 )2、 派生类对象可以赋值给基类对象。( 对 )3、 派生类的成员函数可以直接访问基类的所有成员。(错 )4、 用new动态申请的内存空间,如果不释放,在程序结束后会发生内存泄漏 。( 对 )5、 基类中被说明为protected和private的成员能被其派生类的成员函数访问( 错)6、 当将一个函数定义为另一个类A的友元函数时,此函数可以直接访问类A的所有成员。( 对 )7、 C+是一门完全面向对象的程序设计语言。( 错 )8、 下面两个语句是等价的: char str =hello, world; char str11=hello, world。( 错 )9、 当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象。()10、 构造函数和析构函数是类的两个特殊函数()11、 在继承关系中,被继承的类称为基类,而通过继承定义出的新类称为派生类。()12、 在程序中可以把基类的对象当作派生类对象来处理。(x)13、 类的静态成员是所有该类对象所共有的,并不依赖于某一个对象的存在而存在。()14、 友元函数是类的成员函数。(x)15、 返回值可以作为重载函数的标识。(x)16、 运算符重载是一种特殊的函数重载。()四、 简答题( 20 分)1什么是项目?工作区的作用是什么?项目就是文件的集合。项目也是一种机制,它有机地组织了一个应用程序所有的源文件。项目工作区就是用来管理这些项目的。2一个项目包含那些文件。一个项目文件,通常应包括头文件,源代码文件,资源文件和其他的项目组织和配置文件。3什么是资源,Visual C+ 6.0 的资源都包括那些?资源是一种数据,它包括文本、图形图像等可视化的元素。VC6的标准资源包括对话框、菜单、光标、图标、位图、工具栏、快捷键、字串表和版本信息9个类别。4什么是资源文件,作用是什么?资源文件是一个脚本语言编写,描述资源的文件。它的作用组织应用程序所使用的资源。5.简述结构化程序设计与面向对象程序设计的区别和联系。请同学们自己参考教材内容进行描述。7. 简述面向对象程序设计的四个基本特征及含义。四个基本特征:抽象、继承、封装和多态性,含义需要参考教材中描述。五、读程序,写出输出结果(每题3分,共12分)1. #include int f(int n) int a=3; if(n=3) a=2; else couta=an; a=n*f(n-2); return a;a=3a=3b=70void main(void) int b=7; b=f(b); coutb=bendl;2. #include int f(int &n,int &m) k=17k=45k=122 a=28 b=66 static int k=10; n+=m; k+=n; m+=k; coutk=kendl; return(n+m);void main(void) int a=3,b=4,k; k=f(a,b)+f(a,b); coutk=kta=atb=bendl;3. #include char *str(char *p1, char *p2) char *p=p1; while(*p) p+; *p+= ; while(*p+=*p2+); *p+= ; return p1; void main(void) love NanjingI love NanjingI love Nanjing love Nanjing Nanjing char s150=I; char s250=love; char s3=Nanjing; coutstr(s2,s3)endl; coutstr(s1,s2)endl; couts1 s2 s3;2 6 2 818 18184. #include struct abc static int a; int b;x,y;int abc:a=2; void main(void) x.b=6; y.b=8; coutx.atx.bty.aty.bendl; x.a=18; coutx.aty.atendl; coutabc:aendl;2 填空题 1. 在C+中函数参数的传递方式有三种,分别是:_值传递_、_地址传递_和_引用传递_。2. 当用成员函数重载双目运算符时,运算符的左操作数必定是_对象_

温馨提示

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

评论

0/150

提交评论