第 1 页:选择题 |
第 3 页:程序改错题 |
第 4 页:简单应用题 |
第 5 页:综合应用题 |
点击查看:2015年计算机二级考试《C++》上机模考试卷汇总
一、选择题
1有下列程序:
#include
intb=2:
intfun(int*k)
{b=*k+b;return(b);}
voidmain()
{inta[1O]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++){b=fun(&a[i])+b;printf
("%d",b);}
printf("\n");
}
程序运行后的输出结果是( )。
A.1012B.810C.1028D.1016
参考答案:C
参考解析:在程序中子函数fun(int*k)的作用是给静态全局变量加上形参*k的值。在主函数中进行第一次for循环执行时,fun(&a[2])的返回值为5,所以5+5=10,因而输出结果为10,第二次for循环执行时。fun(&a[3])的返回值为14,所以14+14=28。
2有下列二叉树,对此二叉树中序遍历的结果县( )。
A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ
参考答案:B
参考解析:对二叉树的中序遍历是指:首先遍历左子树.然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。本题的遍历顺序是这样的:①首先访问左子树BDEY;②在左子树BDEY中,也按中序遍历,先访问左子树DY;在左子树DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点D,然后访问右子树Y;③接着访问根B,再访问右子树E;④访问左子树BDEY后,接着访问根结点A,然后访问右子树CFXZ;⑤同理可得右子树CFXZ的访问顺序为FC-ZX。
3若变量已正确定义,有下列程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(C!=a)C=b;
printf(”%d,%d,%d\n”,a,b,c);
其输出的结果是( )。
A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7
参考答案:B
参考解析:如果if判断条件成立时就执行其后的相关语句,否则不执行,第一个if条件a>b不成立,故不执行“a=b”,接着执行“c=a”,把a的值赋给c后,此时第二个if条件不成立,故不执行其后语句,最终点c的值为3。
4若已定义
inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是( )。
A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))
参考答案:D
参考解析:数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。故可用的表示可能是a[i],p[i],*(P+i),同样&(a[i])表示地址,因此*(&a[i])等同于a[i]。本题答案为D。
5数据的存储结构是指( )。
A.数据所占的存储空间
B.数据的逻辑结构在计算机中的存放形式
C.数据在计算机中的顺序存储方式
D.存储在计算机外存中的数据
参考答案:B
参考解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
6下列有关模板的叙述中,正确的是( )。
A.函数模板不能含有常规形参
B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数
D.用类模板定义对象时,绝对不能省略模板实参
参考答案:B
参考解析:本题考查的是模极的概念。函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信患渠道,因此无法按函数模板的方式省模板形参,但是可以为类模板的参数设置默认值。
7设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为( )。
A.课号、成绩B.学号、成绩C.学号、课号D.学号、姓名、成绩
参考答案:C
参考解析:关键字是指属性或属性的组合,其功能是唯一地标识一个元组或数据,而SC中学号和课号的组合可以对元组进行唯一的标识。
8结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构
参考答案:B
参考解析:结构化程序设计的3种结构是,顺序、分支和循环,不包括goto跳转,它只是分支结构的一种,也是一个关键字。
9已知主函数中通过如下语句序列实觋对函数模板swap的调用:
inta[10],b[1O];
swap(a,b,10);
下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
A.template
voidswap(Ta[],Tb[],intsize);B.template
voidswap(intsize,Ta[],Tb[]);C.template
voidswap(T1a[],T2b[],intsize);D.template
voidswap(T1a[],T2b[],intsize);
参考答案:B
10定义无符号整数为Uint,下面可以作为类Uint实例化值的是( )。
A.-369B.369C.0.369D.整数集合{1,2,3,4,5}
参考答案:B
参考解析:A是有符号数,C是浮点数,D是集合,并不是类的实例化对象,只有B完全符台。
11下列叙述中,不属于软件需求规格说明书的作用的是( )。
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
参考答案:D
参考解析:使用软件需求规格说明书的目的是便于用户、开发人员进行理解和交流,它能够反映出用户问题的结构,可以作为软件开发工作的基础和依据,而且可以作为确认测试和验收的依据。它是需求分析的结果,而不是为了便于开发人员进行需求分析。因此答案是选项D。
12下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A.循环队列B.栈C.队列D.二叉树
参考答案:B
参考解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。
13有如下程序:
#include
usingnamespacestd;
classVAC{
public;
intf()const(return3;}
intf(){return5;}
};
Intmain(){
VACv1:
constVACv2;
cout<
return0;
}
运行时的输出结果是()。
A.53B.35C.55D.33
参考答案:A
参考解析:本题考查常成员函数的应用。VAC类中说明了两个函数,一个是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象v1调用的是普通函数,输出5;通过常对象v2调用的是常成员函数,输出3。
14将E—R图转换为关系模式时,实体和联系都可以表示为( )。
A.属性B.键C.关系D.域
参考答案:C
参考解析:在C语言中,将E—R图转换为关系模式时,实体和联系都可以表示为关系。
15在函数中,可以用aut0、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。
A.autoB.externC.registerD.static
参考答案:A
参考解析:变量在使用之前其数据类型必须加以说明,而存储类型则可默认说明或显式说明。显式说明指直接在变量说明前加上存储类型标志,如auto,register,static,extern等。关键字auto通常省。
下列关于函数模板的描述中,正确的是( )。
A.函数模板是一个实例函数
B.使用函数模板定义的函数没有返回类型
C.函数模板的类型参数与函数的参数相同
D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数
参考答案:D
参考解析:函数模板只是声明,一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。
17下列关于文件流的描述中,正确的是( )。
A.文件流只能完成针对磁盘文件的输入、输出
B.建立一个文件流对象时,必须同时打开一个文件
C.若输入流要打开的文件不存在,将建立一个新文件
D.若输出流要打开的文件不存在,将建立一个新文件
参考答案:C
参考解析:输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。
18下列说法正确的是( )。
A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
参考答案:B
参考解析:本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加in-line关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。
19有下列程序:
#include
voidmain( )
{FILE*pf;
char*s1="China",*s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf);/*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是( )。
A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina
参考答案:B
参考解析:本题考查fwrite的调用形式。
其格式为“fwrite(buffer,size,count,fp);”。
fwritie函数的功能是对fp所指向的文件存入count次,每次存入一个大小为size的数据块。将存入的数据块存到buffer指向的内存区,如果buffer内存区有数据则将其覆盖。
本题中第一次调用fwrite函数,向文件中写入s2的值“Beijing”,第二次调用fwrite函数,向文件中写入S1的值“China”,并将之前“Beijing”的前几个字符覆盖,得到Chi-nang。
20下列叙述中正确的是( )。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述三种说法都不对
参考答案:C
参考解析:面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |