二级C++笔试-327
(总分100, 做题时间90分钟)
一、选择题
1. 
下面程序段的输出结果是(    )。
   int x=5;
   do
        cout<< --x;
   while(!x);
A 43210
B 5
C 4
D 无任何输出
    分值: 2
答案:C
[解析] 根据do…while循环语句功能的特点可得:首先无条件执行循环体,表达式--x的值为4,输出为4,x的值变为4,然后检查条件(!x)为假(false),则循环结束。
2. 
下列语句段输出字符'*'的个数为(    )。
   int i=100;
   while(1)
        i--;
        if(i==0) break;
        cout<<'*';
   
A 101个
B 100个
C 99个
D 98个
    分值: 2
答案:C
[解析] 本题中while中的条件表达式永远为真,进入循环后先执行语句“i--;”,然后再执行后面的语句。由于当i的值变为0时,执行跳转语句break,即跳出while循环体。所以i的取值为1~99,即循环99次,输出99个“*”。
3. 
下列打开文件的表达式中,错误的是(    )。
A ofstream ofile;ofile.open("C:\\vc\\a.txt",ios::binary);
B fstream iofile;iofile.open("a.txt",ios::ate);
C ifstream ifile("C:\\vc\\a.txt");
D cout.open("C:\\vc\\s.txt",ios::binary);
    分值: 2
答案:D
[解析] 选项D中,open()函数并不是cout对象中的成员函数,因此对open()函数的调用是非法的。
4. 
下列关于栈的描述,错误的是(    )。
A 栈是先进后出的线性表
B 栈只能顺序存储
C 栈具有记忆作用
D 对栈的插入与删除操作中,不需要改变栈底指针
    分值: 2
答案:B
[解析] 栈既能顺序存储,又能链式存储。
5. 
下面对二维数组s的初始化语句,正确的是(    )。
A int a[2][3]=1,2,3,4,5,6
B int a[2][3]=1,2,3,4,5,6;
C int a[2][]=1,2,3,4,5,6;
D int a[][]=1,2,3,4,5,6;
    分值: 2
答案:B
[解析] 选项A定义的是三行两列的数组,选项C、D错误地省略了第二维的长度声明。二维数组及多维数组定义的简化形式中,可以省略一个或多个括号,甚至只保留最外层的括号。因此正确答案是选项B。
6. 
变量定义如下;int *p;  则下列不同于*p=*p+1;  的是(    )。
A *p++;
B ++ *p;
C *p+=1;
D ++( *p);
    分值: 2
答案:A
[解析] *p=*p+1;是将指针变量p所指向的存储单元的值加1,然后放入p所指向的存储单元中。而选项A中最后是将p的值加1,即移动一个单位的存储单元。
7. 
下列函数原型声明中错误的是(    )。
A void fuc(int x=0,int y=0)
B void fnc(int x,int y)
C void fuc(int x,int y=0)
D void fuc(int x=0,int y)
    分值: 2
答案:D
[解析] C++允许在函数的说明或定义中给一个或多个参数指定默认值。但默认值必须从右向左定义,即在一个指定默认值的参数的右边,不能出现没有指定默认值的参数。
8. 
C++源程序的扩展名为(    )。
A .CPP
B .C
C .EXE
D .DLL
    分值: 2
答案:A
[解析] 本题考查C++程序开发方面的知识点。C++语言源程序的扩展名为.cpp,.c是C语言源程序的扩展名,.dll是动态连接库文件的扩展名,.exe是可执行文件的扩展名。
9. 
如果一个类至少有一个纯虚函数,那么该类称为(    )。
A 抽象类
B 虚基类
C 派生类
D 以上都不是
    分值: 2
答案:A
[解析] 抽象类是指至少有一个纯虚函数的类。
10. 
在数据流图(DFD)中,带有名字的箭头表示(    )。
A 模块之间的调用关系
B 数据的流向
C 控制程序的执行程序
D 程序的组成成分
    分值: 2
答案:B
[解析] 数据流相当于一条管道,并有数据流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
11. 
已知类MyClas有一个只需要一个double型参数的构造函数,其将运算符“+”重载为友元函数。要使语句序列  MyClas x(1.2),y(2.3),z(0);z=x+y;  能够正常运行,运算符函数 operator+应在类中声明为(    )。
A friend MyClas operator+(int,MyClas&);
B friend MyClas operator+(MyClas,MyClas);
C friend MyClas operator+(MyClas,MyClas&);
D friend MyClas operator+(MyClas&,MyClas);
    分值: 2
答案:B
[解析] 由重载的定义格式可知运算符函数应在类中声明为:
   friend MyClas operator +(MyClas,MyClas);
12. 
下列模式中,能够给出数据库物理存储结构与物理存取方法的是(    )。
析构方法A 内模式
B 外模式
C 概念模式
D 逻辑模式
    分值: 2
答案:A
[解析] 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。内模式、存储模式或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。