C++程序设计自考题模拟11.docx
《C++程序设计自考题模拟11.docx》由会员分享,可在线阅读,更多相关《C++程序设计自考题模拟11.docx(16页珍藏版)》请在冰豆网上搜索。
C++程序设计自考题模拟11
C++程序设计自考题模拟11
(总分:
100.00,做题时间:
90分钟)
一、第Ⅰ部分选择题
单项选择题(总题数:
20,分数:
20.00)
1.C++语言头文件的扩展名为______
(分数:
1.00)
A..h √
B..cpp
C..c
D..exe
解析:
[考点]C语言头文件的扩展名
[解析]C语言一直使用扩展名为.h来标识头文件。
2.下面可以做标识符首个字符的是______
(分数:
1.00)
A..a √
B.1
C.&
D.+
解析:
[考点]C++标识符
[解析]C++标识符以大小写字母或下画线开始,由大小写字母下画线、数字组成。
所以只有A项是正确的。
3.下列表达式中不能出现在赋值运算“=”左侧的是______
(分数:
1.00)
A.f(a,b)
B.a=b
C.*p
D.&a √
解析:
[考点]表达式左值
[解析]&a为取变量的地址,不能被修改,故不能作为表达式左值。
4.C++标准的输入/输出库的头文件是______
(分数:
1.00)
A.cmath
B.iostream √
C.string
D.algorithm
解析:
[考点]C++标准的输入/输出流库
[解析]C++标准的输入/输出流库的头文件是iostream。
5.使用指针,用户给它分配地址后,不再使用时,释放空间需要使用的关键字是______
(分数:
1.00)
A.new
B.delete √
C.extern
D.auto
解析:
[考点]动态分配内存
[解析]C++程序中由new分配的动态内存空间必须通过delete释放。
6.与一般的C++程序语句相区别的预处理语句不包含______
(分数:
1.00)
A.宏定义
B.文件包含
C.条件编译
D.变量定义 √
解析:
[考点]C++语言的预处理语句
[解析]C++的预处理语句有三种,分别是宏定义、文件包含、条件编译。
7.下列对C++语句注释正确的是______
(分数:
1.00)
A./*ThisisaCprogram/*
B.//ThisisaCprogram √
C.“ThisisaCprogram”
D.//ThisisaCprogram//
解析:
[考点]C++的注释方式
[解析]C++有两种注释方式:
一种是从“/*”开始,直到“*/”结束;另一种是“//”,注释的有效范围从“//”至本行结束。
8.用来取对象存储首地址的运算符是______
(分数:
1.00)
A.%
B.& √
C.^
D.#
解析:
[考点]地址运算符
[解析]地址运算符&用来取对象存储的首地址。
9.关于已定义的类A,语句A*pa=newA(5),下列说法正确的是______
(分数:
1.00)
A.该语句会创建A类的一个对象,并将此对象的地址赋给指针pa √
B.当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放
C.该语句会创建A类的5个对象,且它们的地址是连续的
D.类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数
解析:
[考点]动态分配内存
[解析]本题是通过使用new调用构造函数创建一个对象,并将此对象的地址赋值给指针pa。
要注意与A*pa=newA[5]进行区别,A*pa=newA[5],是创建5个对象。
10.dec操控符的含义是______
(分数:
1.00)
A.设置转换基数为二进制
B.设置转换基数是八进制
C.设置转换基数是十进制 √
D.设置转换基数是十六进制
解析:
[考点]C++常用操控符的含义
[解析]dec设置转换基数为十进制。
11.为了保持一个int类型变量内容的持久,最好定义它为______
(分数:
1.00)
A.register
B.auto
C.extern
D.static √
解析:
[考点]静态变量
[解析]在程序中频繁使用的int类型变量,static的作用是保持变量内容的持久。
12.使用string类建立对象的不正确方式是______
(分数:
1.00)
A.stringstr("OK");
B.stringstr="OK";
C.stringstr;
D.stringstr="OK"; √
解析:
[考点]sring类对象的初始化
[解析]string类的对象不能用单引号括起来的单个字符常量初始化进行对象的建立。
13.下列有关设置函数参数值的描述中,不正确的是______
(分数:
1.00)
A.设置了默认值的参数右边不允许出现没有指定默认值的参数
B.参数默认值的设置顺序从参数表的右端开始
C.参数默认值可以设置在定义语句中,也可以设置在声明语句中
D.参数默认值可以是数值不可以是表达式 √
解析:
[考点]默认参数
[解析]如果一个函数中有多个参数,则默认参数应从右至左逐个定义,A、B正确;参数默认值可以设置在声明语句中,如在函数原型中指定默认参数,C正确。
14.使用char定义的字符串尾部的结束符是______
(分数:
1.00)
A."/0" √
B.end
C."/n"
D."/r"
解析:
[考点]char定义的字符串结束符
[解析]使用char定义的字符串尾部的结束符是"/0"。
15.关于模板的定义,下列不正确的是______
(分数:
1.00)
A.template<classQ>QF(Qx){returnQ+x;} √
B.template<classQ>QF(Qx){returnx+x;}
C.template<classT>TF(Tx){returnx*x;}
D.template<classT>TF(Tx){returnx;}
解析:
[考点]函数模板
[解析]Q是数据类型,不是变量,所以不能作为返回值。
16.关于下列数据类型,表达的数值范围最广的是______
(分数:
1.00)
A.unsignedint
B.unsignedlong
C.double √
D.long
解析:
[考点]C++数据类型
[解析]类型最高即数值范围最广。
double类型:
1.7E-308~1.7E+308。
unsingendint:
0~4294967295。
unsignedlong:
0~4294967295。
long:
-2147483648~2147483647。
所以应选C。
17.设inta=12;则执行完语句"a+=a*a";后,a的值为______
(分数:
1.00)
A.12
B.144
C.156 √
D.288
解析:
[考点]C++数学运算符的简单运算
[解析]a+=a*a,即a=a+a*a,将a=12代入上式,即可得156。
18.对s1,s2,s3,s4字符数组初始化操作正确的是______
(分数:
1.00)
A.chars1[]="abcd"; √
B.chars2[3]="xyz";
C.chars3[][]={"a","x","y"};
D.chars4[2][3]={"xyz","mnp""};
解析:
[考点]字符数组的初始化
[解析]A是用字符串常量初始化字符数组,B赋值个数超过了数值长度,C二维数组每行应放一个字符串,D原因同B。
19.设int&min(int&,int&)返回两参数中较小者,如有两整型变量inta=5,intb=10;在执行min(a,b)--后,a,b的值分别为______
(分数:
1.00)
A.4,10 √
B.5,10
C.4,9
D.5,9
解析:
[考点]引用作为函数参数
[解析]执行min(a,b)--后,函数返回变量a后减1,即a=4。
b值未变,值仍为10,所以答案选A。
20.关于函数重载的描述正确的是______
(分数:
1.00)
A.函数的参数个数不能相同
B.函数参数的数据类型不能相同
C.函数的返回值可以相同
D.函数的返回值不能相同 √
解析:
[考点]C++中函数重载
[解析]函数重载的形参必须不同,或者个数不同或者类型不同(无论函数返回值类型如何)。
二、第Ⅱ部分非选择题
填空题(总题数:
20,分数:
20.00)
21.C++可以使用提取操作符“>>”,从1输入流中提取字符。
(分数:
1.00)
解析:
cin[考点]C++输入/输出对象
[解析]C++使用提取操作符“>>”,从cin输入流中提取字符。
22.使用STL库中的算法对数组进行升幂排序、反转、复制数组的内容等操作,需要包含头文件1。
(分数:
1.00)
解析:
<algorithm>[考点]数组操作
[解析]使用STL库中的算法,可以实现对数组简单的操作,不过需要在程序源文件中包含头文件<algorithm>。
23.动态分配内存使用关键字1,释放内存使用关键字2。
(分数:
1.00)
解析:
newdelete[考点]对指针分配和释放空间
[解析]在使用指针时,如果不使用对象地址初始化指针,可以自己给它分配地址。
当不再使用时,使用delete指针名,即可释放已经申请的存储空间。
24.程序的主函数、全局说明、1和用户自定义的函数是C++程序一般包含的四部分。
(分数:
1.00)
解析:
预处理指令[考点]C++程序的结构
[解析]C++程序一般可以分为四个部分:
程序的主函数、全局说明、预处理指令、用户自定义的函数。
25.通知函数,它只能使用参数而无权修改它,使用的修饰符是1。
(分数:
1.00)
解析:
const[考点]使用const保护数据
[解析]用const修饰传递参数,意思是通知函数,它只能使用参数而无权修改它。
26.给定申请一个对象数组的语句
Shape*p1=newShape[3];
则在需要释放p1指向的数组对象时,使用的语句是1。
(分数:
1.00)
解析:
delete[]p1;[考点]指针空间的释放
[解析]C++为结构动态分配内存后,当不再使用这个空间时,必须使用ddete释放空间。
27.在C++语言中,唯一的一个三目运算符是1。
(分数:
1.00)
解析:
表达式1:
?
表达式2:
表达式3[考点]C++运算符
[解析]C++中唯一的一个三元运算符是条件运算符“?
”,它能够实现简单的选择功能。
28.C++语言支持两种多态性,分别是编译时多态和1。
(分数:
1.00)
解析:
运行时多态[考点]C++多态性
[解析]C++语言支持两种多态性,即编译时多态和运行时多态。
29.C++语言程序设计的三种基本结构:
1、2、3。
(分数:
1.00)
解析:
顺序结构选择结构循环结构[考点]C++的算法的基本控制结构
[解析]C++算法控制结构有三种:
顺序结构、选择结构、循环结构。
30.C++提供使用1类提供的接口和使用带操控符的特殊函数,这两种格式的控制方式。
(分数:
1.00)
解析:
ios-base[考点]C++控制方式
[解析]C++提供了两种格式的控制方式,使用ios-base类提供的接口和使用带控制符的特殊函数。
31.C++专门定义了一个仅仅用在模板中的关键字1,它的用途之一是代替template参数列表中的关键字class。
(分数:
1.00)
解析:
typename[考点]函数模板中的关键字
[解析]C++专门定义了一个仅仅用在模板中的关键字typename,它的用途之一是代替template参数列表中的关键字class。
32.下面程序运行结束后,c的值为1。
#include<iostream.h>
voidmain()
{inta,b,c;
for(inta=0,b=10;a<=b;a++,b--)
c=a+b;
cout<<c;
}
(分数:
1.00)
解析:
10[考点]C++循环结构
[解析]c依次进行的运算是:
0+10、1+9、2+8、3+7、4+6、5+5,最后结果为10。
33.不同的对象可以调用相同名称的函数,但可导致完全不同的行为的形象称为1。
(分数:
1.00)
解析:
多态性[考点]面向对象的程序设计的多态性
[解析]利用多态性,程序中只需进行一般形式的函数调用,函数的实现细节留给接受函数调用的对象,这大大提高了我们解决复杂问题的能力。
34.C++源程序经1后生成扩展名为.exe的可执行程序文件。
(分数:
1.00)
解析:
编译连接[考点]C++程序的开发过程
[解析]编译时将程序的源代码转换为机器语言代码,然后经连接,将多个目标文件以及库中的某些文件连在一起,生成一个后缀为.exe的可执行文件。
35.数据封装给数据提供了与外界联系的标准1,通过它,使用规范的方式,才能访问这些数据。
(分数:
1.00)
解析:
接口[考点]面向对象的程序设计的多态性
[解析]对象的外部操作对外提供一个信息接口,通过这个接口接受对象外部的消息并为之提供操作。
36.1是具有相同的属性和操作的一组对象集合。
(分数:
1.00)
解析:
类[考点]类的定义
[解析]类为属于该类的全部对象提供了统一的描述,其内部包括属性和操作两个主要部分。
37.使用STL库中的算法,实现查找数组内容的函数是1。
(分数:
1.00)
解析:
find[考点]数组的操作
[解析]查找数组内是否存在某个值的元素,使用find函数,find(a,a+len,value)。
38.C++程序运行时的内存空间可以分成:
全局数据区、堆区、线区、1。
(分数:
1.00)
解析:
代码区[考点]C++内存空间
[解析]C++程序运行时,内存空间可以分为全局数据区、堆区、线区、代码区。
39.声明一个函数function,无返回值,有一个参数类型是double,则声明function函数原型是1。
(分数:
1.00)
解析:
voidfunction(doublea);[考点]函数定义的语法形式
[解析]函数定义的语法形式是:
类型标识符函数名{形式参数表}
{
语句序列
}
40.执行代码:
inta=64;cout<<hex<<a;程序的输出结果是1。
(分数:
1.00)
解析:
40[考点]数据的简单输入和输出格式
[解析]hex设置转换基数为十六进制,64的十六进制表示为40。
三、改错题(总题数:
5,分数:
20.00)
41.#include<iostream>
usingnamespacestd;
voidmain1{
inta;
cin>>a;
return0;
}
(分数:
4.00)
解析:
去除return0;[考点]返回值类型的使用
[解析]main函数声明返回值类型为void,所以不能出现return0。
42.#inelude<iostream>
#include<iomanip>
usingnamespacestd;
voidmain1{
inta=29;
cout<<a<<setw(6)<<endl;}
(分数:
4.00)
解析:
应改为cout<<setw(6)<<a<<endl;[考点]设置输出宽度只对紧接着的那个元素有效
[解析]使用setw设置输出宽度放在a前边,只对a元素有效。
43.修改程序中的错误,使其输出为10,20。
#include<iostream>
usingnamespacestd;
voidswap(inta,intb)
{inttemp;
temp=a;a=b;b=temp;}
voidmain1
{intx=20,y=10;
swap(x,y);
cout<<x<<""<<y<<endl;
}
(分数:
4.00)
解析:
voidswap(inta,intb)语句有误[考点]引用作为函数参数
[解析]可以使用引用作为函数参数,实参对象名传给形参对象名,实参对象和形参对象代表同一个对象,所以改变形参对象的值就是改变实参对象的值。
44.#include<iostream>
usingnamespacestd;
voidmain1{
int*ptr1,*ptr2,a,b,t;
cout<<"请输入两个整数:
"<<endl;
cin>>a>>b;
ptr1=&a;
ptr2=&b;
if(ptr1<ptr2)
{t=a;a=b;b=t;}
cout<<"max="<<*ptr1<<",min="<<*ptr2<<endl;
}
(分数:
4.00)
解析:
if(ptr1<ptr2)改为if(*ptr1<*ptr2)[考点]指针的使用
[解析]比较a、b的大小,应是指针指向的值的比较,所以应该加上*号。
45.voidoperate(conststring&str){
str=str+"ok"}
voidmain1{
stringstr="Iam";
operate(str);
}
(分数:
4.00)
解析:
voidoperate(conststring&str)改为voidoperate(string&str)[考点]使用const保护数据
[解析]用const修饰传递参数,意思是通知函数,它只能使用参数而无权修改它。
四、完成程序题(总题数:
5,分数:
20.00)
46.使用do-while语句编程,求自然数1~10之和。
#include<iostream>
usingnamespacestd;
voidmain(){
inti
(1),sum(0);
do{
______;
i++;
}while(______);
cout<<"sum="<<sum<<endl;}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
sum+=i;i<=10[考点]C++循环结构的使用
[解析]实现1~10累加,sum为累加变量,所以循环体中为sum+=i,while循环体执行的条件是i<=10。
47.运行结果如下:
AAAb
BB
CCC
程序如下:
#include<iostream>
usingnamespacestd;
voidmain()
{charch[3][4]={"AAA","BB","CCC"},(*q)[4]=ch,*p;
//ch是二维数组,q是指向一维数组的指针,并且一维数组每行只有4个字符
//q取得二维数组ch首地址
inti;
______
*p="b";
______
for(i=0;i<3;i++)
cout<<q[i]<<endl;
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
p=newchar;*(q+3)=*p;[考点]指针对象的使用
[解析]定义p为一个char类型的数组指针,然后赋值q[0]数组的第四个位置的值为"b"。
48.用递归法求从1到n的立方和:
f
(1)=1(n=1)
f(n)=f(n-1)+n^3(n>1)
#include<iostream>
usingnamespacestd;
intf(int);
intmain(){
intn,s;
cout<<"inputthenumbern:
";
cin>>n;
s=______;
cout<<"Theresultis"<<s<<endl;
return0;}
intf(intn){
if(n==1)return1;
elsereturn(______);}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
f(n);f(n-1)+n*n*n[考点]函数的调用
[解析]使用递归法来求立方和函数,即f(n-1)+n*n*n。
49.使用指针变量访问数组。
#include<iostream>
usingnamespacestd;
voidmain(){
inta[10]={1,2,3,4,5,6,7,8,9,0};
int*p;
for(______;______;p++)
cout<<*p<<"";
cout<<endl;
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
p=a;p<(a+10)[考点]用指针处理数组元素
[解析]将数组a赋值给指针p,p则指向数组第一个元素,循环停止条件即p指向数组的最后一个元素p<(a+10)
50.输入两个double类型的数据,输出其中的最大一个。
#include<iostream>
usingnamespacestd;
voidmain(){
doublep,q;
cout<<"请输入两个double型数:
";
______;
cout<<"输入的两个数中较大的是";
if(______)
cout<<b<<endl;
else
cout<<a<<endl;
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
cin>>p>>q;a<=b;[考点]使用输入/输出对象
[解析]cin用来处理标准输入,并可以在一条语句中多次使用流的符号cin>>p>>q。
五、程序