国家二级C++机试(选择题)模拟试卷182
选择题
1.有如下程序:
#include
using namespace std;
int main()
{
int*p;
*p=9;
eout<<“The value at p:”<<*p;
retum 0:
编译运行程序将出现的情况是( )。(D)
A. 编译时出现语法错误,不能生成可执行文件
B. 运行时一定输出:The value at p:9
C. 运行时一定输出:The value at p:*9
D. 运行时有可能出错
解析:先定义指针变量,然后给指针变量赋初值有三种情况:①用取地址运算符“&”将变量地址赋给指针变量,如p=&a;②将一个指针变量中的地址赋给另一个指针变量,如p=p1;③给指针变量赋空值0,如q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。
2.运算符重载是对已有的运算符赋予多重含义,因此( )。(C)
A. 可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B. 可以改变一个已有运算符的优先级和操作数个数
C. 只能重载C++中已经有的运算符,不能定义新运算符
D. C++中已经有的所有运算符都可以重载
解析:重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
3.下列叙述中正确的是(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空问一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 上述三种说法都不对
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
4.有两个关系R,S如下:
(B)
A. 选择
B. 投影
C. 插入
D. 连接
解析:投影运算是指对于关系内的域指定可引入新的运算。本题中s是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。
5.下列描述中正确的是( )。(D)
A. 软件测试应该由程序开发者来完成
B. 程序经调试后一般不需要再测试
C. 软件维护只包括对程序代码的维护
D. 以上三种说法都不对
解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不同程度地存在障碍的,所以选项A错误。在程序调试时,修改了一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C错误。
6.下面属于黑盒测试方法的是( )。(C)
A. 语句覆盖
B. 逻辑覆盖
C. 边界值分析
D. 路径覆盖
解析:采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
7.某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是( )。(C)
A. const void Show();
B. void const Show();
C. void Show()const;
D. void Show(const);
解析:常成员函数的说明格式如下:()conat;所以对于本题来说无参且无返回值的常成员函数show,其正确的函数原型是选项C。
8.有如下语句序列:char str[10];cin>>str;当从键盘输入“I love this game”时,str中的字符串是( )。(D)
A. “I love this game”
B. “I love thi”
C. “I love”
D. “I”
解析:cin是C++预定义的标准输入流对象,cin用来接收字符串时,遇“空格”、“TAB”、“回车”时都会结束。所以本题答案为D。
9.在E—R图中,用来表示实体的图形是( )。(A)
A. 矩形
B. 椭圆形
C. 菱形
D. 三角形
解析:在E—R图中,用矩形表示实体集,在矩形内写上该实体集的名字:用椭圆形表示属性;用菱形(内部写上联系名)表示联系。
10.软件测试的目的是( )。(D)
A. 评估软件可靠性
B. 发现并改正程序中的错误
C. 改正程序中的错误
D. 发现程序中的错误
解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
11.有如下类声明:
class MyBASE
{
int k;
public;
void set(int n){k=n;}
int get()const{return k;}
};
class MyDERIVED:protected MyBASE
{
protected:
int j;
public:
void set(int m,int n){MyBASE::set(m);j=n;}
int get()const{return MyBASE::get()+j;}
};
则类MyDERIVED中保护的数据成员和成员函数的个数是( )。(B)
A. 4
B. 3
C. 2
D. 1
解析:因为在保护继承的情况下,基类中的公有成员void set(int n)和int get()const在派生类中是保护成员,再加上派生类自身的保护成员i,一共是三个保护成员。
12.有如下程序:
#include<iostream>
void fun(int&x,int y){int t=x;x=y;y=t;}
int main()
{
int a[2]={23,42};
fun(a[1],a[0]);
std::cout<<a[0]<<\\(B)
本文档预览:3600字符,共6164字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载