2016年9月计算机二级C语言冲刺试题及答案
(1)计算机能直接执行的程序是( )。

A.源程序
B.目标程序
C.汇编程序
D.可执行程序
(2)以下叙述中正确的是( )。
A.c语言规定必须用main作为主函数名,程序将从此开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.c语言程序将从源程序中第一个函数开始执行、
D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等
(3)以下选项中可用做c程序合法实数的是( )。、、
A.3.0e0.2
B..1e0
C.E9
D.9.12E
(4)下列定义变量的语句中错误的是( )。
A.int jnt;
B.double int_;
C.char For;
D.float US$;
(5)表达式:(im)((double)9/2)一9%2的值是( )。
A.0
B.3
C.4
D.5
(6)设变量均已正确定义,若要通过
scaIIf(”%d%c%d%c”,&al,&el,&a2,&c2);
语句为变量al和a2赋数值l0和20,为变量cl和c2赋字符x和Y。以下所示的输入形式中正确的是( )。(注:口代表空格字符)
(7)以下选项中不能作为c语言合法常量的是( )。.
A.0.1e+6
B.’cd’.
C.”、a”
D.’\011
(8)if语句的基本形式是:if(表达式)语句,以下关于“表=迭式”值的叙述中正确的是( )。
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
(9)有如下嵌套的if语句:
以下选项中与上述if语句等价的语句是( )。
A.k=(a
B.B.:((b>C.?b:
C.;B.k=(a
D.k=(a
(10)有以下程序:
程序执行后的输出结果是( )。
A.1
B.2
C.4
D.死循环
(11)以下关于结构化程序设计的叙述中正确的是( )。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
(12)对于一个正常运行的C程序,以下叙述中正确的是( )。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
(13)以下选项中能表示合法常量的是( )。
A.1,200
B.1.5E2.0
C.”\”
D.”\007”
(14)以下定义语句中正确的是( )。
A.int a=b=0;
B.char A=65+1,b=’b’;
C.float a=1,*b=*a,*C=&b;
D.double a=0.0;b=1.1;
(15)若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )。
A.X+1=y
B.++X.Y=X一一
C.X=X+10=X+Y
D.double(X)/10
若变量已正确定义为int型,要通过语句:scanf(”%d,%d,%d”,&a,&b,&C.;给a赋值l、给b赋值2、给C赋值3,以下输入形式中错误的是( )。(注:口代表一个空格符)
(17)以下不能输出字符A的语句是( )。(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)
若a是数值类型,则逻辑表达式(a==1)I l(a!=1)的值是( )。.
A.1
B.0
C.2
D.不知道a的值,不能确定
(19)设有定义:
int a=1,b=2,C=3;
以下语句中执行效果与其他三个不同的是( )。
if(a>B.C=a,a=b,b=C;
B.if(a>B.{C=a,a=b,b=C;}
C.if(a>B.C=a;a=b;b=c;
D.if(a>B.{C=a;a=b;b=c;}
(20)有以下程序:
程序执行后的输出结果是( )。
A.y=OS)y=一1
B.0
C.y=1
D.while构成无限循环
(21)有以下程序:
程序运行后的输出结果是( )。
(22)有以下程序:
程序运行后的输出结果是( )。
A.02356
B.0235
C.235
D.2356
以下关于retllm语句的叙述中正确的是( )。
A.一个自定义函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条retum语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
(24)已定义以下函数:
fun函数的返回值是( )。
一个整数
B.不确定的值
C.形参P中存放的值
D.形参P的地址值(25)以下程序段完全正确的是( )。
int * p;scanf(”%d”,&p);
B.int*p;scanf(”%d”,P);
C.int k,* P:&k;scanf(’’%d”,P);
D.int k,*p;*P=&k;scanf(”%d”,P);
(26)设有定义:
double a[10],*s=a;
以下能够代表数组元素a[3]的是( )。
A.($s)[3]
B.}(s+3)
C.*s[3]
D.}s+3
27、有以下程序
程序运行后的输出结果是( )。
A.6,2,3,4,5,
B.2,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
(28)有以下程序:
程序运行后的输出结果是( )。
A.4
B.34
C.31
D.32
(29)以下选项中正确的语句组是( )。
A.char*s;8={1.BOOK!”}i
B.char*s;8=”BOOK!”;
C.char S[10];S=”BOOK!”;
D.char S[];S=”BOOK!”;
(30)若有定义语句:
char}sl=‘’0K”,:It s2=”ok”;
以下选项中,能够输出“OK”的语句是( )。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
(31)有以下程序:
程序运行后的输出结果是( )。
A.11
B.9
C.6
D.7
(32)有以下程序(说明:字母A的ASCIl码值是65):
程序运行后的输出结果是( )。
A.BT
B.YE
C.YT
D.BY
(33)有以下程序:
程序运行后的输出结果是( )。
A.120
B.11
C.6
D.21
(34)有以下程序:
程序运行后的输出结果是( )。、
A.A B E F
B.C D E F
C.A B C D
D.C D A B
(35)以下关于typedef的叙述错误的是( )。
A.用typedef可以增加新类型
B.typedef只是将已存在的类型用一个新的名字来代替
C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D.用typedef为类型说明一个新名,通常可以增加程序的可读性
(36)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是( )。
A.删除尾结点
B.尾结点成为首结点
C.删除首结点
D.首结点成为尾结点
(37)有以下程序:
程序运行后的输出结果是( )。
A.33
B.197
C.143
D.28
(38)若有以下程序段:
程序运行后的输出结果是( )。
A.16
B.8
C.4
D.2
(39)以下叙述中错误的是( )。
A.gets函数用于从终端读人字符串
B.getehar函数用于从磁盘文件读人字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
(40)有以下程序:
以上程序执行后abc.dat文件的内容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
参考答案与解析
(1)D
【解析】计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。
(2)A
【解析】C语言中的主函数只能是main()函数,不能任意指定,所以B选项错误。C语言从主函数main()开始,到主函数main()结束,所以C选项错误。主函数必须写成小写的main,不能混淆大小写,所以D选项错误。
(3)B
【解析】A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以c选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。
(4)D
【解析】C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。
(5)B
【解析】先将整型数据9强制转换成doub1e型,然后除以2得到的结果与doub1e型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一1的值为3,所以选择B选项。
(6)C
【解析】输入数据的格式必须与scanf()的格式控制串完全匹配,如果A、B、c选项中在数字10后面均输入了空格,则会将空格赋给变量c1,而不是把x赋给c1,所以选择C选项。
(7)B
【解析】要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。
(8)D
【解析】if语句中的表达式可以是任意合法的数值,如常量、变量表达式。所以D选项正确。
(9)B
【解析】题目中嵌套语句的含义是当a
(10)A
【解析】一一k先自减再使用,所以第一次判断条件即为whi1e(4),条件为真,执行打印k的值k=4—3,结果为1;第二次判断条件即为whi1e(0),条件为假,结束循环,打印回车换行符。所以选择A选项。
(11)B
【解析】滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。
(12)C
【解析】任何一个c程序都是从主函数main开始,至主函数main结束,所以选择c选项。
(13)D
【解析】A选项中整型常量应表示为1200,不能包含“。”。B选项中E后面的指数必须为整数。C选项中转义字符以“、”开始,若要表示字符“、”,应写为“、、”。
(14)B
【解析】A选项语句中b变量还没有定义不能直接用于给a变量赋值。c选项语句中·b、-c表示的是一个实句中a=0.0后面应该为逗号,不能是分号。
(15)B
【解析】A选项中不能将变量Y赋给表达式,c选项中错误与A选项一样,D选项中强制类型转换表达式应写成(doub1e)x/10。
(16)D
【解析】scanf()的格式控制串可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符;以保证匹配。所以逗号必须输入。
(17)B
【解析】B选项输出的格式为%d,即为整型格式,所以输出字符A的ASCI1码值65,而不是字符A。由于大写字母比与其对应的小写字母的ASCI1码值小32,所以A正确。字符A的ASCI1码值就是65,所以以%C格式输出可以输出字符A,所以c正确。由于字符A的ASCI1码值比字符B的小1,所以D正确。
(18)A
【解析】逻辑或”I|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
(19)C
【解析】由于a小于b,所以所有选项中的条件都为假,C选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择C选项。
(20)B
【解析】执行Y一一直到值为0,由于Y一一是先用再减,所以退出循环时,y的值为一1。
(21)B
【解析】第一次执行外循环,i的值为3,第一次执行内循环j的值为1,j<=2条件成立,打印i+j的值,即4;第二次执行内循环J的值为2,j<=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。
(22)C
【解析】k的值为5,逐个对caBe语句进行匹配,均不匹配,执行defau1t下的语句n=0;k一一。再执行case2:ca804:后面的语句n+=2;k一一;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&11<5条件判断为真。第二次执行循环体,执行case3:后面的语句n+=1;k一一;。再执行break语句跳出循环,此时打印n的值3,此时k的值为2。第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;。执行break语句跳出循环体。打印n的值5。此时n不满足条件k>0&&n<5,所以结束循环。整个程序的打印结果为235。
(23)B
【解析】在函数中允许有多个Iett1r11语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,c选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选项正确。
(24)A
【解析】返回值为指针变量指向的数据,该数据已被定义为整型。因此A选项正确。
(25)C
【解析】A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(”%d”,&p)中无需再进行取地址操作;B选项中没有对指针进行初始化,是无效指针;D选项中语句+P=&k;的左端t pt是指针所指内存空间的值,&k是地址,应为P=&k。因此C选项正确。
(26)B
【解析】语句·s=a;表示指针变量s指向一维数
组a的首地址。a[3]表示引用数组a的第4个元素,+(s+i)表示引用指针8所指数组a的第i+1个元素,选项A、C、D的表示方法错误,只有B选项正确。
(27)A
【解析】本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加1运算,循环5次。因此A选项正确。
(28)C
【解析】本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。
(29)B
【解析】A选项去掉大括号就正确了;c选项和D选项应在定义时赋初值。因此B选项正确。
(30)B
【解析】strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCI1码值大小),-以第一个不相同的字符的大小作为比较结果。因为。O。<10.,所以strcmp(s1,s2)为负值,只有B选项正确。
(31)C
【解析】strcpy:字符串拷贝函数;str1en:求字符串长度函数(注意:不包含字符串结束标识符‘、0’);strcat:字符串连接函数。执行完语句strcat(P,r);后,P数组中存储的元素为a,b,c,d,a,b,C,d,8;执行语句strcpy(P+str1en(q),q);得到的结果是将q所指向的字符串拷贝至P+str1en(q)开始的存储位置,因为str1en的值为3,即从P+3开始存储q中的元素。所以执行完strcpy(P+str|en(q),q)语句后,字符数组P[20]的存储元素为a,b,c,a,b,o;所以str1en(P)的结果为6。因此C选项正确。
(32)B
【解析】本题中执行fun(a)时,会取字符串a的第一个字母B,因为字母B的ASCI1码值为66,所以不会输出字母8,函数只会输出ASCI1码值为奇数的字母,字母Y的ASCI1码值为89,字母T的ASCI1码值为84,字母E的ASCII码值为69。因此B选项正确。
(33)D
【解析】fun函数中的变量X为静态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用fun函数,x的定义只在第一次调用时有效,从第二次调用开始,x的定义相当于不存在,直接使用上次X的值。fun函数被调用了5次,每次调用后的返回值累加到s上。5次调用后,x的值为6,8的值为1+2+3+4+5+6=21。因此D选项正确。
(34)B
【解析】本题考察的是变量的作甩范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用:奉题中,在fun1()和main()函数内访问的是全局变量a和b,在fun2()函数中访问的是形参变量a和b。所以,main()函数中的prinff()函数输出的是在fun1()函数中被改变的全局变量a和b的值c、D,而fun2()函数中输出的是传递给它的实参值E、F。因此B选项正确。
(35)A
【解析】typedef并不是增加了新类型,面是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强程序的可移植性。所以A选项错误:
(36)D
【解析】本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后whi1e循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。
(37)C
【解析】本题考查带参数的宏定义,s为带参数的宏定义,运行S(k+j)为4*(k+j)*k+j+1=143,选项C正确。
(38)C
【解析】本题考查位运算,属于基础知识,题目中将整型变量8,二进制表达为00(301000,右移一位为00000100,即4,选项c正确。
(39)B
【解析】本题考查字符处理函数和文件操作函数。属于基础知识,其中B选项9etchar函数是用于从终端读人一个字符。
(40)B
【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chinan9,选项B正确。
【9月计算机二级C语言冲刺试题及答案】相关文章:
计算机二级C语言上机冲刺试题及答案08-29
9月计算机二级c语言试题库(附答案)11-05