报名本机构合作学校,赠送复习资料,复习课程,确保录取。并且可以申请学校奖学金500元~1500元不等!
试卷代号:1075
国家开放大学2021年秋季学期期末统一考试
C++语言程序设计 试题
2022年1月
一、单选题(每小题2分,共40分)
1.以下程序段的输出为( )。
www.bnjyedu.cn
int i,a;
for(i=O;i<=10;i++)
a=i;
cout<<i;
A.O B.9
C.10 D.11
2.下列表达式中,不属于简单表达式的是( )。
A.-k B.f(a,b)
C.2050139 D.my_name_is_zhang_san
3.下列表达式中,有副作用的是( )。
A.i++B.i+3
C.i>3 D.i==3
4.若OK是一个逻辑型变量,则在下列语句中,与其他语句输出不同的那个语句是( )。
A.if(OK) cout<<“!!”;else cout<<“??”;
B.if(OK==true) cout<<“!!”;else cout<<“??”;
C.if(!OK==true) cout<<”!!”;else cout<<"??”;
D.if(!OK)cout<<“??”;else cout《“!!”;
5.while语句的语法格式可表示为:
while(循环条件)循环体
下列关于while语句的表述中,错误的是( )。
A.循环条件应该是一个逻辑表达式
B.循环条件至少执行一次
C.循环体是一个表达式
D.循环体有可能一次都不执行
6.语句“double brm[5]={1,2,3};”定义了一个一维数组。关于此数组,下列表述中错误的是( )。
A.数组的名称是brm
B.数组的类型是双精度实型
C.数组有5个元素
D.元素brm[l]的初值是1
7.语句“int data[][3]={(1,2,3),{1,2),(1));”定义了一个二维数组。关于此数组,下列表述中错误的是( )。
A.数组名称是data B.数组有6个元素
C.最大列下标是2 D.元素data[2][1]的值为0
8.已知f是一个无参有返回值函数。下列对f的调用中,作为语句调用的是( )。
A.f()+1; B.x=f();
C.cout<<f(); D.f();
9.已知函数f的原型是:void f(int xy[],int size);,其中size表示数组xy的元素个数,且还有如下数组定义:
int a[]={1,2,3,4,5,6);
下列对f的调用中正确的是( )。
A.f(a[],6) B.f(a,6)
C.f(xy[],6) D.f(xy,6)
10.要想定义一个指向字符串”Hello!”的指针p,且不允许通过p修改所指向的字符串,
则p应定义为( )。
A.char*const p= “Hellol”;
B.const char*p=“Hello! ”;
C.char const p=“Hello!”;
D.const char p=“Hello!”;
11.下列语句定义变量p使得语句“cout<<p;”输出单词Goodmorning,其中错误的定
义语句是( )。
A.char p[]=“Goodmorning”;
B.char*p=“Goodmorning”;
C. char p[]= {‘G’,‘O’,‘O’,‘d’,‘m’,‘O’,‘r',‘n',‘i’,‘n’,‘g’,‘\0'};
D.char*p={‘G',‘O',‘O',‘d',‘m',‘0',‘r',‘n',‘i',‘n',‘g',‘\0');
12.有如下类声明:
class{
int i,j;
prlvate:
int m;
public:
int n:
private:
int p;
};
其中私有成员的个数是( )。
A.2 B.3
C.4 D.5
13.关于类的构造函数,下列表述中错误的是( )。
A.每个类至少有两个构造函数
B.构造函数的名称与类名相同
C.可以不提供实参的构造函数称为默认的构造函数
D.构造函数可以重载
14.关于复制构造函数,下列表述中错误的是( )。
A.复制构造函数参照参数传来的对象来初始化同类的新对象
B.每个类可以有多个复制构造函数
C.如果类中没有声明复制构造函数,系统将自动生成一个默认的复制构造函数
D.默认的复制构造函数以内存映像复制的方式来初始化新对象
15.已知应用系统中已声明了如下函数:
int block(double,int=0);
下列函数声明试图重载block,其中正确的是( )。
A. double block(double,int);
B. int block(double,int, char= ‘A’);
C. int block(double,long=0);
D. int block(double,int, char);
16.关于函数模板,下列表述中错误的是( )。
A.函数模板声明以保留字template开头
B.必须用虚拟类型参数声明模板函数返回值的类型
C.调用模板函数时,模板实参在一定条件下可以省略
D.在调用模板函数时,根据需要,有可能生成该函数模板的一个实例
17.关于基类和派生类,下列表述中错误的是( )。
A.-个基类可以有若干派生类
B.-个派生类可以有若干基类
C.基类是它的所有派生类的共性的体现
D.派生类继承基类的所有非私有成员作为自己的成员
18.关于虚函数,下列表述中错误的是( )。
A.只有用virtual修饰的函数才是虚函数
B.只有类的成员函数才能声明为虚函数
C.在派生类中可以重新定义基类声明的虚函数
D.静态成员函数不得声明为虚函数
19.关于类模板,下列表述中错误的是( )。
A.类模板以保留字template开头
B.类模板的每一个实例就是一个类定义
C.可以为任意的一个或多个模板参数设置默认值
D.有默认值的实参在一定条件下可以省略
20.下列标识符中,不属于C++流操纵符的是( )。
A.delete B.setw
C.endl D.right
二、填空题(每小题2分,共20分)
21.程序开发过程的四个步骤按正确的顺序分别称作____。
22.有如下枚举声明:
enum ANIMAL{ DOG, CAT=35, PIG, HEN, DOVE};
其中DOVE所对应的整数是 。
23.结束所在循环类语句或switch语句执行的中断语句的保留字为 。
24.语句“float p[5]={1-lf,2.2f,3.3f};”定义了一维数组p,其元素个数是____。
25.若一函数直接或间接调用了该函数自身,此种类型的调用称为 ____。
26.有两个不同操作符都用符号*表示,一个用于乘法,另一个用于____ 。
27.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的
使其初始化。
28.重载“/”的操作符函数的名称是____ 。
29.具有纯虚函数的类称为 ____。
30.在C++流中,endl、setw、left等用于控制流的输入输出的符号统称为 。
三、给出下列程序运行后的输出结果(每小题8分,共24分)
31.有如下程序 :
# include<iostream>
using namespace std;
class A {
private :
int n;
public :
A(int i){n=I;}
A& operator++()(n++;return*this;)
A operator ++(int){n+=2;return*this;)
void Display() {cout<<“n=”<<n<<endl;)
};
void main(){
A a(2),b(2);
a++;
++b;
a.Display();
b.Display();
}
运行此程序的输出是( )。
32.有如下程序:
# include<iostream>
using namespace std;
int main(){
int X[]=(2,4,6,8,10,12),s=0;
for(int i=l; i<6; i+=2) s+=x[i];
cout<<s,
return 0:
}
运行此程序的输出是( )。
33.有如下程序:
# include<iostream>
using namespace std;
int main(){
int x[]=<1,2,3,4,5),*px=x;
for(int i=O;i<5; i++) cout<<*(px+i);
return O:
}
运行此程序的输出是( )。
四、写出下列每个函数的功能(每小题8分,共16分)
34.int WD(int a[], int n) {
int m=a[0];
for(int i=l;i<n;i++)
if(a[i]>n) m=a[i];
return m;
}
35.double Fl(int n)(//n为大于等于1的整数
double x,y=0;
do{
cin>>x;
y+=x*x;
}while(--n);
return y;
}
函数功能:
微信扫码添加好友
如二维码无法识别,可拨打 13662661040 咨询。