C++面向对象程序设计模拟试题二
- 格式:doc
- 大小:98.00 KB
- 文档页数:15
面向对象程序设计模拟题一、简答题:1. 什么是对象?什么是对象的事件和方法?试列举几个常用的事件和方法?答:对象是代码和数据的组合,可以作为一个单位来处理。
对象可以使应用程序的一部分,也可以是整个应用程序。
对象事件是对象可以识别的动作,即窗体、控件和其他对象可以识别的动作。
常用的事件有Click事件、Paint事件、Load事件等。
方法是对象要执行的动作,常见的有Clear、AddIRem、RemoveITem等。
2.VB有几种类型的表达式?请举例说明。
答:VB有5中类型的表达式,它们是算术表达式(例2*Pi*r*r)、字符串表达式(例“欢迎您”)、日期型表达式(例#11/22/98)、关系表达式(”abc”>”abcd”)和布尔表达式(2<=4AND6>3)。
二、填空题:1.单选按钮用于建立一组多选一的选项供用户选择,即在这些选项中,用户一次只能选择其中的一个选项选项,并且必须选择其中一个选项。
同时,当一个单选钮被选中时,其他选项自动关闭。
2.列表框是以列表形式显示一系列项目和信息,用户可通过单击其中某一项来选择的自己所需项目或信息。
在Windows中,使用列表框输出数据是保证数据标准化的重要手段,它是一个重要的输出控件。
在工具栏中它是一个标着带有滚动条的列表图案的按钮。
3.MsgBox 函数用来在对话框中显示消息,等待用户单击按钮,并返回一个整数,告诉程序用户单击了哪一个按钮。
4.在VB中有三种形式的数组,静态数组、动态的数组和控件数组。
静态数组就是指数组元素的个数在程序运行时保持不变,动态数组是指数组中的元素个数在程序运行时可以变化的数组,控件数组是使用VB中某些常用控件创建的数组。
使用静态数组、动态数组前必须要先声明,才能在程序中使用。
5.VB提供了图形控件,如Shape控件和Line控件。
它们提供一定的绘图样式,虽比较简单,但是使用非常方便,不需要编写代码,只要设置相应的属性即可。
《面向对象程序设计》第二次上机测试题目及要求一、考核目标(一)数组、指针与字符串1.掌握数组、字符串数据的定义和使用;掌握标准C++库中string的使用;2.掌握指针的使用方法;掌握动态内存分配实现动态数组,并体会指针在其中的作用。
(二)继承与派生1.理解继承、派生的基本概念及意义。
2.掌握派生类定义及派生类对象实例化。
3.掌握类型兼容规则、派生类成员的标识与访问。
4.虚基类解决二义性问题。
二、考试要求1.不允许携带U盘和教材等进入考场。
2.考试过程中保持安静,独立按要求完成考试题目。
3.考试结束后,请坐在座位上,等待监考老师确认你的考题之后方可离开。
三、考试内容在桌面上新建一个文件夹,以“学号+姓名”形式命名,如:20130102张三。
该文件夹中应该包含两个子文件夹(文件夹名分别为:第一题第二题),分别存放两道题的相关文件以及测试结果等。
第一大题:所有同学都完成1.已知Point类的声明如下:#include <iostream>using namespace std;//Point 类的声明class Point{public: //外部接口Point(); //构造函数Point(int xx, int yy) ;//构造函数Point(Point &p); //拷贝构造函数int GetX() const {return x;}int GetY() const {return y;}void move(int newx,int newy) {x=newx; y=newy;}~Point(){}private: //私有数据int x,y;};class ArrayofPoints{Point &element(int index){assert(index>=0 && index<size);// size为数组大小return points[index];}}//计算任意两点之间的街区距离int L1Distance (int x1,int y1,int x2,int y2){return(abs(x1-x2)+abs(y1-y2));}请给出Point类的构造函数,并参照下图创建动态数组类ArrayofPoints,实现主函数。
1、面向对象方法中,继承是指( )。
A.一组对象所具有的相似性质
B.一个对象具有另一个对象的性质
C.各对象之间的共同性质
D.类之间共享属性和操作的机制
2、将c语言的整数设为整数类1,则下面属于类I实例的是( )。
A.一103
B.10E3
C.10.3
D.“0103”
3、下列叙述中正确的是()。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述3种说法都不对
4、在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性
B.分类性
C.多态性
D.标识唯一性
5、定义无符号整数类为UInt,下面可以作为类uInt实例化值的是( )。
A.-369
B.369
C.0.369
D.整数集合{1,2,3,4,5}
6、下列选项中属于面向对象设计方法主要特征的是( )。
A.继承
B.自顶向下
C.模块化
D.逐步求精。
模拟试题(1)一、判断对错题(10%)(对√,错×)()1.自动变量用堆方式创建,它与块共存亡。
()2.运算符+=是右结合的。
()3.表达式cout<<99的类型为int。
()4.++i是左值,但i++不是左值。
()5.Y[I][J]与*(*Y+I)+J不等价。
()6.从外部看类的private 成员和protected成员有区别。
()7.运算符&不可以重载。
()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。
()9.2.0/-3.0是一个正确的表达式。
()10.字符'\12'的ASCII为12。
二、填空题(20%)#include <iostream.h>typedef struct node{long data;node * next;};class stack{private:node * head;①__________stack();~stack();void push (②__________);③__________ pop();④__________ print();};stack::stack(){ head = new ⑤__________head->next = ⑥__________ }stack::~stack(){node * p;p = head;while (p){head = head->next;⑦__________p = head;}}void stack::push(long x){node * p = new node;p->data = x;p->next = head->next;⑧__________ = p;cout<<"Push" <<x<<" ok !"<<endl;}long stack::pop(){node *p = head->next;if(p!=NULL){long x = p->data;head->next = p->next;⑨__________cout<<"pop "<<x<<" ok !"<<endl;return x;}elsecout<<"Stack is empty !"<<endl;return 0;}void stack::print(){node * p = head->next;cout<<"Stack_Top"<<endl;while (p){cout<<p->data<<endl;⑩__________;}cout<<"Stack_bottom"<<endl;}三、简答题(20%)(按条列出论点)1.注解。
四川大学C面向对象程序设计模拟试题2一、单项选择题1.说明内联函数的关键字是(A)。
A)inlineB)virtualC)defineD)tatic2.假定CAb为一个类,则执行CAbo某;语句时将自动调用该类的(B)A)有参构造函数B)无参构造函数C)拷贝构造函数D)赋值重载函数3.cin是某个类的标准对象的引用,该类是(B)。
A)otreamB)itreamC)tdoutD)tdin4.下面的哪个保留字不能作为函数的返回类型?(C)A)voidB)intC)templateD)long5.派生类的成员函数不能访问基类的(C)。
A)保护成员B)公有成员C)私有成员D)前面各选项都正确6.在语句“cout<<data;”中,cout是(C)。
A)C++的关键字B)类名C)对象名D)函数名7.编译时多态性使用什么获得?(A)A)重载函数B)继承C)虚函数D)B和C8.拷贝构造函数的参数通常是(C)。
A)无特殊要求B.指向对象的指针C)本类对象的常引用D)对象9.C++有几种联编?(B)A)1种B)2种C)3种D)4种10.基类和派生类可以分别称为(B)。
A)“大类”和“小类”B)“父类”和“子类”C)“小类”和“大类”D)“子类”和“父类”二、填空题1.设函数ma某是由函数模板实现的,并且ma某(3.5,5)和ma某(3,5)都是正确的函数调用,则此函数模板具有(2)个类型参数。
2.在C++中,函数重载与虚函数帮助实现了类的(多态)性。
3.由tatic修饰的数据成员为该类的所有对象(共享)。
4.重载函数一般在参数类型或参数个数上不同,但(函数名)相同。
5.使用new建立的动态对象在不用时应该用(delete)释放所占用的空间。
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#includeuingnamepacetd;claPoint{public:Point(inta=0,intb=0):某(a),y(b){}intGet某()cont{return某;}intGetY()cont{returny;}voidSet某(inta){某=a;}voidSetY(inta){y=a;}private:int某;inty;};intmain(){Pointu;contPointv(6,8);cout<<u.Get某()<<endl;u.Set某(16);cout<<u.Get某()<<endl;u.SetY(18);cout<<u.GetY()<<endl;cout<<v.Get某()<<endl;cout<<v.GetY()<<endl;return0;}上面程序的输出结果为:01618682.阅读下面程序,写出输出结果。
《面向对象程序设计》课程模拟测试一、选择题1、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()A.面向过程B.面向对象C.安全性D.复用性2、关于虚函数的描述中,正确的是()A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型3、下列关于构造函数的描述中,错误的是()A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载4、在以下关于C++语言的注释的叙述中,不正确的是()A.C++程序中,注释可用“/*”、“*/”形式表示,也可用“//”形式表示B.C++编译器在编译一个程序时,将跳过注释,不对其进行处理C.C++编译器在编译一个程序时,可发现注释中的单词拼写错误D.程序中注释的多少不会影响所生成的可执行文件的长度5、C++语言的跳转语句中,对于break和continue说法正确的是()A.break语句只应用于循环体中B.continue语句只应用于循环体中C.break是无条件跳转语句,continue不是D.break和continue的跳转范围不够明确,容易产生问题6、下列关于C++函数的说明中,正确的是()A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是return语句C.标准C++要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式7、在下面的一维数组定义中,哪一个有语法错误。
()A.int a[ ]={1,2,3} B.int a[10]={0}C.int a[ ] D.int a[5]8、面向对象系统不具有()特性A. 继承性B. 封装性C. 过程性D. 多态性9、下列静态数据成员的特性中,错误的是()A.说明静态数据成员前边加staticB.静态数据成员要在类体外初始化C.引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符D.静态数据成员不是一个类所有对象共享的10、若用数组名作为函数调用时的实参,则实际上传递给形参的是()A.数组首地址B.数组的第一个元素值C.数组中全部元素的值D.数组元素的个数二、填空题1、C++语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。
二级C语言程序设计模拟试题及答案解析〔9〕(1/2) 程序填空题第1 题程序通过定义学生布局体变量,存储了学生的学号、姓名和三门课的成就。
所有学生数据均以二进制方式输出到文件中。
函数fun 的功能是重写形参filename 所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生本来的数据,其他学生的数据不变。
请在程序的下划线处填入正确的内容,使程序得出正确的成果。
注意:局部源程序给出如下。
!不得增行或删行,也不得更改程序的布局试题程序:#include<>#define N 5typedef struct student{long sno;char name[10];float score[3];}STU;void fun(char*filename,STU n)(FILE*fp;/**********found**********/fp=fopen(______,"rb+");/**********found**********/fseek(______,-(long)sizeof(STU),SEEK_END);/**********found**********/fwrite(&n,sizeof(STU),1,______);fclose(fp);}main()(STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"Fa ngFang",90,82,87},{10005,"ZhangSan",95,80,88}};STU n={10006,"ZhaoSi",55,70,68},ss[N];inti,j; FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nThe original data:\n\n");for(j=0; j <N; j++){printf("\nNo:%ld Name:%-8s Scores:",ss[j]. sno,ss[j].name);for(i=0;i <3;i++)printf("%6.2f"ss[j].score[i]);}fun("student.dat",n);printf("\nThe data after modifing:\n\n");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for (j=0; j <N;j++){printf("\nNo:%ld Name:%-8s Scores:",ss[j]. sno,ss[j].name);for(i=0; i <3;i++)printf 〔““. ss[j].score[i];printf(:\n");}}下一题(2/2) 程序填空题第2 题给定程序中,函数fun 的功能是:判定形参 a 所指的N×N(规定N 为奇数)的矩阵是否是“幻方〞,假设是,那么函数返回值为1;假设不是,那么函数返回值为0。
面向对象程序设计模拟练习题(含答案)一、单选题(共50题,每题1分,共50分)1、下列关于JDK和JRE的说法中,错误的是()A、JDK是java开发核心组件,是用来编译解释java程序的核心组件B、JDK包括Java编译器、Java文档生成工具、Java打包工具等C、JRE是个单独的软件,所以安装JDK后,还需要单独安装JRED、JRE是java运行环境,用来支持java程序的运行正确答案:C2、下列File类的构造方法格式,错误的是()A、File(File parent)B、File(String pathname)C、File(String parent,String child)D、File(URI url)正确答案:A答案解析:A选项,正确的应该是File(File parent, String child)3、下列关于静态变量的描述中,错误的是()A、静态变量指的是被static修饰的变量B、静态变量是随着类的加载而加载C、静态变量可以被所有的实例对象共享D、静态变量同成员变量一样,都需要通过实例对象来调用正确答案:D答案解析:静态变量是通过“类名.变量名”“方式调用的。
4、下列对于Runtime的描述中,正确的是()A、每一个Java应用程序运行时都产生一个Runtime类实例B、Runtime实例可以将应用程序和运行环境相结合C、Runtime类有构造函数D、Runtime实例需要被创建后才可以通过getRuntime()方法获取正确答案:A答案解析:Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。
每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,可以通过getRuntime()方法获得一个Runtime实例。
5、下列关于LinkedList类的方法,不是从List接口中继承而来的是()A、toArray()B、pop()C、remove()D、isEmpty()正确答案:B答案解析:pop()方法表示移除并返回此列表的第一个元素,是LinkedList特有的方法。
C++面向对象程序设计上机考试题库一、第一类题目(20道,每题7分,在word中保留代码并将输出结果窗口保留)1.定义盒子Box类,要求具有以下成员:长、宽、高分别为x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。
#include<iostream>class Box{ private:int x,y,z; int v,s;public:void int(int x1=0,int y1=0,int z1=0) {x=x1;y=y1;z=z1;}void volue() {v=x*y*z;}void area() {s=2*(x*y+x*z+y*z);}void show(){cout<<"x= "<<x<<" y= "<<y<<" z="<<z<<endl;cout<<"s= "<<s<<" v= "<<v<<endl;}};void main(){ Box a;a.init(2,3,4);a.volue();a.area();a.show();}2.有两个长方柱,其长、宽、高分别为:(1)30,20,10;(2)12,10,20。
分别求他们的体积。
编一个基于对象的程序,在类中用带参数的构造函数。
#include <iostream>using namespace std;class Box{public:Box(int,int,int);//带参数的构造函数int volume();private:int length;int width;int height;};Box::Box(int len,int h,int w){length=len;height=h;width=w;}//Box::Box(int len,int w,int,h):length(len),height(h),width(w){} int Box::volume(){return(length*width*height); }int main(){Box box1(30,20,10);cout<<"The volume of box1 is "<<box1.volume()<<endl;Box box2(12,10,20);cout<<"The volume of box2 is "<<box2.volume()<<endl;return 0;}3.有两个长方柱,其长、宽、高分别为:(1)12,20,25;(2)10,30,20。
C++面向对象程序设计模拟试题二一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.说明内联函数的关键字是()。
A. inlineB. virtualC. defineD. static2.假定CAb为一个类,则执行CAb oX;语句时将自动调用该类的()A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数3.cin是某个类的标准对象的引用,该类是()。
A. ostreamB. istreamC. stdoutD. stdin4.下面的哪个保留字不能作为函数的返回类型?()A. voidB. intC. newD. long5.不能参与重载的运算符是()。
A. 类B. 函数C. 函数模板D. 运算符6.由于数据隐藏的需要,静态数据成员通常被说明为()。
A. 私有的B. 公有的C. 保护的D. 不可访问的7.编译时多态性使用什么获得?()A. 重载函数B. 继承C. 虚函数D. B和C8.拷贝构造函数的参数通常是()。
A. 无特殊要求B. 指向对象的指针C. 自已类对象的常引用D. 对象9.C++有几种联编?()A. 1种B. 2种C. 3种D. 4种10.基类和派生类可以分别称为()。
A. “大类”和“小类”B. “父类”和“子类”C. “小类”和“大类”D. “子类”和“父类”二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。
1.不可以定义抽象类的对象。
()2.内联函数的定义必须出现在第一次调用内联函数之前。
()3.模板函数与函数模板的意义完全相同。
()4.只有常成员函数才可以操作常对象。
()5.引用可以不初始化。
()6.使用new运算符创建数组时,可以为该数组指定初始值。
()三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.设函数max是由函数模板实现的,并且max(3.5, 5)和max(3, 5)都是正确的函数调用,则此函数模板具有()个类型参数。
2.在C++中,函数重载与虚函数帮助实现了类的()性。
3.由static修饰的数据成员为该类的所有对象()。
4.重载函数在参数类型或参数个数上不同,但()相同。
5.使用new建立的动态对象在不用时必须用()释放所占用的空间。
6.重载运算符“<<”的函数名为()。
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include <iostream>using namespace std;class CPosition{public:CPosition(int iPositionX = 0, int iPositionY = 0):m_iPositionX(iPositionX){m_iPositionY = iPositionY;}int GetPositionX() const{return m_iPositionX;}int GetPositionY() const{return m_iPositionY;}void SetPositionX(int iPositionX){m_iPositionX = iPositionX;}void SetPositionY(int iPositionY){m_iPositionY = iPositionY;}private:int m_iPositionX; // X坐标int m_iPositionY; // X坐标};{CPosition oPostion1;const CPosition oPostion2(6, 8);cout << oPostion1.GetPositionX() << endl;oPostion1.SetPositionX(16);cout << oPostion1.GetPositionX() << endl;oPostion1.SetPositionY(18);cout << oPostion1.GetPositionY() << endl;cout << oPostion2.GetPositionX() << endl;cout << oPostion2.GetPositionY() << endl;return 0;}上面程序的输出结果为:2.阅读下面程序,写出输出结果。
#include <iostream>using namespace std;template <class Type>class CTest{public:CTest(Type m_tArray[], int iSize):m_pArray(m_tArray) {m_iSize = iSize;}void Print() const{for (int i = 0; i < m_iSize; i++){cout << m_pArray[i] << " ";}}private:Type *m_pArray;};int main(void){int a[] = {1, 0, 8};double b[] = {1.6, 1.8};CTest<int> oTest1(a, 3);oTest1.Print();CTest<double> oTest2(b, sizeof(b) / sizeof(double));oTest2.Print();cout << endl;return 0;}上面程序的输出结果为:3.阅读下面程序,写出输出结果。
#include <iostream>using namespace std;class CGoods{public:CGoods(int iWeight){m_iWeight = iWeight;m_iTotalWeight = m_iTotalWeight + iWeight;}CGoods(const CGoods &oGood){m_iWeight = oGood.m_iWeight;m_iTotalWeight = m_iTotalWeight + m_iWeight;}~CGoods(){m_iTotalWeight = m_iTotalWeight - m_iWeight;}void Print() const;static int GetTotalWeight(){return m_iTotalWeight;}private:int m_iWeight;static int m_iTotalWeight;};int CGoods::m_iTotalWeight = 8; // 初始化静态数据成员void CGoods::Print() const{cout << this->m_iWeight << " " << this->m_iTotalWeight << " "; }int main(void){CGoods oGood1(6);oGood1.Print();CGoods oGood2(oGood1);oGood2.Print();cout << CGoods::GetTotalWeight();cout << endl;return 0;}上面程序的输出结果为:4.阅读下面程序,写出输出结果。
#include <iostream>using namespace std;template <class Type>class CTest{public:CTest(Type tA = 0, Type tB = 0, Type tC = 0):m_tC(tC) {m_tA = tA;m_tB = tB;}void Print(){cout << m_tA << endl;cout << m_tB << endl;}void Print() const{cout << m_tC << endl;}private:Type m_tA, m_tB;const Type m_tC;};int main(void){CTest<float> oTest1;oTest1.Print();CTest<int> oTest2(1, 9, 6);oTest2.Print();const CTest<double> oTest3(0, 6, 1.8);oTest3.Print();cout << endl;return 0;}上面程序的输出结果为:五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误的行,说明错误原因,并加以改正。
1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。
#include <iostream> //1 using namespace std; //2//3 class CArray //4{ //5 public: //6 void CArray(int iArray[], int iSize):m_pArray(iArray), m_iSize(iSize) //7{ //8} //9//10 int GetSize() //11 { //12 return m_iSize; //13 } //14//16 int &operator[](int iIndex) //17 { //18 return m_pArray[iIndex - 1]; //19 } //20//21 private: //22 int *m_pArray; // 指向一个数组空间//23 int m_iSize; // 数组元素个数//24 }; //25//26//27int main(void) //28 { //29 int s[]={3, 7, 2, 1, 5}; //30 CArray oArray(s, 5); //31 oArray[1] = 9; //32 for (int i = 1; i <= 5; i++) //33 { //34 cout << oArray[i] << " "; //35 } //36 cout << endl; //37//38 return 0; //39 } //402.下面程序中有错误,请指出出错的行,说明错误原因,并加以改正。