国家二级(C++)机试模拟试卷307
选择题
1.下列语句中,错误的是( )。(B)
A. const int buffer=256;
B. const int temp;
C. const double*point;
D. const double*rt=new double(5.5);
解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*dolable point形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。
2.有如下程序:
int x=3:
do{
x-=2:
cout<<x;
}while(!(–x));
执行这个程序的输出结果是( )。(C)
A. 1
B. 3 0
C. 1-2
D. 死循环
解析:本题考查do…while语句,执行do…while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。存本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。
3.下列语句中,错误的是( )。(B)
A. const int buffer=256;
B. const int temp;
C. const double*point;
D. const double*rt=new double(5.5);
解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用conat在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*double point形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。
4.C++语言程序的注释可以出现在程序中的任何地方,一个注释的结束标记为( )。(B)
A. /*
B. */
C. :
D. ;
解析:C++语言程序的注释可以出现在程序中的任何地方,一个注释以“/*”开始,以“*/”结束。
5.有如下类声明:
class SAMPLE
{
int n;
public:
SAMPLE(int i=0):n(i){}
void setValue(int n0);
};
下列关于getValue成员函数的定义中,正确的是( )。
B
解析:本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为B。
6.长度为一个字节的二进制整数,若采用补码表示,且由4个“1”和4个“0”组合,则可表示最小的整数是( )。(B)
A. -127
B. -121
C. -15
D. -7
解析:整数在计算机中有原码、反码和补码3种不同的表示方法。负数的反码是符号位为“1”,绝对值部分和原码相反。负数的补码是符号位为“1”,绝对值部分为反码的最低位加“1”。正整数的表示方法只有原码一种。A项的补码为(10000001),B项的补码为(10000111),C项的补码为(11110001),D项的补码为(11111001)。
7.下列叙述中,不属于软件需求规格说明书的作用的是( )。(D)
A. 便于用户,开发人员进行理解和交流
B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据
C. 作为确认测试和验收的依据
D. 便于开发人员进行需求分析
解析:软件需求规格说明书有以下几个方面的作用:
①便于用户、开发人员进行理解和交流;
②反映出用户问题的结构,可以作为软件开发工作的基础和依据;
③作为确认测试和验收的依据。
8.if语句的语法格式可描述为:
格式1:if()
或
格式2:if()
else
关于上面的语法格式,下列表述中错误的是( )。(A)
A. 部分可以是一个if语句,例如if(if(a=:0)…)…
B. 部分可以是一个if语句,例如if(…)if(…)…
C. 如果在前加上逻辑非运算符!并交换和的位置,语句功能不变
D. 部分可以是一个循环语句,例如if(…)while(…)…
解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。
9.下面关于指针的说法中错误的是( )。(B)
A. 在指针定义的同时可以对其进行初始化
B. 指针根据其所指向变量的类型的不同,所占用内存大小也不同
C. 指针中存放的是内存单元的地址
D. 相同类型的指针之间可以相互赋值
解析:指针是一种用来存放其他变量地址的数据类型,它的声明形式为:(类型)*(变量名),可以在声明的时候对其进行初始化。由于其存放的是内存单元的地址,所以大小一般都是4个字节。
10.关于在调用模板函数时模板实参的使用,下列表述中正确的是( )。(D)
A. 对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略
B. 对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略
C. 对于虚拟类型参数所对应的模板实参,若能够省略则必须省略
D. 对于常规参数所对应的模板实参,任何情况下都不能省略
解析:在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“< >”括起来的参数表)或从模板函数实参表(用“( )”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“< >”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。
11.)下列程序的输出结果是( )。
#include
using namespace std;
template
T fun(r a,T b){return(a<=b)?a:b;}
intmain()
{
cout<<fun(3,6)<<’,’<<fun(3.1 4F,6.28F)<<endl;
本文档预览:3600字符,共14759字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载