国家二级C++机试(选择题)模拟试卷473
选择题
1.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。(C)
A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩
解析:学号是学生表s的主键,课号是课程表c的主键,所以选课表sc的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C。
2.下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是( )。(C)
A. if(a<=b)n=0;
B. if((a>b)I f(b>c))n=l;else n=0;
C. if(a>b)if(b>c)n=l;else n=0;else n=0;
D. if(a>b)n=1;else if(b<=c)n=l;else if(b>c)n=l;else n=0;
解析:条件表达式(a>b?(b>c?l:0):0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?1:0)的值,否则其值等于0。而条件表达式(b>c?1:0)的含义是,如果b>c成立,其值等于l,否则其值等f O。
3.为了取代C中带参数的宏,在C++中使用( )。(B)
A. 重载函数
B. 内联函数
C. 递归函数
D. 友元函数
解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,即类似于宏。
4.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(C)
A. log2n
B. n/2
C. n
D. n+1
解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。
5.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(D)
A. 冒泡排序为n/2
B. 冒泡排序为n
C. 快速排序为n
D. 快速排序为n(n-1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。
6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。
7.软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于( )。(B)
A. 定义阶段
B. 开发阶段
C. 维护阶段
D. 上述三个阶段
解析:本题考查软件生命周期的相关概念.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。还可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。
8.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号:课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。(C)
A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩
解析:关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在SC中学号和课号的组合可以对元组进行唯一的标识。
9.有三个关系R、S和T如下:
(D)
A. 并
B. 自然连接
C. 笛卡尔积
D. 交
解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组组成的,记为RnS。
10.下列关于继承方式的描述中,错误的是( )。(D)
A. 如果不显式地指定继承方式,缺省的继承方式是私有(private)
B. 采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C. 采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D. 采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
解析:基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。派生类中的成员不可以访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。
11.有如下程序段:
int i=4;intj=1;
int main(){
int i=8,j=i;
cout<<i<<j<<endl;
}
运行时的输出结果是( )。(C)
A. 44
B. 41
C. 88
D. 81
解析:这个程序定义了全局整型对象i和j,其值分别等于4和1。而在主函数中定义了局部整型对象i和j,i值赋予8,再把i值赋给j,接着输出i和j的值,所以其结果为88。这个题目要注意的一点是,全局整型对象i和j和主函数中定义了局部整型对象i和j,在计算机内存中表示的是不同的存储单元。它们的值是独自存放的,互相不同。
12.有如下程序:
#include
using namespace std;
class B{
public:
B(int xx):x(xx){++count;x+=10;}
virtual void show()const
{cout<<count<<’_’<<x<<end1;}
protected:
static int count;
private:
int x;
};
class D:public B{
public:
D(int XX,int yy):B(xx),y(yy){++count;y+=100;}
virtual void show()const
{cout<<count<<’_’<<y<<end1;}
private:
本文档预览:3600字符,共8571字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载