(1)下列叙述中错误的是( )。
A.C程序可以由多个程序文件组成
B.一个c语言程序只能实现一种算法
C.c程序可以由一个或多个函数组成,
D.一个C函数可以单独作为一个C程序文件存在
(2)以下选项中,能用作数据常量的是( )。
A.115L
B.0118
C.1.5el.5
D.0115
(3)按照c语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A.大写字母
B.下划线
C.数字字符
D.连接符
(4)设变量已正确定义并赋值,以下正确的表达式是( )。
A.X=Y+z+5,++Y
B.int(15.8%5)
C.X=Y*5=X+Z
D.X=25%5.0
(5)设有定义:int X=2;,以下表达式中,值不为6的是( )。
A.2*x.x+=2
B.x++,2*x
C.x*=(1+x)
D.x*!x+1
(6)有以下程序:
程序运行后的输出结果是( )。
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
(7)有以下程序:
已知字母A的ASCIl码为65,程序运行后的输出结果是( )。
A)E.68B.
B)D,69
C.E,D
D.输出无定值
(8)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是( )。
A.(x—Y<01Ix—Y>O)
B.(x—y<0)
C.(x—Y>0)
D.(x—Y==0)
(9)有以下程序:
程序运行后的输出结果是( )。
A.3
B.2
C.1
D.0
(10)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
(11)以下叙述中错误的是( )。
A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中
D.c语言源程序经编译后生成后缀为.obj的目标程序
(12)以下选项中,合法的一组c语言数值常量是( )。
A.12.0Xa23 4.5e0
B.028.5e…3 0xf
C.177 4el.5 0abe
D.0x8A 10,000 3.e5
(13)以下选项中不合法的标识符是( )。
A.&a
B.FOR
C.pfint
D.00
(15)若有定义:double a=22;inti=0,k=18;,则不符合c语言规定的赋值语句是( )。
A.i=(a+k)<=(i+k);B.i=a%11;
C.a=a++,i++;D.i=!a;
(16)有以下程序:
在VC 6.0平台上编译运行,程序运行后的输出结果是( )。
A.10,6
B.4,4
C.2,4
D.4。8
(17)有以下程序:
当执行程序时,按下列方式输入数据(从第l列开始,
A.12
B.12
C.1234
D.12343
(18)以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A.可以是任意合法的表达式
B.只能是整数0或非0整数
C.可以是结构体类型的数据
D.只能是整数0或1
(19)有以下程序:
程序运行后的输出结果是( )。
A.1,1,2,0
B.0,0,0,3
C.编译有错
D.0,1,2,0
(20)有以下程序:
程序运行后的输出结果是( )。
A.a=2,b=2
B.a=2,b=1
C.a=1,b=l
D.a=1,b=0
(1)B【解析】在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B错误。
(2)A【解析】A选项中l15L表示ll5是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。c选项中e后面应该是整数不能是小数l.5,所以c错误。D选项中八进制常量应该是数字…0开始,而不是字母…O开始。
(3)D【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D选项中的连接符不合法。
(4)A【解析】8与D选项中取模运算符%的左右两个操作数均应为整数,所以B、D错误。c选项中不能将X+Y的值赋给表达式Y*5,所以c错误。
(5)A【解析】A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,在执行第二个表达式2·X=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x *(1+x)=2}(1+2)=6。D选项中的表达式可以表示为x=X}(x+1)=2·3=60
(6)C【解析】z=X++,Y++,++y;因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(Z=x++),(Y++),(++y)。然后从左向右先计算表达式Z=X++,因为x++先使用后自增,所以z的值为1,X的值为2。再计算逗号表达式第二个表达式Y++,此时Y的值为2,最后计算第三个表达式++y,Y的值为3。
(7)A【解析】本题目中字符变量cl是字符‘A’的ASCIl码加上4,即69所对应的字符‘E’。字符变量c2是字符‘A’的ASCIl码加上3,即68所对应的字符‘D’。但是打印输出时,cl以%C的格式输出,所以是E,c2以%d的格式输出,所以是68。
(8)A【解析】条件表达式:x=表达式17表达式2:表送式3的含义是:先求解表达式1,若为非0(真),则求解表达芪2,将表达式2的值赋给x。若表达式1的值为0(假),则求辞表达式3,将表达式3的值赋给x。在本题中与表达式1::x—y)等价的是(x—Y<0I|x—Y>O)。
(9)D【解析】在if else语句中else总是与离它最近的f配对。本题目中x为l所以!X为0,所以执行else if语句中的内容,判断(x==O)是否成立,因为x为1所以条件不成立,听以else if内部的if…else语句不再执行,所以Y的值还是初蛤值0。
(10)A【解析】B选项中switch((int)x);语句中不应该有最后的分号。switch(exprl),中的exprl不能用浮点类型或10n9类型,也不能为一个字符串,所以c错误。ca”后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。
(11)A【解析】C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A错误。由C语言构成的指令序列称c源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。
(12)A【解析】C语言中八进制整型常量的开头是数字0,十六进制整型常量的数字开头是Ox。C语言中的实型常量
有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以“e”或“E',后跟一个整数来表示以l0为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中028错误,八透割中没有数字8。c选项中4el.5中e后面的指数不是整数:D选项中3.e5小数点后面缺少数字。
(13)A【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的。FOR。可以作为标识符来用。A选项中含有非法字符&,所以选择A。
(14)A【解析】B选项中函数pow(x,C)错误应该直接使用exp(x)函数。c选项中函数ah(n^x+e“x)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。
(15)B【解析】取模运算符“%”,二元运算符,具有左结合性,参与运算的量均为整型。选项8中的a变量是doable实型,所以8不符合规定。
(16)D【解析】C语言中利用sizeof()函数判断数据类型长度,在VC 6.0平台中,整型int占有4个字节,doable型数据占有8个字节。
(17)D【解析】按照从键盘输入的数据可以_判断字符l给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。
(18)A【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。
(19)C【解析】本题中ff(a=1)b=1;与else d=3;之间多了语句c=2;所以会出现else语句的位置错误的编译失败提示。
(20)B【解析】C88e常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的Case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case 2语句的a十+;b++;a为2,b为1。所以结果为B。
2017年计算机二级C语言考前模拟试题及答案7.doc