二级C++97Word文件下载.docx
《二级C++97Word文件下载.docx》由会员分享,可在线阅读,更多相关《二级C++97Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
标识符中的大小写字母是不同的;
定义标识符时不能采用系统的保留字。
5.下列字符串中,不可以用作C++标识符的是______。
A.y_2006
B.___TEST_H
C.Return
D.switch
[解析]此题考查的是标识符。
6.下列符号中能够作为C++标识符的是______。
A.const
B.2a
C._shape
D.-count
[解析]此题考查的是C++标识符。
7.下列字符串中不能作为C++标识符使用的是______。
A.WHILE
B.user
C._1var
D.9stars
[解析]在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。
8.下列字符串中可以用作C++标识符的是______。
A.2009var
B.goto
C.test-2009
D._123
[解析]标识符是用户为程序中各种需要命名的“元素”所起的名字。
标识符的组成要符合一定的规则:
①标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。
②标识符不能与任意一个关键字同名。
③标识符中的字母区分大小写。
④标识符不宣过长。
C++语言一般设定一个标识符的有效长度为32个字符。
由这四条规则可知,选项D为正确答案。
9.在下列字符中,不允许作为C++标识符的是______。
A.b
B.B
C._
D.2
[解析]C++的标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。
10.下列选项中,正确的C++标识符是______。
A.6_group
B.group~6
C.age+3
D._group_6
[解析]C++中标识符的命名遵循如下规则:
不能是C++关键字,第一个字母必须是字母或下划线,中间不能有空格,变量名中不能包括“.”、“;
”、“,”、“"
”、“"
”+-之类的特殊符号。
总之标识符中除了能使用26个英文大小写字母和数字外,只能使用下划线“_”。
11.下列选项可以做C++标识符的是______。
A._256
B.fat/pig
C.delete
D.5char
[解析]标识符的命名规则:
①所有标识符必须由一个字母(a~z或A~z)或下划线(_)开头;
②标识符的其他部分可以用字母、下划线或数字(0~9)组成;
③大小写字母表示不同意义,即代表不同的标识符,如cout和Cout。
12.下列符号中不属于C++关键字的是______。
A.friend
B.namespace
C.continue
D.byte
[解析]此题考查的是C++语言的关键字。
Friend是声明友元函数或友元类时用到的关键字;
namespace是定义或使用名字空间时用到的关键字;
continue是终止本次循环直接开始下一次循环所用到的关键字;
byte是字节的意思,它不是C++语言中的关键字。
13.下列选项中,不是C++关键字的是______。
A.class
B.function
C.friend
D.virtual
[解析]class、friend、virtual都是C++的关键字,而funtion是VB的关键字。
14.下列关于C++函数的叙述中,正确的是______。
A.每个函数至少要具有一个参数
B.每个函数都必须返回一个值
C.函数在被调用之前必须先声明
D.函数不能自己调用自己
[解析]此题考查的是函数的性质。
当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。
函数的递归调用就是直接或间接的调用自己。
15.必须用一对大括号括起来的程序段是______。
A.switch语句中的case标号语句
B.if语句的分支
C.循环语句的循环体
D.函数的函数体
[解析]此题考查的是语句块和函数。
if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来;
switch语句中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来;
函数的函数体必须用一对大括号括起来。
16.Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是______。
A.cpp
B.exe
C.obj
D.lik
[解析]在VC6.0集成开发环境下,用户可以使用编译(compile)命令将一个.cpp为扩展名的C++源程序文件转换成一个以.obj为扩展名的目标文件。
17.在开发一个C++程序的整个过程中,第3个步骤为______。
A.链接
B.运行
C.编辑
D.编译
[解析]C++程序的开发过程是编辑、编译、链接、运行和调试。
18.下列各组类型声明符中,含义相同的一组是______。
A.unsignedlongint和long
B.signedshortint和short
C.unsignedshort和short
D.shortint和int
[解析]此题考查的是基本类型和派生型。
C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。
本题A选项中,unsignedlongint的省略形式为unsignedlong;
选项B中,signedshortint的省略形式是short;
选项C中,unsignedshort的省略形式是unsignedshort;
选项D中,shortint的省略形式是short。
19.字面常量42、4.2、42L的数据类型分别是______。
A.long,double,int
B.long,float,int
C.int,double,long
D.int,float,long
[解析]此题考查的知识点是字面常量。
对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或1来指定无符号整数或长整数来存储;
对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。
20.下列叙述中,错误的是______。
A.false是一个逻辑型常量
B."
b"
是一个字符型常量
C.365是一个int常量
D.3.1415926是一个double常量
[解析]字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。
或者以“/”开头的包括多个字符的字符序列也符合规定的字符常量。
21.关键字unsigned不能修饰的类型是______。
A.char
B.int
C.float
D.longint
[解析]实型常量指的是float和double两种数据类型,而signed和unsigned只对整型数起作用,用于确定它们的数据范围(例如16位系统中,一个signedint是-32768~32767,而unsignedint是0~65535)。
unsigned对浮点数是无意义的。
22.已知枚举类型定义语句为:
enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};
则下列叙述中错误的是______。
A.枚举常量NAME的值为1
B.枚举常量NUMBER的值为1
C.枚举常量MINUS的值为6
D.枚举常量PRINT的值为10
[解析]此题考查的是C++语言的数据类型。
第一个枚举常量的值为0;
允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。
23.已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是______。
A.枚举常量YELLOW的值为1
B.枚举常量RED的值为6
C.枚举常量BLACK的值为10
D.枚举常量WHITE的值为1
[解析]此题考查的是枚举类型的声明。
声明枚举类型的语法形式为:
enum类型名{枚举值表}。
需注意的是:
当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、1、2、3...n-1对应;
若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1、m+2...对应,直到下一个赋了值的枚举值或结束。
24.下列枚举类型的定义中,包含枚举值3的是______。
A.enumtest{RED,YELLOW,BLUE,BLACK};
B.enumtest{RED,YELLOW=4,BLUE,BLACK};
C.enumtest{RED=-1,YELLOW,BLUE,BLACK};
D.enumtest{RED,YELLOW=6,BLUE,BLACK};
[解析]声明枚举类型的语法格式为:
enum<类型名>{<枚举值表>};
<枚举值表>包含多个枚举值,它们用逗号隔开,每个枚举值就是一个枚举常量。
枚举值有两种定义形式:
一是<值名>;
二是<值名>=<整型常量>。
关于枚举类型有以下4点说明:
①一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。
②n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,…n-1对应。
③若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。
因此,为枚举值赋的整型常量值应从左到右递增。
④枚举类型的声明也可作为组声明若干整型符号常量的方法。
也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。
对于本题来说,在选项A中,对4个枚举值没有赋常量值,所以它们从左到右与整数0,1,2,3相对应。
因而选项A为正确选项。
25.下列语句中,错误的是______。
A.constintbuffer=256;
B.constinttemp;
C.constdouble*point;
D.constdouble*rt=newdouble(5.5);
[解析]此题考查的是符号常量的概念。
符号常量必须在声明的同时赋初值,故选项B错误;
选项C定义的是一个指向常量的指针变量,即通过指针不能改变它所指向的内容,而它自己的内容是可以改变的,C选项正确。
26.在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是______。
A.auto
B.extern
C.register
D.static
[解析]此题考查的是存储类型。
C++语言变量的存储类型分为如下几种类型:
auto---函数内部的局部变量;
static---静态存储分配;
extern---全局变量;
register---变量存储在硬件寄存器中。
27.下列语句中错误的是______。
A.constinta;
B.constinta=10;
C.constint*point=0;
D.constint*point=newint(10);
[解析]由关键字const声明符号常量的同时必须为其赋初值。
28.有如下程序段:
inti=4;
intj=1;
intmain(){
inti=8,j=i;
cout<<i<<j<<endl;
}
运行时的输出结果是______。
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,在计算机内存中表示的是不同的存储单元。
它们的值是独自存放的,互相不同。
29.下列选项中,正确的C++表达式是______。
A.counter++3
B.element3+
C.a+=b
D."
a"
=b
[解析]在C++中由一个或多个操作数与操作符连接而成的有效运算式称为表达式。
选项C是C++的合法表达式。
30.若有定义语句“inti=2,j=3;
”,则表达式i/j的结果是______。
A.0
B.0.7
C.0.66667
D.0.66666667
[解析]由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。
31.若有定义“intx=4,y=5;
”,则表达式“y>x++?
x--:
y++”的值为______。
A.3
B.4
C.5
D.6
[解析]在表达式“y>x++?
y++”中,由于自加(++)运行符的优前级高于比较运算符(>),所以首先进行自加运算,即变量x的值前自加1,等于5,此时表达式y>x不成立,所以整个表达式的值等于y++的值,由于y++是后自加运算,所以其值等于5。
32.有如下程序:
#include<iostream>
usingnamespacestd;
intmain()
{
charstr[100],*p;
cout<<"
Pleaseinputastring:
"
;
cin;
str;
p=str;
for(inti=0;
*p!
="
/0"
p++,i++);
i"
<<endl;
return0;
运行这个程序时,若输入字符串为:
abcdefgabcd
则输出结果是______。
A.7
B.12
C.13
D.100
[解析]此题考查的是默认输入格式。
本题输入数据类型为char,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefgabcd,其中abcdefg后有空格。
所以输入后str中的字符串为“abcdefg”;
主函数中接下来for语句的作用是计算字符串P的长度,故最终输出字符串“abcdefg”的长度7。
33.if语句的语法格式可描述为:
格式1:
if(<条件>)<语句>
或
格式2:
if(<条件>)<语句1>else<语句2>
关于上面的语法格式,下列表述中错误的是______。
A.<条件>部分可以是一个if语句,例如if(if(a==0)…)…
B.<语句>部分可以是一个if语句,例如if(…)if(…)…
C.如果在<条件>前加上逻辑非运算符!
并交换<语句1>和<语句2>的位置,语句功能不变
D.<语句>部分可以是一个循环语句,例如if(…)while(…)…
[解析]此题考查的是if语句。
If语句的条件部分是一个表达式而不是语句,因此选项A叙述错误。
34.若x和y是程序中的两个整型变量,则下列if语句中正确的是______。
A.if(x==0)y=1;
elsey=2;
B.if(x==0)theny=1elsey=2;
C.if(x==0)y=1elsey=2;
D.if(x==0)y=1;
[解析]ifelse语句的形式为:
if(<条件>)<语句1>else<语句2>
所以符合以上形式的ifelse语句为选项A。
35.下列语句中,与语句“n=(a>b?
(b>c?
1:
0):
0);
”的功能等价的是______。
A.if(a<=b)n=0;
B.if((a>b)||(b>c))n=1;
elsen=0;
C.if(a>b)if(b>c)n=1;
D.if(a>b)n=1;
elseif(b<=c)n=1;
elseif(b>c)n=1;
[解析]条件表达式(a>b?
0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?
0)的值,否则其值等于0。
而条件表达式(b>c?
0)的含义是,如果b>c成立,其值等于1,否则其值等于0。
36.有如下程序
chara;
cin>>a;
if(a="
*"
)cout<<"
***"
elsecout<<"
###"
输入字符+时,程序的运行结果是______。
A.***
B.###
C.***###
D.无输出
[解析]本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条件的判定。
双分支选择语句的执行流程是首先计算if后表达式的值,如果表达式的值为非零,则执行if后面的分支,否则执行与其匹配的else后面的分支。
本题执行时虽然输入变量a的值为‘+’,但是在执行if后括号内表达式(a="
)的时,由于此表达式为赋值表达式,因此表达式的值为赋值号右边的值"
,其ASCII码的值非零,执行if后面的输出语句“***”后回车。
37.执行语句序列______。
inti=0;
while(i<25)i+=3;
cout<<i;
输出结果是
A.24
B.25
C.27
D.28
[解析]此题考查的是循环语句while的使用。
i为3的倍数,当i=24时,i<25,执行while的循环体i+=3,则i=27,不满足i<25的条件,结束循环。
38.有如下程序:
intx=3;
do{
x-=2;
cout<<x;
}while(!
(--x));
执行这个程序的输出结果是______。
A.1
B.30
C.1-2
D.死循环
[解析]此题考查的是do-while循环语句。
do-while循环首先执行do语句中的循环体,再判断是否需要继续执行循环。
题目中do语句“x-=2”,while语句中“-x”即x为0,取反为非0,循环继续执行;
执行“x-=2”和“-x”取反后,循环结束程序退出。
39.执行下列语句段后,输出字符“*”的个数是______。
for(inti=50;
i>1:
--i)cout<<"
3.00)
A.48
B.49
C.50
D.51
[解析]此题考查的是for循环语句。
For循环中i从50开始逐渐递减,直到i=1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最终输出的是49个字符‘*’。
40.执行下列语句段后,输出字符“*”的个数是______。
i>1;
I-=2)cout<<"
B.25
C.26
D.50
执行循环语句,变量i从50递减,每次减2,所以循环会执行25次,输出25个‘*’。
41.有如下程序:
intsum;
i<6;
i+=3){
sum=i;
for(intj=i;
j<6;
j++)sum+=j;
cout<<sum<<endl;
B.10
C.12
D.15
[解析]由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋值,所以外层第二次循环如下:
此时i=3,sum=3内层循环开始如下:
j=3,j<6,sum=6;
j=4,j<6,sum=1