国家二级C++机试(选择题)模拟试卷236
选择题
1.下列叙述中正确的是( )。(D)
A. 栈是“先进先出”的线性表
B. 队列是“先进后出”的线性表
C. 循环队列是非线性结构
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
解析:栈足“先进后出”,队列“是先进先出”。栈和队列都是…种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。
2.下列字符串中,不可以用做C++标识符的是( )。(D)
A. y 2006
B. _TEST_H
C. Return
D. switch
解析:本题考查c++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项C中虽然return是关键字,但因首字母大、小写不同,也可用于标识符,但不建议使用。故答案为D。
3.若要把函数void0fun()定义为TestClass的友元函数,则应该在类TestClass的定义中加入的语句是( )。(C)
A. void friend fun()
B. friend fun()
C. friend void fun()
D. TestClass.void fun()
解析:如果在类以外的其他地方定义了一个函数,在类体中用friend对该函数进行声明,此函数就称为本类的友元函数。因为函数为void fun(),根据友元定义补全语句为“friend void fun();”。
4.下面不属于软件工程过程的4种基本活动( )。(D)
A. 软件规格说明
B. 软件开发
C. 软件演进
D. 软件测试
解析:软件工程过程的4种基本活动是:软件规格说明、软件开发、软件确认、软件演进。
5.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是( )。(C)
A. 测试
B. 设计
C. 可行性研究
D. 实现
解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。
6.在黑盒测试方法中,设计测试用例的主要根据是( )。(B)
A. 程序内部逻辑
B. 程序外部功能
C. 程序数据结构
D. 程序流程图
解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。
7.下列给字符数组进行初始化中,正确的是( )。
C
解析:在C++中定义二维数组时并赋值,则数组的行数可以省略不写。选项A)、B)、D)均是字符字符串初始化。。
8.有如下程序:
#include
using namespace std;
class A{
public:
A(int i):rl(i){)
void print() {cout<<’E’<<r1<<’_’;}
void print() const {cout<<’C’<<r1*rl<<’_’;)
private:
int rl;
};
int main(){
A a1(2); const A a2(4);
a1.print();a2.print();
return O;
)
运行时的输出结果是( )。(B)
A. 运行时出错
B. E2-C16-
C. C4-C16-
D. E2-E4-
解析:类A包括一个整型数据成员r1,一个一般成员函数print(),一个常成员函数print()const。在主函数中定义了对象a1,并对rl的值赋2和常对象a2,并对rl的值赋4,在C++中,常对象不能被更新,所以常对象只能调用类的常成员函数,而不能调用一般成员函数。而一般的对象,既可以调用一般成员函数也可以调用常成员函数。所以在本题中,当执行a1.print()时,输出为E2.,执行a2.print()时,输出为c16.。
9.必须用一对大括号括起来的程序段是( )。(D)
A. switch语句中的case标号语句
B. if语句的分支
C. 循环语句的循环体
D. 函数的函数体
解析:此题考查的是语句块和函数。if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来:switch语句中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来;函数的函数体必须用一对大括号括起来。
10.以下程序输出结果是( ):
#include<iostream>
using namespace std;
void add(int x,int y,int*z)
{
*z=y+x;
}
int main()
{
int a,b,c;
add(8,4,&a);
add(6,a,&b);
add(a,b,&c);
cout<<a<<\\(B)
A. 12,10,14
B. 12,18,30
C. 12,6,18
D. 12,14,30
解析:由主函数main入手,调用add函数,其中第三个参数为引用,即传值为地址。当add函数中第三个参数改变时,主函数中这个值也会改变。那么第一个add调用后a=12,所以第二个调用中a=12。调用后b=18。那么第三个调用后c=30。
11.语句int*p=&k;定义了指针p,与这个语句等效的语句序列是( )。(A)
A. int*p;p=&k;
B. int *p;p=k;
C. int*p;*p=&k;
D. int *p;*p=k
解析:此题考查的是指针的赋值。题目中的语句int *p=&k;定义了一个int类型的指针p,并将变量k的地址&k赋给指针p。所以等效语句是:int *p;p=&k;。
12.有如下程序:
#include<iostream>
using namespace std;
class MyClass{
public:
MyClass(int x):val(x){}
void Print() const {cout<<\\(C)
A. val=10 const:val=20
B. const:val=10 const:val=20
C. const:val=10 val=20
D. val=
本文档预览:3600字符,共8496字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载