资源描述
姓名: 学号: 系别: 计算机学院 年级专业: 09软件工程
( 密 封 线 内 不 答 题 )
……………………………………………………密………………………………………………封………………………………………线……………………………………线………………………………………
_____________ ________
…
东莞理工学院(本科)试卷(A卷)
2023 --2023 学年第 2 学期
《面向对象程序设计基础》试卷
开课单位: 计算机学院 ,考试形式:闭、开卷,允许带 入场
题序
一
二
三
四
五
六
七
八
总 分
得分
评卷人
Ⅰ 选择题(所有为单选,请把结果写在本大题后面的答题纸内相应的横线上,写在其它地方无效,每小题2分,共50分)
1 以下叙述中不对的的是:( )
A 函数名属于用户标记符,其起名规则与变量相同
B 形参只能是变量
C 为保证程序的对的运营,函数中定义的变量不能与其他函数中定义的变量同名
D 函数中定义的变量可以与其他函数中定义的变量同名
2 有定义语句:int a[]={1,2,3,4,5,6,7},*p=A *q=&a[5]; ( )
则下列表达式中值不等于5的是
A *q-- B *--q C --*q D q-p
3 以下叙述中错误的是:( )
A 局部变量的定义可以在函数体内部
B 全局变量的定义可以在函数以外的任何位置
C 同一程序中,全局变量和局部变量不能同名
D 函数的形参属于局部变量
4 以下叙述中错误的是:( )
A 变量的作用域取决于变量定义语句出现的位置
B 同一程序中,全局变量的作用域一定比局部变量的作用域大
C 局部变量的作用域是在定义它的函数体内
D 全局变量的作用域是从定义位置开始至源文献结束
5 关于VC6建立的工程的说法,对的的是:( )
A 工程只能包含.cpp和.h类型的文献
B 工作区文献的后缀是.dsp
C 用鼠标双击工作区文献可以打开整个工程
D 在VC的FileView中可以看到工程中所有的文献,涉及工作区文献,项目文献等
6 下面关于在VC6环境下调试运营的说法错误的是 ( )
A 设立合适的断点(F9),按Ctrl+F5开始调试运营
B 设立合适的断点,按F5开始运营
C 调试时,可以随时观测断点处的变量值
D 在调试运营过程中,可随时按下Stop Debugging(Shift+F5)结束调试运营
7 下列情况中,哪一种情况不会调用拷贝构造函数 ( )
A 用派生类的对象去初始化基类对象时
B 将类的一个对象赋值给该类的另一个对象时
C 函数的形参是类的对象,调用函数进行形参和实参结合时
D 函数的返回值是类的对象,函数执行返回调用者时
8 以下哪一关键字可用于重载函数的区分( )
A extern B static C const D virtual
9 下列有关内联函数的叙述中,对的的是 ( )
A 内联函数在调用时发生控制转移 B 使用内联函数有助于代码重用
C 必须通过关键字inline来定义 D 是否最后内联由编译器决定
10 实现运营时多态的机制是( )
A 虚函数 B 重载函数 C 静态函数 D 模版函数
11 以下哪个符号(或组合)是作用域限定符( )
A -> B . C :: D []
12 下列关于this指针的说法对的的是( )
A this指针存在于每个函数之中
B 在类的非静态函数中this指针指向调用该函数的对象
C this指针是指向虚函数表的指针
D this指针是指向类的函数成员的指针
13 若有以下类定义
class MyClass {
public:
MyClass() { cout << 1; }
};
则执行语句MyClass a,b[2],*p[2];后,程序的输出结果是( )
A 11 B 111 C 1111 D 11111
14 下面程序的输出结果是( )
#include <iostream>
using namespace std;
int i = 0;
int fun(int n)
{
static int a = 2;
a++;
return a+n;
}
void main()
{
int k = 5;
姓名: 学号: 系别: 计算机学院 年级专业: 09软件工程
( 密 封 线 内 不 答 题 )
……………………………………………………密………………………………………………封………………………………………线……………………………………线………………………………………
{
int i = 2;
k += fun(i);
}
k += fun(i);
cout << k;
}
A 13 B 14 C 15 D 16
15 下面程序的输出结果是( )
#include <iostream>
using namespace std;
class A
{
public:
A (int i) { x = i; }
void dispa () { cout << x << “,”; }
private :
int x ;
};
class B : public A
{
public:
B(int i) : A(i+10) { x = i; }
void dispb() { dispa(); cout << x << endl; }
private :
int x ;
};
void main()
{
B b(2);
b.dispb();
}
A 10,2 B 12,10 C 12,2 D 2,2
16 下面程序的输出结果是( )
#include <iostream>
using namespace std;
class Base
{
public:
Base(int i) { cout << i; }
~Base () { }
};
class Base1: virtual public Base
{
public:
Base1(int i, int j=0) : Base(j) { cout << i; }
~Base1() {}
};
class Base2: virtual public Base
{
public:
Base2(int i, int j=0) : Base(j) { cout << i; }
~Base2() {}
};
class Derived : public Base2, public Base1
{
public:
Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c),
Base2(d), Base(a)
{ cout << b; }
private:
Base2 mem2;
Base1 mem1;
};
void main() { Derived objD (1, 2, 3, 4); }
A 134122 B 123412 C 14302023 D 143212
17 下面程序的输出结果是( )
#include <iostream>
using namespace std;
int countp=0;
class Point
{
int X,Y;
public:
Point(int x=0,int y=0) { X=x; Y=y;}
Point(Point &p){X=p.X;Y=p.Y;countp++;}
friend Point myfun(Point p1 ,Point p2 ,const Point &p3);
};
Point myfun(Point p1,Point p2,const Point &p3)
{
Point tmp(p1.X+p2.X+p3.X,p1.Y+p2.Y+p3.Y);
return tmp;
}
void main()
{
Point pp0,pp1(1,2),pp2(1);
myfun(pp0,pp1,pp2);
std::cout<<countp<<endl;
姓名: 学号: 系别: 计算机学院 年级专业: 09软件工程
( 密 封 线 内 不 答 题 )
……………………………………………………密………………………………………………封………………………………………线……………………………………线………………………………………
}
A 0 B 4 C 3 D 6
18 下面程序的输出结果是( )
#include <iostream >
using namespace std;
void swap1( int &v1, int &v2)
{
int tmp = v2;v2 = v1;v1 = tmp;
}
void swap1( int *v1, int *v2)
{
int tmp= *v2;*v2 = *v1;*v1 = tmp;
}
void main()
{
int i = 10, j = 20; swap1(i,j); swap1(&i,&j);
cout<<i<<”,”<<j<<endl;
}
A 10,20 B 20,10 C 10,10 D 20,20
19 下面的程序段的运营结果为( )
char str[] = "job", *p = str;
cout << *(p+2) << endl;
A 98 B 无输出结果 C 字符’b’的地址 D 字符’b’
20 double型数据所占字节数是( )
A 2 B 4 C 6 D 8
21 若变量都已经对的定义,以下表达式中非法的是( )
A a/=b+c B a % 4.0 C a=1/2*(x=y=10 , x*3) D a=b=c
22 以下选项中不是字符常量的是( )
A ‘\v’ B ‘\x6d’ C ‘w’ D “0”
23 以下非法的字符串常量为( )
A “\\ \\” B “It’s” C “m=\abc” D “$12.8”
24 对于类的常成员函数的描述对的的是( )
A 常成员函数不修改类的数据成员
B 常成员函数可以对类的数据成员进行修改
C 常成员函数只能由常对象调用
D 常成员函数不能访问类的数据成员
25 使用如setw()的操作符对数据进行格式输出时,应包含的头文献是( )
A iostream B fstream C stdio D iomanip
选择题答题纸:
1 21
2 22
3 23
4 24
5 25
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
姓名: 学号: 系别: 计算机学院 年级专业: 09软件工程
( 密 封 线 内 不 答 题 )
……………………………………………………密………………………………………………封………………………………………线……………………………………线………………………………………
Ⅱ 上机编码试题,共5小题,共50分,请按规定答在给定的项目文献中提交。
(本页不得撕掉! 答本大题前请先交卷!)
! 请于考试结束前关闭你的项目,删去你的文献夹下的Debug文献夹,然后把你的整个项目文献夹打包成一个“.rar”文献提交到下面服务器中相应的地方。
! 服务器 ftp://219.222.170.198
提交考试结果的用户名及密码username/password: cs2023w/ cs2023w
! 你的程序不能有编译错误,否则以0分记!以“ 陈晓雪”为例,提交的文献名应为“陈晓雪_面向对象A.rar”,解压后的文献夹也应为“陈晓雪_面向对象A”。(注:中间没有空格!)
1 创建一个VC6.0项目。规定:以你的学号+姓名+”_面向对象A”为项目名创建一个带“Hello World”的win32控制台应用程序。以“ 陈晓雪”为例,所创建项目的名称为“陈晓雪_面向对象A”(10分)
2 声明一个Point类,该类描述了直角坐标系中的一个点。成员变量为私有的double x,y; 成员函数涉及不带参数的构造函数;带两个参数(double x, double y)的构造函数,拷贝构造函数,分别取得x和y值的函数getX和getY。(10分)
3 从第2题的Point类派生出一个新类(名为Circle),该新类是描述圆的一个类,成员变量为私有的表达圆的半径double r。并请写出一个成员函数getMaxY,返回该圆在y轴最高点的坐标。(10分)
4 运算符重载。假设obj是第3题的Circle类的对象,obj++是指把当前圆的半径加1,请实现这个++运算符的重载。(10分)
5 刚学会加减法的小学生都知道1+1 = 2, 2- 1 = 1。但是他还暂时还算不出来1 – 2 = -1,而会认为1 – 2是减不动的,所以得不出对的的结果。现规定你写一个小学生的减法函数int sum(int x, int y),当出现减不动的情况时抛出一个异常消息为“减不动”的异常;并请在main函数中截获并显示该异常消息。(10分)
(请先撕掉本页,交卷,然后再答本大题!)
! 请于考试结束前关闭你的项目,删去你的文献夹下的Debug文献夹,然后把你的整个项目文献夹打包成一个“.rar”文献提交到下面服务器中相应的地方。
! 服务器 ftp://219.222.170.198
提交考试结果的用户名及密码username/password: cs2023w/ cs2023w
! 你的程序不能有编译错误,否则以0分记!以“ 陈晓雪”为例,提交的文献名应为“陈晓雪_面向对象A.rar”,解压后的文献夹也应为“陈晓雪_面向对象A”。(注:中间没有空格!)
1 创建一个VC6.0项目。规定:以你的学号+姓名+”_面向对象A”为项目名创建一个带“Hello World”的win32控制台应用程序。以“ 陈晓雪”为例,所创建项目的名称为“陈晓雪_面向对象A”(10分)
2 声明一个Point类,该类描述了直角坐标系中的一个点。成员变量为私有的double x,y; 成员函数涉及不带参数的构造函数;带两个参数(double x, double y)的构造函数,拷贝构造函数,分别取得x和y值的函数getX和getY。(10分)
3 从第2题的Point类派生出一个新类(名为Circle),该新类是描述圆的一个类,成员变量为私有的表达圆的半径double r。并请写出一个成员函数getMaxY,返回该圆在y轴最高点的坐标。(10分)
4 运算符重载。假设obj是第3题的Circle类的对象,obj++是指把当前圆的半径加1,请实现这个++运算符的重载。(10分)
5 刚学会加减法的小学生都知道1+1 = 2, 2- 1 = 1。但是他还暂时还算不出来1 – 2 = -1,而会认为1 – 2是减不动的,所以得不出对的的结果。现规定你写一个小学生的减法函数int sum(int x, int y),当出现减不动的情况时抛出一个异常消息为“减不动”的异常;并请在main函数中截获并显示该异常消息。(10分)
展开阅读全文