《VC程序设计》期末复习题集(学生用)
更新时间:2024-03-30 20:58:01 阅读量: 综合文库 文档下载
- vc程序设计是学什么推荐度:
- 相关推荐
《程序设计(VC++)》考试试卷一
选择题(在A、B、C、D中选择一个正确的,每题1分,共30分。用答题纸答题, 二、填空题(每个空格1分,共30分。请将答案填写在答题纸的相应答题号内,每个答案只占一行)
●基本概念题,共5分
1. 执行语句cout<<\后,输出结果为 x86 。
2. 用new运算符申请动态对象时,系统将自动调用该对象的 构造函数。 3. 定义内联函数的方法是在函数的返回值类型之前增加关键字 inline 。 4. 在多重继承时,若欲使公共基类只在派生类中产生一个拷贝,则应在派生类中将该基类用关键字 virtual 。 5. 在C++的I/O流类库中,预定义了4个流,即cin、cout、cerr和clog,其中 cerr和clog 不可重定向。
●阅读程序题,共13分
6. [程序](2分) #include
int m[3][3]={ {1}, {2}, {3} }, n[3][3]={ 1, 2, 3 };
void main(void) { cout< 7. [程序](2分) #include while(*p) p++; return p - s; } void main(void) { cout< 程序的输出是 6 ,函数f的功能是 求字符串的长度 。 8. [程序](2分) #include do{ s[j]+=s[j+1]; } while(++j<2); } void main(void) { int k, a[10]={1, 2, 3, 4, 5}; for(f(a),k=0; k<5; k++) cout< 程序输出的第一行是 35345 ,程序输出的第二行是 35745 。 9. [程序](3分) #include { char k=?B?; cout<< k - ?A? <\\n?; } cout< void main(void) { int i=4; f(i); cout< 程序的输出第一行是 1 ,第二行是 5,6 ,第三行是 4,6 10. [程序](2分) #include 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; } }; 共 7 页, 第 1 页 。 void main() { D d(35,100,300,500); d.A::Access()+=20; d.B::Access()+=d.B::Access(); cout< 程序的输出第一行是 55,200 ,第二行是 300,500 。 11. [程序](2分) #include 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) { cout< { 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; 共 7 页, 第 2 页 for(i=0,sum=0;i if(sum>=80) return tA; else return tB; } void main() { int a[][4]={{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;i cout<<\类学生人数为\ cout<<\类学生人数为\ } 13. 以下程序中,数组类DArr通过重载运算符“<<”实现数组元素的顺序查找。 顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;否则返回-1。 #include 共 7 页, 第 3 页 } 14. 下列程序使用递归算法实现单向链表操作,具有创建、显示、释放链表的功能。 #include 共 7 页, 第 4 页 一、 填空题(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 s[20]=”123\\0abc”; int i=strlen(s),j=sizeof(s); 4、下列程序的运行结果是 。 #include void main() { int x=0;sub(&x,6,2); cout< 5、下列程序输出的第1行为 5 ,第2行为 7 ,第3行为 12 。 #include void fun(int a,int c) { static x; x+=a+c; } void main() { int a=10,b=20; fun(a,b); { int a=30; } cout< 共 7 页, 第 5 页 int y=10; y+=b+c; cout< fun(a,b); } 6. 下列程序的输出是 5 。 #include { int a[4][6]={0}, i, j, s; for( i=0;i<4; i++){ if(i>3) break; for(j=0; j<6; j++){ } for( s=0, i=0; i<4; i++) for ( j=0; j<6; j++) s+=a[i][j]; cout< 7. 程序输出的第一行是 14 ,第二行是 21。 #include void main(void) { int a=5,b=2,c; } 8. 下列程序的输出是 20 。 #include { if(n==1) return 1; } 共 7 页, 第 6 页 } if(j%2) continue; a[i][j]++; return ( a+b); c=fun(a,b); cout< cout< else return n+fun2(n-1); int fun2(int n) { int t=1; } void main(void) { cout< 9. 下列程序的输出是 abcABCabc 。 #include char * str(char *p1, char *p2) { char* p=p1; } void main(void) { char s1[50] = {\ } 10. 下列程序输出的第一行是 8 ,第二行是 2 。 #include class B:public A{ }; 共 7 页, 第 7 页 if (n==1) t =1; else t = n*fun1(n-1); return t; while(*p)p++; while(*p++=*p2++); *p++='\\0 '; return p1; char s2[200] = {\ cout << str(s1,str(s2, s1)) << '\\n'; int a,b; A(int t1,int t2){a=t1;b=t2;} virtual void fun(){cout< public: int c,d; B(int a,int b):A(2*a,2*b){c=a;d=b;} void fun(){ cout< public: void main(void) { A *pa=new B(3,5), &a1=*new B(1,1); } 11、下列程序通过调用sort函数对具有n个元素的一维数组排序,sort函数采用间接选择排序法实现数组的降序排列,其算法是: (1)第1趟,找出数组中的最大元素放在第1位;第2趟,找出数组剩余元素中的最大者放在第2位;以此类推,直至排好数组的前n-1个元素; (2)每趟排序,找到当前数组中最大元素的位置,并把该位置的元素放到对应位置。 请完善程序。 [程序] #include for(int j= if(k!=i) { i+1 ,k=i;j if(d[j]>d[k]) k=j; pa->fun(); a1.fun(); delete pa; delete &a1; int tmp=d[i] ; d[i]=d[k] ; } void main() { int t[10]={2,5,6,1,8,4,7,3,9,6}; } 12、以下程序找出二维数组a中每列的最大值,并按一一对应的顺序放入一维数组b中。即第0列的最大值放入b[0],第1行的最大值放入b[1]?然后输出数组a和每列的最大值。请完善程序。 [程序] #include 共 7 页, 第 8 页 } d[k]=tmp ; sort( t,10 ); for(int i=0;i<10;i++) cout< void fun ( int p[][5], int n, int a[ ] ) { for ( int i=0; i<5 ; i++) { a[i]= p[0][i] ; for ( int j=0; j< n ;j++) } } void main( ) { int b[5] , a[3][5]={23, 4, 45, 65, 5, 65, 8, 87, 3, 26, 7, 68, 4, 97, 243 }; fun(a,3, b) ; for ( int i=0; i<3; i++) { } cout<<\该列最大值:\for ( i=0; i<5; i++) cout<<'\\n'; } 13、 以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方;(2)该三位数的各位数字中至少含有一个数字5。请完善程序 #include i = (y ; // 取出y的个位上的数字 j = y/10 ; // 取出y的十位上的数字 k = y/100 ; // 取出y的百位上的数字 if ( i!=5&&j!=5 &&k!=5 ) return 0; for(i=10;;i++){ // 判断y的各位数字中是否有数字5 //y若满足条件,返回1;否则返回0 cout<< b[i] <<'\\t'; for ( int j=0; j<5; j++) cout< if(p[j][i]>a[i]) a[i]=p[j][i]; if (i*i>999) return 0; if( y==i*i ) return 1 ; } } 共 7 页, 第 9 页 return 0 ; void main(void) { for(int i=105;i<=995;i++) } 《C++程序设计》试题参考答案及评分标准 一、选择填空(2x10=20分) 1. D 2. C 3. C 4.B 5. D 6.D 7.B 8. A 9. D 10. B if(f(i)) cout< 二、填空(2x30=60分) 2. 25 3. p->next->next==NULL 4. 3 5. 20 6. 26 6. 30 35 7. 80 35 8. 10 0 9. 12 10. 5 7 12 11.5 14 21 12. 20 13. abcABCabc 14. 8 15. 2 16. i+1; 17. d[i]=d[k] 18. d[k]=tmp 19. t,10 20. p[0][i] 21. n 22. fun(a,3, b) 23. b[i] 24.y 25.y/10 共 7 页,26.y/100 27. i!=5&&j!=5 &&k!=5 28. y==i*i 29. 1 30. 0 第 10 页 模拟试题三 第一题 填空题 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种。 共 7 页, 第 1 页 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[ ]=\world\。( 错 ) 9、当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象。 (√) 10、 构造函数和析构函数是类的两个特殊函数 (√) 11、 在继承关系中,被继承的类称为基类,而通过继承定义出的新类称为派生类。(√) 12、 在程序中可以把基类的对象当作派生类对象来处理。 (x) 13、 类的静态成员是所有该类对象所共有的,并不依赖于某一个对象的存在而存在。(√) 14、 友元函数是类的成员函数。 (x) 15、 返回值可以作为重载函数的标识。 (x) 16、 运算符重载是一种特殊的函数重载。 (√) 四、 简答题( 20 分) 共 7 页, 第 2 页 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{ cout<<\ a=n*f(n-2); } return a; } void main(void) a=3 共 7 页, 第 3 页 a=3 b=70 { int b=7; b=f(b); cout<<\} 2. #include int f(int &n,int &m) { static int k=10; n+=m; k+=n; m+=k; k=17 cout<<\k=45 return(n+m); k=122 a=28 b=66 } void main(void){ int a=3,b=4,k; k=f(a,b)+f(a,b); cout<<\} 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 Nanjing char s1[50]=\ I love Nanjing char s2[50]=\ I love Nanjing love Nanjing Nanjing char s3[]=\ cout< cout< struct abc{ static int a; int b; 2 6 2 8 18 18 18 共 7 页, 第 4 页 }x,y; int abc::a=2; void main(void) { x.b=6; y.b=8; cout< cout< 1. 在C++中函数参数的传递方式有三种,分别是:__值传递__、_地址传递_和_引用传递_。 2. 当用成员函数重载双目运算符时,运算符的左操作数必定是____对象________。 3. 在类中,定义构造函数的目的是__在产生对象时,对对象的数据成员进行初始化_____。 4. 以下程序的输出结果是_ _1 -2___。 void main( void) { int x=3; do{ cout<<(x- =2)<<‘\\t’;}while(!(--x); } 6.以下程序的输出结果是__100______和___200_______。 #include { static int j; j+=100; return j; } void main(void) { cout< 7.以下程序的输出结果是___20_____和____30______。 #include protected:int x; 共 7 页, 第 5 页 public: Base(int a){x=a;} }; class A: public Base{ public:A(int a): Base(a){ }; int GetX( ){ return x;} }; class B: public Base{ public:B(int a): Base(a){ }; int GetX( ){ return x;} }; class C: public B, public A{ public:C(int a): A(a+10),B(a+20){ }; }; void main(void) { C c(10); cout< 9. .以下程序输出的两个字母分别是___c_____和____d_______。 #include public:virtual void f( ) { cout<<‘a’<<‘b’<<‘\\n’;} }; Class Y:public X{ public: void f( ) {cout<<‘c’<<‘d’<<‘\\n’;} }; void main( ) { Y y; X *xp=&y; xp->f( ); } 11.下面程序的功能是从数组arr(有n个元素)中找出最小元素值,并返回其引用。 共 7 页, 第 6 页 int & findmin(int arr[ ],int n) { int pos=0; for( int i=1;i<=n-1; ++i) if(___arr[i] < arr[pos]__)pos=_i__; return __ arr[pos]__; } 12.下面是求前n个自然数和的递归函数(即求1+2+3+…+n)。 float sum(int n) { if(__n==1__)return 1; else return (___n+sum(n-1)__); } 共 7 页,第 7 页
正在阅读:
《VC程序设计》期末复习题集(学生用)03-30
日照的海作文400字07-11
史前文化差异对艺术的影响04-08
4.5.2.1.2规范临床检查、诊断、治疗、使用药物和植(介)入类医疗器械行为09-06
河北省唐山市2015届高三年级第一次模拟考试 - 数学理(数学理)02-29
果树涂白的作用03-19
机械设备工程施工方案(范本)05-16
2012幼儿园教师招考问答题12-04
语文论文-从我国语文教育的历史看语文教育本体的演变-中国.大学...12-10
齐鲁书社版五年级传统文化备课01-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 习题集
- 程序设计
- 期末
- 学生
- 2011顺义中考一模化学试题答案
- 浅谈中学物理实验教学 2
- 《风向与风速》教学设计
- 普宁职业技术学校揭阳学生公寓,师生食堂可行性研究报告-广州中
- 专题09 文言文阅读之断句与常识(练)-2019年高考语文一轮复习讲
- 夯实财务基础工作 提高财务管理水平
- 律师代理买卖合同纠纷案件指导手册
- 环境保护支出分析
- 企业会计准则第22号 - 金融工具确认和计量
- 高级数控铣工加工中心操作工模拟试题4
- 电工进网作业许可续期注册学习资料(考试题)
- 114届 五金工具类(1)2956
- 博才幼儿园保教工作领导小组
- 超星军事理论张国清期末考试答案
- 0CRM客户关系管理软件
- 论伊恩麦克尤恩《赎罪》中的原罪和救赎
- 2003-2018南大考研真题(整理版)
- 北苑315#住宅施组设计 - 图文
- 防台、防汛应急救援预案演练方案
- 金元明清文学史笔记