1、国家二级 C+机试(C+语言概述、数据类型、运算符和表达式)模拟试卷 6 及答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:31,分数:62.00)1.下列描述中,不属于面向对象思想主要特征的是( )。(分数:2.00)A.封装性B.跨平台性C.继承性D.多态性2.下列字符串中,正确的 C+标识符是( )。(分数:2.00)A.foo1B.2bC.newD._2563.下列符号中可以用作 C+标识符的是( )。(分数:2.00)A._radiusB.foobarC.elseD.3room4.下列符号中,正确的 C+标识符是( )。(分数:2.00)A.enumB.100b
2、itC.s1D._int5.下列字符串中,不可以用作 C+标识符的是( )。(分数:2.00)A.y_2006B._TEST_HC.ReturnD.switch6.下列符号中能够作为 C+标识符的是( )。(分数:2.00)A.constB.2aC._shapeD.count7.下列字符串中不能作为 C+标识符使用的是( )。(分数:2.00)A.WHILEB.userC._lvarD.9stars8.下列字符串中可以用作 C+标识符的是( )。(分数:2.00)A.2009varB.gotoC.test2009D._1239.在下列字符中,不允许作为 C+标识符的是( )。(分数:2.00)
3、A.bB.BC.D.210.下列选项中,正确的 C+标识符是( )。(分数:2.00)A.6_group Bgroup6B.age+3C._group_611.下列选项可以做 C+标识符的是( )。(分数:2.00)A._256B.fat/pigC.deleteD.5char12.下列符号中不属于 C+关键字的是( )。(分数:2.00)A.friendB.namespaceC.continueD.byte13.下列选项中,不是 C+关键字的是( )。(分数:2.00)A.c1assB.functionC.friendD.virtual14.下列关于 C+函数的叙述中,正确的是( )。(分数:
4、2.00)A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明D.函数不能自己调用自己15.必须用一对大括号括起来的程序段是( )。(分数:2.00)A.switch 语句中的 case 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体16.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是( )。(分数:2.00)A.cppB.exeC.objD.lik17.在开发一个 C+程序的整个过程中,第 3 个步骤为( )。(分数:2.00)A.链接B.运行C.编辑D.编译18.下列各组类型声明符中,含义相同的一组是( )。(分
5、数:2.00)A.unsigned long int 和 longB.signed short int 和 shortC.unsigned short 和 shortD.shortint 和 int19.字面常量 42、42、42L 的数据类型分别是( )。(分数:2.00)A.long, double, intB.long, float, intC.int, double, longD.int, float, long20.下列叙述中,错误的是( )。(分数:2.00)A.false 是一个逻辑型常量B.b 是一个字符型常量C.365 是一个 int 常量D.31415926 是一个 dou
6、ble 常量21.关键字 unsigned 不能修饰的类型是( )。(分数:2.00)A.charB.intC.floatD.longint22.已知枚举类型定义语句为: enum Token NAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1023.已知枚举类型声明语句为: enum COLORWHITE, YELLOW, GREEN=5, RED, BLACK=10; 则下列说法中错
7、误的是( )。(分数:2.00)A.枚举常量 YELLOW 的值为 1B.枚举常量 RED 的值为 6C.枚举常量 BLACK 的值为 10D.枚举常量 WHITE 的值为 124.下列枚举类型的定义中,包含枚举值 3 的是( )。(分数:2.00)A.enum test RED,YELLOW, BLUE, BLACK;B.enum test RED,YELLOW=4,BLUE,BLACK;C.enum test RED=1,YELLOW, BLUE,BLACK;D.enum test RED,YELLOW=6,BLUE,BLACK;25.下列语句中,错误的是( )。(分数:2.00)A.co
8、nst int buffeF256;B.const int temp;C.const double *point;D.const double *rt=new double(55);26.在函数中,可以用 auto、extem、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.autoB.externC.registerD.static27.下列语句中错误的是( )。(分数:2.00)A.const int a;B.const int a=10;C.constint*point0;D.const i
9、nt*point=new int(10);28.有如下程序段: int i=4, int j=1; int main() int i=8,j=i; coutijend1; 运行时的输出结果是( )。(分数:2.00)A.44B.41C.88D.8129.下列选项中,正确的 C+表达式是( )。(分数:2.00)A.counter+3B.element3+C.a+bD.a=b30.若有定义语句“int i=2,j=3;”,则表达式 i/j 的结果是( )。(分数:2.00)A.0B.07C.066667D.06666666731.若有定义“int x=4,y=5;”,则表达式“yx+?x:y+”
10、的值为( )。(分数:2.00)A.3B.4C.5D.6国家二级 C+机试(C+语言概述、数据类型、运算符和表达式)模拟试卷 6 答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:31,分数:62.00)1.下列描述中,不属于面向对象思想主要特征的是( )。(分数:2.00)A.封装性B.跨平台性 C.继承性D.多态性解析:解析:封装性、继承性和多态性是面向对象程序设计的三个基本特征。跨平台性不是面向对象程序设计的特征。2.下列字符串中,正确的 C+标识符是( )。(分数:2.00)A.foo1B.2bC.newD._256 解析:解析:此题考查的是 C+语言中标识符的定义
11、。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线;标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。3.下列符号中可以用作 C+标识符的是( )。(分数:2.00)A._radius B.foobarC.elseD.3room解析:解析:此题考查的是 C+语言中标识符的定义。标识符有字母、数字和下划线构成,其第一个字母必须是字母或下划线;定义标识符时,不要采用系统的保留字。4.下列符号中,正确的 C+标识符是( )。(分数:2.00)A.enumB.100bitC.s1D._int 解析:解析:此题考查的是 C+语言中标识符的概念。标识符是由数字、字母以及下
12、划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31 个字符:标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。5.下列字符串中,不可以用作 C+标识符的是( )。(分数:2.00)A.y_2006B._TEST_HC.ReturnD.switch 解析:解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。6.下列符号中能够作为 C
13、+标识符的是( )。(分数:2.00)A.constB.2aC._shape D.count解析:解析:此题考查的是 C+标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。7.下列字符串中不能作为 C+标识符使用的是( )。(分数:2.00)A.WHILEB.userC._lvarD.9stars 解析:解析:在 C+中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。8.下列字符串中可以用作 C
14、+标识符的是( )。(分数:2.00)A.2009varB.gotoC.test2009D._123 解析:解析:标识符是用户为程序中各种需要命名的“元素”所起的名字。标识符的组成要符合一定的规则: 标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。 标识符不能与任意一个关键字同名。 标识符中的字母区分大小写。 标识符不宜过长。C+语言一般设定一个标识符的有效长度为 32 个字符。 由这四条规则可知,选项 D)为正确答案。9.在下列字符中,不允许作为 C+标识符的是( )。(分数:2.00)A.bB.BC.D.2 解析:解析:C+的标识符是一个以字母或下划线开头的,由字母、数
15、字、下划线组成的字符串。10.下列选项中,正确的 C+标识符是( )。(分数:2.00)A.6_group Bgroup6B.age+3C._group_6解析:解析:C+中标识符的命名遵循如下规则:不能是 C+关键字,第一个字母必须是字母或下划线,中间不能有空格,变量名中不能包括“,”、“;”、“,”、“”、“”+之类的特殊符号。总之标识符中除了能使用 26 个英文大小写字母和数字外,只能使用下划线“”。11.下列选项可以做 C+标识符的是( )。(分数:2.00)A._256 B.fat/pigC.deleteD.5char解析:解析:标识符的命名规则:所有标识符必须由一个字母(az 或
16、AZ)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(09)组成;大小写字母表示不同意义,即代表不同的标识符,如 cout 和 Cout。12.下列符号中不属于 C+关键字的是( )。(分数:2.00)A.friendB.namespaceC.continueD.byte 解析:解析:此题考查的是 C+语言的关键字。Friend 是声明友元函数或友元类时用到的关键字;namespace 是定义或使用名字空间时用到的关键字;continue 是终止本次循环直接开始下一次循环所用到的关键字;byte 是字节的意思,它不是 C+语言中的关键字。13.下列选项中,不是 C+关键字的是(
17、)。(分数:2.00)A.c1assB.function C.friendD.virtual解析:解析:Class、friend、virtual 都是 C+的关键字,而 funtion 是 VB 的关键字。14.下列关于 C+函数的叙述中,正确的是( )。(分数:2.00)A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明 D.函数不能自己调用自己解析:解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。15.必须用一对大括号括起来的程序段是( )。(分数:2.00
18、)A.switch 语句中的 case 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体 解析:解析:此题考查的是语句块和函数。if 语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来:switch 语句中的 case 标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来;函数的函数体必须用一对大括号括起来。16.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是( )。(分数:2.00)A.cppB.exeC.obj D.lik解析:解析:在 VC60 集成开发环境下,用户可以使用编译(comp
19、ile)命令将一个cpp 为扩展名的 C+源程序文件转换成一个以obj 为扩展名的目标文件。17.在开发一个 C+程序的整个过程中,第 3 个步骤为( )。(分数:2.00)A.链接 B.运行C.编辑D.编译解析:解析:C+程序的开发过程是编辑、编译、链接、运行和调试。18.下列各组类型声明符中,含义相同的一组是( )。(分数:2.00)A.unsigned long int 和 longB.signed short int 和 short C.unsigned short 和 shortD.shortint 和 int解析:解析:此题考查的是基本类型和派生型。C+语言中,基本类型的字长及其取
20、值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题 A 选项中,unsigned long int 的省略形式为unsigned long;选项 B 中,signed short int 的省略形式是 short;选项 C 中,unsigned short 的省略形式是 unsigned short;选项 D 中,short int 的省略形式是 short。19.字面常量 42、42、42L 的数据类型分别是( )。(分数:2.00)A.long, double, intB.long, float, intC.int, double, long D.int, float, lo
21、ng解析:解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过 C+中整数所能表示的范围,C+将自动按整数来存储此数,也可以通过在整型字面常量后添加 u 或 l 来指定无符号整数或长整数来存储:对于实型字面常量,C+将自动按照双精度数来存储,也可以通过在实型字面常量后添加 f 来指定按单精度数存储。20.下列叙述中,错误的是( )。(分数:2.00)A.false 是一个逻辑型常量B.b 是一个字符型常量 C.365 是一个 int 常量D.31415926 是一个 double 常量解析:解析:字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。或者以“”开头的包括
22、多个字符的字符序列也符合规定的字符常量。21.关键字 unsigned 不能修饰的类型是( )。(分数:2.00)A.charB.intC.float D.longint解析:解析:实型常量指的是 float 和 double 两种数据类型,而 signed 和 unsigned 只对整型数起作用,用于确定它们的数据范围(例如 16 位系统中,一个 signedint 是32768A32767,而 unsigned int 是065535)。unsigned 对浮点数是无意义的。22.已知枚举类型定义语句为: enum Token NAME,NUMBER,PLUS=5,MINUS,PRINT=
23、10; 则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析:此题考查的是 C+语言的数据类型。第一个枚举常量的值为 0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增 l。23.已知枚举类型声明语句为: enum COLORWHITE, YELLOW, GREEN=5, RED, BLACK=10; 则下列说法中错误的是( )。(分数:2.00)A.枚举常量 YELLOW 的值为 1B.枚举常量
24、 RED 的值为 6C.枚举常量 BLACK 的值为 10D.枚举常量 WHITE 的值为 1 解析:解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum 类型名枚举值表)。需注意的是:当 n 个枚举值全部未赋常量值时,它们自左至右分别与整数 0、l、2、3n1 对应:若第 i个枚举值赋常量值为 m,则其未赋常量值的后续枚举值分别与整数 m+l、m+2对应,直到下一个赋了值的枚举值或结束。24.下列枚举类型的定义中,包含枚举值 3 的是( )。(分数:2.00)A.enum test RED,YELLOW, BLUE, BLACK; B.enum test RED,YELLOW
25、=4,BLUE,BLACK;C.enum test RED=1,YELLOW, BLUE,BLACK;D.enum test RED,YELLOW=6,BLUE,BLACK;解析:解析:声明枚举类型的语法格式为:enum类型名枚举值表;枚举值表包含多个枚举值,它们用逗号隔开,每个枚举值就是一个枚举常量。 枚举值有两种定义形式:一是值名;二是值名=整型常量。 关于枚举类型有以下 4 点说明: 一个 enum 类型实际上是 int 类型的一个子集,其每一个枚举值代表一个整数。 n 个枚举值全部未赋常量值时,它们自左至右分别与整数 0,1,n1 对应。 若第 i 个枚举值赋常量值为 m则其未赋常量值
26、的后续枚举值分别与整数 m+1,m+2对应,直到下一个赋了值的枚举值或结束。因此,为枚举值赋的整型常量值应从左到右递增。 枚举类型的声明也可作为组声明若干整型符号常量的方法。 也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。 对于本题来说,在选项 A)中,对 4 个枚举值没有赋常量值,所以它们从左到右与整数 0,1,2,3 相对应。因而选项 A)为正确选项。25.下列语句中,错误的是( )。(分数:2.00)A.const int buffeF256;B.const int temp; C.const double *point;D.const doub
27、le *rt=new double(55);解析:解析:此题考查的是符号常量的概念。符号常量必须在声明的同时赋初值,故选项 B 错误:选项 C定义的是一个指向常量的指针变量,即通过指针不能改变它所指向的内容,而它自己的内容是可以改变的,C 选项正确。26.在函数中,可以用 auto、extem、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.auto B.externC.registerD.static解析:解析:此题考查的是存储类型。C+语言变量的存储类型分为如下几种类型:auto函数内部的局部
28、变量;static静态存储分配;extern全局变量;register变量存储在硬件寄存器中。27.下列语句中错误的是( )。(分数:2.00)A.const int a; B.const int a=10;C.constint*point0;D.const int*point=new int(10);解析:解析:由关键字 const 声明符号常量的同时必须为其赋初值。28.有如下程序段: int i=4, int j=1; int main() int i=8,j=i; coutijend1; 运行时的输出结果是( )。(分数:2.00)A.44B.41C.88 D.81解析:解析:这个程序
29、定义了全局整型对象 i 和 j,其值分别等于 4 和 l。而在主函数中定义了局部整型对象 i 和 j,i 值赋予 8,再把 j 值赋给 j,接着输出 i 和 j 的值,所以其结果为 88。这个题目要注意的一点是,全局整型对象 i 和 j 和主函数中定义了局部整型对象 i 和 j,在计算机内存中表示的是不同的存储单元。它们的值是独自存放的,互相不同。29.下列选项中,正确的 C+表达式是( )。(分数:2.00)A.counter+3B.element3+C.a+b D.a=b解析:解析:在 C+中由一个或多个操作数与操作符连接而成的有效运算式称为表达式。选项 C)是 C+的合法表达式。30.若
30、有定义语句“int i=2,j=3;”,则表达式 i/j 的结果是( )。(分数:2.00)A.0 B.07C.066667D.066666667解析:解析:由于变量 i、j 都是整型变量,所以两者相除所得的商也是整型数据。31.若有定义“int x=4,y=5;”,则表达式“yx+?x:y+”的值为( )。(分数:2.00)A.3B.4C.5 D.6解析:解析:在表达式“yx+?x 一:y+”中,由于自加(+)运行符的优前级高于比较运算符(),所以首先进行自加运算,即变量 x 的值前自加 1,等于 5,此时表达式 yx 不成立,所以整个表达式的值等于 y+的值,由于 y+是后自加运算,所以其值等于 5。