1 / 12
文档名称:

C++模拟题1答案.docx

格式:docx   大小:23KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C++模拟题1答案.docx

上传人:祖国的花朵 2025/2/8 文件大小:23 KB

下载得到文件列表

C++模拟题1答案.docx

相关文档

文档介绍

文档介绍:该【C++模拟题1答案 】是由【祖国的花朵】上传分享,文档一共【12】页,该文档可以免费在线阅读,需要了解更多关于【C++模拟题1答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。C++模拟题1答案
第 页 共 页

第 页 共 页
C++程序设计模拟试卷(一)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出得四个备选项中
只有一个就是符合题目要求得,请将其代码填写在题后得括号内。错选、多选或未选均无
分。
1、 编写C++程序一般需经过得几个步骤依次就是
A、 编辑、调试、编译、连接
B、 编辑、编译、连接、运行
C、 编译、调试、编辑、连接
D、 编译、编辑、连接、运行
答案:B
解析:(P21)经过编辑、编译、连接与运行四个步骤。编辑就是将C++源程序输入计算机得过程,保
存文件名为cpp。编译就是使用系统提供得编译器将源程序cpp生成机器语言得过程,目标文件为
obj,由于没有得到系统分配得绝对地址,还不能直接运行。连接就是将目标文件obj转换为可执行
程序得过程,结果为exe。运行就是执行exe,在屏幕上显示结果得过程。
2、 决定C++语言中函数得返回值类型得就是
A、 return语句中得表达式类型
B、 调用该函数时系统随机产生得类型
C、 调用该函数时得主调用函数类型
D、 在定义该函数时所指定得数据类型
答案:D
解析:(P51)函数得返回值类型由定义函数时得指定得数据类型决定得。A项得表达式得值要转换
成函数得定义时得返回类型。
3、 下面叙述不正确得就是
A、 派生类一般都用公有派生
B、 对基类成员得访问必须就是无二义性得
C、 赋值兼容规则也适用于多重继承得组合
D、 基类得公有成员在派生类中仍然就是公有得
答案:D
解析:(P136)继承方式有三种:公有、私有与保护。多继承中,多个基类具有同名成员,在它们
得子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则就是指
派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中得
公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
4、 所谓数据封装就就是将一组数据与与这组数据有关操作组装在一起,形成一个实体,这实体
也就就是
A、 类
B、 对象
C、 函数体
D、 数据块
答案:A
解析:(P39)类即数据与操作得组合体,数据就是类得静态特征,操作就是类具有得动作。
5、 在公有派生类得成员函数不能直接访问基类中继承来得某个成员,则该成员一定就是基类中

A、 私有成员
B、 公有成员
C、 保护成员
D、 保护成员或私有成员
C++模拟题1答案
第 页 共 页

第 页 共 页
答案:A
解析:(P133)在派生类中基类得保护或者基类公有都可以直接访问,基类得私有成员只能就是基类
得成员函数来访问。所以选择A项。
6、 对基类与派生类得关系描述中,错误得就是
A、 派生类就是基类得具体化
B、 基类继承了派生类得属性
C、 派生类就是基类定义得延续
D、 派生类就是基类得特殊化
答案:B
解析:(P129)派生类得成员一个就是来自基类,一个来自本身,所以派生类就是基类得扩展,也就是基
类得具体化与特殊化,派生类就是对基类扩展。B项基类不能继承派生类成员,所以错误。
7、 关于this指针使用说法正确得就是
A、 保证每个对象拥有自己得数据成员,但共享处理这些数据得代码
B、 保证基类私有成员在子类中可以被访问。
C、 保证基类保护成员在子类中可以被访问。
D、 保证基类公有成员在子类中可以被访问。
答案:A
解析:(P86)this指针就是隐藏得,可以使用该指针来访问调用对象中得数据。基类得成员在派生
类中能否访问,与继承方式有关,与this没有关系。所以选择A项。
8、 所谓多态性就是指
A、 不同得对象调用不同名称得函数
B、 不同得对象调用相同名称得函数
C、 一个对象调用不同名称得函数
D、 一个对象调用不同名称得对象
答案:B
解析:(P167)多态性有两种静态多态性与动态多态性,静态多态性就是指调用同名函数,由于参数
得不同调用不同得同名函数;动态多态性就是指不同对象调用同名函数时,由于对象不同调用不同
得同名函数。 多态性肯定具有相同得函数名,所以选择B项。
9、 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为
A、 内联函数
B、 重载函数
C、 递归函数
D、 嵌套函数
答案:A
解析:(P59)内联函数特征代码少,频繁调用,执行效率高。重载函数解决统一接口得问题;递
归就是子程序调用,程序调用要耗费很多空间与时间,循环/迭代都比递归有效率得多,递归只就是
从形式上,逻辑比较简洁。嵌套函数即反复调用,速度较慢。所以选择A项。
10、 下面函数模板定义中不正确得就是
A、 A
B、 B
C、 C
D、 D
答案:A
解析:(P147)A项中F就是一个返回Q类型得值,而return中用返回类型作为返回值错误。所以选择
A项。
11、 假设ClassY:publicX,即类Y就是类X得派生类,则说明一个Y类得对象时与删除Y类对象时
C++模拟题1答案
第 页 共 页

第 页 共 页
,调用构造函数与析构函数得次序分别为
A、 X,Y;Y,X
B、 X,Y;X,Y
C、 Y,X;X,Y
D、 Y,X;Y,X
答案:A
解析:(P130)派生类构造函数必须对这三类成员进行初始化,其执行顺序:调用基类构造函数
;调用子对象得构造函数;派生类得构造函数体。析构函数在执行过程中也要对基类与成员对象
进行操作,但它得执行过程与构造函数正好相反,即对派生类新增普通成员进行清理;调用成员
对象析构函数,对派生类新增得成员对象进行清理;调用基类析构函数,对基类进行清理,所以
选择A项。
12、 适宜采用inline定义函数情况就是
A、 函数体含有循环语句
B、 函数体含有递归语句
C、 函数代码少、频繁调用
D、 函数代码多、不常调用
答案:C
解析:(P59)内联函数具有程序代码少、频繁调用与执行效率高得特征,所以选择C项。
13、 假定一个类得构造函数为A(int aa,int bb) {a=aa;b=a*bb;},则执行A x(4,5);语句后
,x、a与x、b得值分别为
A、 3与15
B、 5与4
C、 4与20
D、 20与5
答案:C
解析:(P75)a=4,因为后减,b得值与a、bb相关,b=4*5=20,而与aa没有任何关系。
14、 在类中说明得成员可以使用关键字得就是
A、 public
B、 extern
C、 cpu
D、 register
答案:A
解析:extern用于声明外部变量得。register声明寄存器类型变量。无cpu类型。它们都不能声
明类成员。public声明为公有访问权限,所以选择A项。
15、 下列不能作为类得成员得就是
A、 自身类对象得指针
B、 自身类对象
C、 自身类对象得引用
D、 另一个类得对象
答案:B
解析:类得定义,如果有自身类对象,使得循环定义,B项错误。在类中具有自身类得指针,可
以实现链表得操作,当然也可以使用对象得引用。类中可以有另一个类得对象,即成员对象。所
以选择B选项。
16、 使用地址作为实参传给形参,下列说法正确得就是
A、 实参就是形参得备份
B、 实参与形参无联系
C、 形参就是实参得备份
D、 实参与形参就是同一对象
答案:D
解析:(P51)地址作为实参,表示实参与形参代表同一个对象。如果实参就是数值,形参也就是普通
C++模拟题1答案
第 页 共 页

第 页 共 页
变量,此时形参就是实参得备份。所以选择D项。
17、 下列程序得输出结果就是
#include <iostream、h>
void main
{int n[][3]={10,20,30,40,50,60};
int (*p)[3];
p=n;
cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;}
A、 10,30,50
B、 10,20,30
C、 20,40,60
D、 10,30,60
答案:B
解析:如果数组元素都就是相同类型得指针,则称这个数组为指针数组。指针数组一般用于处理二
维数组。声明得格式为:<数据类型><(*变量名)><[元素个数]>。
p表示指向数组n得行指针。如果将指针得初始化(*p)[3]=b;地址得等价形式:
p+i p[i]*(p+i)都表示b数组第i+1行得第1个元素得首地址。
*(p+i)+jp[i]+j &p[i][j]都表示b数组第i+1行、第j+1列元素得地址。
值得等价形式:
*(*(p+i)+j) *(p[i]+j) p[i][j]都表示b数组第i+1、第j+1列元素得值。
所以题目分别访问p[0][0],p[0][1],p[0][2]。
18、 在C++中,使用流进行输入输出,其中用于屏幕输入
A、 cin
B、 cerr
C、 cout
D、 clog
答案:A
解析:(P193)(1)标准输入流cin:istream类得对象。(2)标准输出流cout:ostream类得对象。
(3)非缓冲型标准出错流cerr:ostream类得对象。(4)缓冲型标准出错流clog:ostream类得对象
19、 假定AA为一个类,a为该类公有得函数成员,x为该类得一个对象,则访问x对象中函数
成员a得格式为
A、 x、a
B、 x、a
C、 x>a
D、 (*x)、a
答案:B
解析:(P41)对象访问成员得方式为:对象名、成员。指针可以有两种:(*对象指针)、成员或者对
象指针>成员。A选项就是访问数据成员,B项就是访问成员函数。
20、 关于对象概念得描述中,说法错误得就是
A、 对象就就是C语言中得结构变量
B、 对象代表着正在创建得系统中得一个实体
C、 对象就是类得一个变量
D、 对象之间得信息传递就是通过消息进行得
答案:A
解析:(P37)A对象在C++中才有,包括数据与操作两项,而C中得变量只有数据,没有操作。所
以A项错误。
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题得空格中填上正确答案
。错填、不填均无分。
1、 C++得流库预定义了4个流,它们就是cin、cout、clog与___。
答案:(P193)cerr
[解析]cin、cout、clog与cerr分别用于标准输入、输出、标准错误流(缓冲)与标准错误流
(非缓冲)。
2、 每个对象都就是所属类得一个___。
答案:(P69)实例
C++模拟题1答案
第 页 共 页

第 页 共 页
[解析]类就是对象得抽象,对象就是类得一个实例。
3、 在已经定义了整型指针ip后,为了得到一个包括10个整数得数组并由ip所指向,应使用语
句___。
答案:(P78)int *ip=new int[10];
[解析]new用来动态开辟空间。常用来产生动态数组及对象构造函数。
4、 函数模板中紧随template之后尖括号内得类型参数都要冠以保留字___。
答案:(P145)class
[解析]类模板得使用。template <class T>,也可以引入多参数得如:template <class
T1,class T2,、,class Tn>
5、 定义类得动态对象数组时,系统只能够自动调用该类得___构造函数对其进行初始化。
答案:(P80)无参
[解析]使用new创建对象数组,调用无参构造函数。
6、 表达式cout<<end1 还可表示为___。
答案:‘\n’
[解析]endl与字符常量‘\n’等价。
7、 在C++中,访问一个指针所指向得对象得成员所用得指向运算符就是___。
答案:>
[解析]指针使用成员有两种方法:“>”指向运算符与“、”成员访问运算符。
8、 假如一个类得名称为MyClass,使用这个类得一个对象初始化该类得另一个对象时,可以调
用___构造函数来完成此功能。
答案:(P80)复制或拷贝
复制或拷贝构造函数就就是用对象初始化新得对象。
9、 对赋值运算符进行重载时,应声明为___函数。
答案:(P183)类成员
[解析]运算符重载得方法有友元或者成员函数两种途径,但就是赋值运算符只能使用成员函数得
方法来实现。
10、 如果要把A类成员函数f且返回值为void声明为类B得友元函数,则应在类B得定义中加
入得语句___。
答案:(P109)friend void A::f;
[解析]成员函数作为另一个类得友元函数,格式为:friend 返回类型 类名::函数(形参)。
11、 下列程序段得输出结果就是___。
for(i=0,j=10,k=0;i<=j;i++,j=3,k=i+j);cout<<k;
答案:4
[解析]for循环结构,三个表达式得作用,初始化、循环判断条件与循环变量变化。循环执行了
三次,k得作用就是计算i、j得与。
12、 String 类得___方法返回查找到得字符串在主串得位置。
答案:(P40)find
[解析]string类对象方法得find,查不到字符串,则返回1。
13、 int n=0;
while(n=1)n++;
while循环执行次数就是___。
答案:无限次
[解析]=就是赋值运算符,不就是关系运算符,且不等0,所以死循环。
14、 控制格式输入输出得操作中,函数___就是用来设置填充字符。要求给出函数名与参数类型
答案:(P195)setfill(char)
[解析]格式控制方法得使用,如setw,setfill等等。
15、 C++语言支持得两种多态性分别就是编译时得多态性与___得多态性。
答案:(P167)运行时
[解析]多态性包括静态得(编译时)多态性与动态得(运行时)多态性。
16、 设函数sum就是由函数模板实现得,并且sum(3,6)与sum(4、6,8)都就是正确得函数调用,则函
数模板具有___个类型参数。
C++模拟题1答案
第 页 共 页

第 页 共 页
答案:(P61)2
17、 执行下列代码
string str("HelloC++");
cout<<str、substr(5,3);
程序得输出结果就是___。
答案:(P42)C++
[解析]substr取子字符串,第1个参数表示要截取子串在字符串中得位置,第2个表示取多少个
字符。
18、 在面向对象得程序设计中,将一组对象得共同特性抽象出来形成___。
答案:(P38)类
[解析]类就是相似特征得对象得抽象,对象就是类得一个实例。
19、 定义类动态对象数组时,元素只能靠自动调用该类得___来进行初始化。
答案:(P77)无参构造函数
[解析]使用new 创建动态对象数组,不能有参数,所以只能调用无参得构造函数,初始化对象
20、 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句就是___。
答案:(P151)vector <int>V2(V1);
[解析]采用向量初始化另一个向量得形式:vector <type> name1(name);
三、改错题(本大题共5小题,每小题2分,共10分)下面得类定义中有一处错误,请用下
横线标出错误所在行并给出修改意见。
1、 #include <iostream、h>
class Test
{private:
int x,y=20;
public:
Test(int i,int j){x=i,y=j;}
int getx{return x;}
int gety{return y;}
};
void main
{Test mt(10,20);
cout<<mt、getx<<endl;
cout<<mt、gety<<endl;
}
答案:int x,y=20;在类内部不能对数据成员直接赋值。
[修改]int x,y;
2、 #include <iostream、h>
class Test
{int x,y;
public:
fun(int i,int j)
{x=i;y=j;}
show
{cout<<"x="<<x;
if(y)
cout<<",y="<<y<<endl;
cout<<endl;}
};
void main
{Test a;
a、fun(1);
a、show;
a、fun(2,4);
a、show;
}
答案:int i,int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认
值。所以int i,int j错误。
C++模拟题1答案
第 页 共 页

第 页 共 页
[修改]int i,int j=0//注j只要有一个int类型得数据就行。
3、 #include <iostream、h>
class A
{int i;
public:
virtual void fun=0;
A(int a)
{i=a;}
};
class B:public A
{int j;
public:
void fun
{cout<<"B::fun\n"; }
B(int m,int n=0):A(m),j(n){}
};
void main
{A *pa;
B b(7);
pa=&b;
}
答案:B(int m,int n=0):A(m),j(n){}因为基类就是抽象类,不能被实例化,所以在派生类中不能
调用初始化基类对象。所以B(int m,int n=0):A(m),j(n){}错误,删去A(m)。
[修改]B(int m,int n=0):j(n){}
4、 #include <iostream、h>
class X
{public:
int x;
public:
X(int x)
{cout<<this>x=x<<endl;}
X(X&t)
{x=t、x;
cout<<t、x<<endl;
}
void fun(X);
};
void fun(X t)
{cout<<t、x<<endl;}
void main
{fun(X(10));}
答案:cout<<this>x=x<<endl;要输出this>x=x表达式得值要加括号。
[修改]cout<<(this>x=x)<<endl;
5、 #include <iostream、h>
#include <string、h>
class Bas
{public:
Bas(char *s="\0"){strcpy(name,s);}
void show;
protected:
char name[20];
};
Bas b;
void show
{cout<<"name:"<<b、name<<endl;}
void main
{Bas d2("hello");
show;
}
C++模拟题1答案
第 页 共 页

第 页 共 页
答案:void show;就是普通函数不就是成员函数,但就是要访问类成员,需要定义为友元函数。
[修改]friend void show;
四、完成程序题(本大题共5小题,每小题4分,共20分)
1、 在下面程序横线处填上适当字句,以使该程序执行结果为:
50 4 34 21 10
0 7、1 8、1 9、1 10、1 11、1
#include <iostream、h>
template <class T>
void f (__________)
{__________;
for (int i=0;i<n/2;i++)
t=a[i], a[i]=a[n1i], a[n1i]=t;
}
void main
{int a[5]={10,21,34,4,50};
double d[6]={11、1,10、1,9、1,8、1,7、1};
f(a,5);f(d,6);
for (int i=0;i<5;i++)
cout <<a[i]<< "";
cout <<endl;
for (i=0;i<6;i++)
cout << d[i] << "";
cout << endl;
}
答案:T a[],int n,T t;
[解析]不同得数据类型得调用,使用了模板。f函数增加t变量,因为实参类型不同,所以t得
类型应该就是T类型得。
2、 在下面程序得底画线处填上适当得字句,使该程序执行结果为40。
#include <iostream、h>
class Test
{ public:
______;
Test (int i=0)
{x=i+x;}
int Getnum
{return Test::x+7;}
};
_______;
void main
{Test test;
cout<<test、Getnum<<endl;;
}
答案:static int x;,int Test::x=33;
[解析]从成员函数访问方式类名::成员可知就是静态成员所以static int x;从结果要对初始
化为33,且在类外进行初始化, int Test::x=33;。
3、 在下列程序得空格处填上适当得字句,使输出为:0,2,10。
#include <iostream、h>
#include <math、h>
class Magic
{double x;
public:
Magic(double d=0、00):x(fabs(d))
{}
Magic operator+(______)
{
return Magic(sqrt(x*x+c、x*c、x));
}
_______operator<<(ostream & stream,Magic & c)
C++模拟题1答案
第 页 共 页

第 页 共 页
{ stream<<c、x;
return stream;
}
};
void main
{Magic ma;
cout<<ma<<", "<<Magic(2)<<", "<<ma+Magic(6)+
Magic(8)<<endl;
}
答案:operator+(Magic&c),friend ostream&operator
[解析]对加法进行重载,operator+(Magic & c),就是对插入符进行重载,要访问成员所以定义
为友元函数,friend ostream & operator。
4、 下面就是一个输入半径,输出其面积与周长得C++程序,在下划线处填上正确得语句。
#include <iostream>
_________;
_________;
void main
{double rad;
cout<<"rad=";
cin>>rad;
double l=2、0*pi*rad;
double s=pi*rad*rad;
cout<<"\n The long is:"<<l<<endl;
cout<<"The area is:"<<s<<endl;}
答案:using namespace std,#define pi 3、14159
[解析]进行输入或输出要引入iostream, 所以using namespace std;从标点瞧没有分号,所以
使用宏定义,#define pi 3、14159。//const double pi=3、14159
5、 程序实现大写字母转换成小写字母。
#include <iostream、h>
void main
{char a;
_______;
cin>>a;
if(_______)
a=a+i;
cout<<a<<endl;
}
答案:int i=32;,a>=’A’ && a<=’Z’
[解析]大写字母变小写字母相差32,需要对i声明并初始化。大写字母变小写字母。要判断字
符就是大写字母。
五、程序分析题(本大题共4小题,每小题5分,共20分)
1、 给出下面程序输出结果。
#include<iostream、h>
class a
{public:
virtual void print
{cout<< "a prog、、"<< endl;};
};
class b:public a
{};
class c:public b
{public:
void print{cout<<"c prog、、"<<endl;}
};
void show(a *p)
{(*p)、print;
}
void main
C++模拟题1答案
第 页 共 页

第 页 共 页
{a a;
b b;
c c;
show(&a);
show(&b);
show(&c);
}
答案:a prog、、
a prog、、
c prog、、
[解析]考查多态性得。a类对象调用本身得虚函数,b类因为没有覆写print,所以仍然调用基
类得虚函数。而c类重新定义print虚函数,所以调用c类得print。
2、 给出下面程序输出结果。
#include <math、h>
#include <iostream、h>
#include <iomanip、h>
bool fun(long n);
void main
{long a=10,b=30,l=0;
if(a%2==0) a++;
for(long m=a;m<=b;m+=2)
if(fun(m))
{if(l++%10==0)
cout <<endl;
cout <<setw(5) <<m;
}
}
bool fun(long n)
{int sqrtm=(int)sqrt(n);
for(int i=2;i<=sqrtm;i++)
if(n%i==0)
return false;
return true;
}
答案:11 13 17 19 23 29
[解析]循环体用来判断n就是否就是质数得函数,在main函数判断10~30之间质数。
3、 给出下面程序输出结果。
#include <iostream、h>
class Test
{int x,y;
public:
Test(int i,int j=0)
{x=i;y=j;}
int get(int i,int j)
{return i+j;}
};
void main
{Test t1(2),t2(4,6);
int (Test::*p)(int,int=10);
p=Test::get;
cout<<(t1、*p)(5)<<endl;
Test *p1=&t2;
cout<<(p1>*p)(7,20)<<endl;
}
答案:15 27
[解析]指向类成员函数得指针得使用,*p指向Test类中有两个参数得函数得一个指针。
P=Test::get、这样p就与get发生了联系。(t1、*p)(5)等价于调用一个参数得get函数。
4、 #include <iostream、h>

最近更新

2025年普法学法知识竞赛题库及参考答案(新).. 49页

2025年汽车维修工技能理论考试题库(精选题).. 46页

2025年国家电网招聘之经济学类考试题库附答案.. 79页

XX年度学习部工作计划 4页

2025年国家电网招聘之经济学类考试题库【考点.. 80页

2025年环境影响评价工程师之环评法律法规考试.. 195页

2025年土地登记代理人之土地登记相关法律知识.. 179页

2025年监理工程师之交通工程目标控制考试题库.. 169页

2025年汽车维修工技能理论考试题库附答案【名.. 45页

22025x年基层司法所工作计划 5页

2025年法律常识题库含答案【实用】 58页

2025年法律常识题库附答案【培优b卷】 58页

2025年注册土木工程师考试题库及参考答案【精.. 164页

2025年法律常识题库及参考答案(实用) 59页

2025年马原考试题库及参考答案1套 95页

交管12123学法减分复习题库及参考答案【达标题.. 45页

2025年环境影响评价工程师之环评法律法规考试.. 192页

交管12123学法减分复习题库(模拟题) 45页

县乡教师选调考试《教师职业道德》题库附完整.. 46页

2025年环境影响评价工程师之环评法律法规考试.. 195页

2025年监理工程师之交通工程目标控制考试题库.. 171页

2025年监理工程师之土木建筑目标控制考试题库.. 170页

2025年武汉警官职业学院单招职业技能测试题库.. 73页

2025年辽宁经济职业技术学院单招职业技能测试.. 75页

2025年人教版数学七年级下册期末考试试卷及答.. 19页

2025年度新版一级建造师教材 6页

学前班拼音教案全集(共44页) 51页

万科实测检查数据上墙操作指引 17页

维克多新高中英语阅读高一 4页

建筑工程量计算方法(含图与计算公式) 21页