试卷代号:1075
国家开放大学2 0 1 9年秋季学期期末统一考试
C++语言程序设计试题
2020年1月
一、单选题(每小题2分,共40分)
1.下列实型常量中错误的是( )。
A.3. 25 B.+3. 25
C.-3. 25E+3 D.3.25e6.1
2.下列表达式中错误的是( )。
A.++x B.x-
C. (++x)一一 D.+ +x-
3.下列语句中,无意义的语句是( )。
A.k=3; B.-k;
C.k+3; D.k/=3;
4.有如下语句:
if (x>0) if(x>100) cout《“!!!”;else cout<<′!′;else
if(x<-302) cout《"???";else cout<<'?';
若x的值为-302,则执行此语句将输出( )。
A.! B.!!!
C. ? D.???
5.for语句的语法格式可表示为:
for(循环初始化;循环条件;循环参数调整)循环体
下列关于for语句的表述中,错误的是( )。
A.循环初始化中定义的变量的作用域仅限于此循环语句
B.循环条件应该是一个逻辑表达式
C.循环参数调整与循环体执行相同的次数
D.循环体至少执行一次
6.语句“char drm[]一{'A′,′B′,′C′,′D'),”定义了一个一维数组。关于此数组,下列表述中错误的是( )。
A.数组的名称是drm B.元素drm[3]的值是′C'
C.数组有4个元素 D.数组的最小下标是0
7.若要定义一个双精度二维数组data,使其元素的初始值排列如下:
1.1 2.2 3.3
1.1 2.2 0.0
0.0 0.0 0.0
则下列定义语句中错误的是( )。
A. double data[ ][3]={{1.1,2.2,3.3},{1.1,2.2}}
B. double data[3][3]={{1. 1,2.2,3.3),{1. 1,2. 2,0.0}};
C double data[ ][3]一“1.1,2.2,3.3},{1,2.2,0.0},{0.0,0.0,0.O}};
D. double data[3][3]={{1. 1,2. 2,3.3},{1. 1,2.2}};
8.若有如下函数:
int val(int n){return (n<=0 7 1:n+val(n/2));)
则执行语句“cout《val(10);”的输出是( )。
A.1 B.11
C.15 D. 19
9.下列函数原型中错误的是( )。
A. int f(int n=0,double d); B.int f(int n,double d=0.0);
C. int f(int n=0, double d=0.0); D.int f(int =O, double-0.0);
10.要想定义一个指向字符串”Hello!”的指针p,且不允许p改为指向别的字符串,则p应定义为( )。
A. char*const p='Hello!"; B. const char* p=“Hello!”;
C. char const p= "Hello!” D.const char p= “Hello!”;
11.已知执行了如下两个语句:
int* pl=new int(3);
int* p2=new int[3],
要想释放pl. p2所指向的动态空间,正确的语句序列是( )。
A. delete pl; delete p2; B.delete []pl; delete p2;
C. delete pl; delete []p2; D.delete []pl; delete []p2;
12.有如下类声明:
class MyClass{
public:
char c:
};
且有如下变量定义:
MyClass d,*pd= &d, &rd=d;
则下列访问类成员c的表达式中,正确的是( )。
A. pd.c和rd.c B. pd->c和rd->c
C.rd.c和pd->c D.rd->c和pd.c
13.关于默认的构造函数,下列表述中错误的是( )。
A.默认构造函数没有参数或所有参数都有默认值
B.如果类中没有声明任何构造函数,系统将自动生成默认构造函数
C.每个类最多只有一个默认构造函数
D. 每个类至少有一个默认构造函数
14.有如下定义:
class BBf
int k:
public:
BB(int n=0):k(n)()
};
class AAf
BB bb;
char cc,
public:
AA(int b,char c) ,//b用于初始化bh,c用于初始化ce
);
要在类体外给出类AA的构造函数的定义,正确的是( )。
A. AA(int b,char c):bb(b) ,cc(c)()
B. AA:: AA(int b,char c):cc(c), bb(b){}
C AA(int b,char c){bb. k=b; cc=c;)
D. AA:: AA(int b,char c){bb. k=b, cc=c;)
15.关于操作符重载,下列表述中错误的是( )。
A.每个重载的操作符是一个操作符函数
B.若重载+,相应操作符函数的名称是operator+
C.通过操作符重载,可以创造出新的操作符
D.重载的操作符不改变原操作符的优先级和结合性
16.有如下函数模板声明:
template<int n,typename Tl, typename T2 =int>
T2 add(T1 tl){ return tl+n,)
下列对模板函数add的调用中,错误的是( )。
A. add<3 ,int,int> (5) B.add<3 ,int> (5)
C add<3> (5) D. add(5)
17.关于基类和派生类,下列表述中错误的是( )。
A.一个基类可以有若干派生类
B.一个派生类可以有若干基类
C.基类是它的所有派生类的共性的体现
D.派生类继承基类的所有非私有成员作为自己的成员
18.关于虚函数,下列表述中错误的是( )。
A.只有用virtual修饰的函数才是虚函数
B.只有类的成员函数才能声明为虚函数
C.在派生类中可以重新定义基类声明的虚函数
D.静态成员函数不得声明为虚函数
19.关于类模板,下列表述中错误的是( )。
A.每一次定义模板类对象时,如果尚无相应的类定义,即刻生成该类的定义
B.类模板的声明、定义属于参考性声明,应放在头文件中
C.模板类可以是派生类,其基类不得是另一个模板类
D. 可以为类模板的最后若干参数设置默认值
20.下列符号中,不属于c++流定位方式的是( )。
A. ios_base:: end B.ios_base::cur
C. ios_base::app D.ios_base::beg
二、填空题c每小题2分,共20分)
21.c++语言中每条复合语句以左花括号开始,并以________结束。
22.假定y的值为5,则增量表达式++y的值为____。
23.假定整数变量x-48,则x/6的运算结果为 。
24.语句“char s[]=”Hello!”;”定义了一维字符数组s,其元素个数是____。
25.假定一个二维数组的定义为“int a[3][5];”,则该数组包含有 一个整型元素。
26.假定a是一个一维数组,则a[i]的指针访问方式为____。
27.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数
为 。
28.在公有继承方式下,基类的公有成员在派生类中的访问属性是____。
29.多态性包括编译时的多态性和____。
30.若程序中需要打开一文件用于输入,则须包含头文件____。
三、给出下列程序运行后的输出结果(每小题8分,共24分,
31.有如下程序:
# include<iostream>
using namespace std;
class Person f
public:
Person() { cout<<"Construct Person"<< endl;}
-Person(){cout<<"Destruct Person"<< endl,)
);
class Student:public Person{
public:
Student() {cout<<"Construct Student"<< endl;}
~Student() {cout<<"Destruct Student"<< endl;}
};
void main(){
Student s;
}
运行此程序的输出是( )。
32.有如下程序:
# include<iostream>
using namespace std;
int main(){
int x[]= {2,4,6,8,10,12), s=0;
int i=l;
do{s+一x[i];i+一5;)while(i<6);
cout《s,
return 0:
}
运行此程序的输出是( )。
33.有如下程序:
# include<iostream>
using namespace std;
int main(){
int x[]=(1,2,3,4,5),*px—x+4;
for(int i=O;i<2; i++) - -px,
cout《* px,
return 0:
)
运行此程序的输出是( )。
四、写出下列每个函数的功能(每小题8分,共16分)
34. bool WE(int a口,int b[],int n){
for(int i=0;i<n;i++)
if(a[i]!一b[i])break;
if(i=一n) return true; return false;
}
函数功能:
35. int LK(int a[] , int n) {
double s=0;
int i.m=0;
s=s/n,
return m;
}
函数功能 :