试题

9月计算机二级C语言冲刺试题及答案

时间:2024-12-24 17:52:04 试题 我要投稿

2016年9月计算机二级C语言冲刺试题及答案

  (1)计算机能直接执行的程序是( )。

2016年9月计算机二级C语言冲刺试题及答案

  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语言冲刺试题及答案】相关文章:

2016年9月计算机二级《C语言》冲刺试题及答案10-12

计算机二级C语言上机冲刺试题及答案08-29

2017年3月计算机二级C语言考试冲刺试题及答案07-08

2016年9月计算机二级《C语言》试题及答案07-21

2016年9月计算机二级《C语言》试题与答案06-10

计算机二级《C语言》考试冲刺试题及答案202410-30

2017年9月计算机二级C语言基础试题及答案08-08

9月计算机二级c语言试题库(附答案)11-05

2016年9月计算机二级C语言基础试题及答案08-17