2017年计算机二级C语言考前必做试题及答案2

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 16:39:54 计算机等级考试
2017年计算机二级C语言考前必做试题及答案2
2017年计算机二级C语言考前必做试题及答案2计算机等级考试

  (21)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(   )。

  A.852

  B.963

  C.741

  D.875421

  (22)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(   )。

  A.let=4

  B.m=2

  C.m=6

  D.m=5

  (23)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(   )。

  A.6

  B.3

  C.8

  D.12

  (24)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  则以下函数调用语句错误的是(   )。

  A.k:f(a,B.;

  B.k:add(a,B.;

  C.k=(*f)(a,B.;

  D.k=*(a,B.;

  (25)有以下程序

  2016年计算机二级C语言考前30天通关必做题(5)

  (26)下列定义数组的语句中,正确的是(   )。

  2016年计算机二级C语言考前30天通关必做题(5)

  (27)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(   )。

  A.0 3 0 4

  B.2 0 5 0

  C.3 3 4 4

  D.3 0 4 0

  (28)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(   )。

  A.3

  B.4

  C.l

  D.9

  (29)以下语句中存在语法错误的是(   )。

  2016年计算机二级C语言考前30天通关必做题(5)

  (30)以下不能将s所指字符串正确复制到t所指存储空间的是(   )。

  A.do{*t++=*8++;}while(*s);

  B.for(i=0;t[i]=s[i];i++);

  C.while(*t=*s){t++;s++;}

  D.for(i=0,j=0;t[i++]=s[j++];);

  (31)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(  )。

  A.10,One*Dream!

  B.9,One*Dream!

  C.9,One*World

  D.10,One*World

  (32)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(  )。

  A.0

  B.3

  C.7

  D.8

  (33)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序执行后的输出结果是(  )。

  A.5,11

  B.5,5

  C.11,11

  D.11,5

  (34)在c语言中,只有在使用时才占用内存单元的变量,其存储类型是(  )。

  A.aut0和static

  B.extern和register

  C.aut0和register

  D.static和register

  (35)下面结构体的定义语句中,错误的是(  )。

  A.struct ord{int x;int Y;int z;}struct ord a;

  B.struct ord{int x;im Y;im z;};struct ord a;

  C.struct ord{int x;int Y;int Z;}a;

  D.struct{int x;int Y;int z;}a;

  (36)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(  )。

  A.2,4

  B.1,2

  C.1,4

  D.2.3

  (37)以下叙述中正确的是(  )。

  A.在C语言中,预处理命令行都以“#”开头

  B.预处理命令行必须位于c源程序的起始位置

  C.#include必须放在C程序的开头

  D.C语言的预处理不能实现宏定义和条件编译的功能

  (38)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(  )。

  A.O

  B.10

  C.20

  D.出错

  (39)有以下程序:

  2016年计算机二级C语言考前30天通关必做题(5)

  程序运行后的输出结果是(  )。

  A.16

  B.1

  C.32

  D.O

  (40)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是(  )。

  A.一个内存块的字节数

  B.一个整型变量,代表待读取的数据的字节数

  C.一个文件指针,指向待读取的文件

  D.一个内存块的首地址,代表读人数据存放的地址

 

|||

  (21)A【解析】第一次for循环,y的值为9,y%3的值为3,满足条件打印一一Y,即先减一后打印,所以打印8;第二次for循环,Y的值为7,y%3的值为1,不执行打印语句;第三次for循环,y的值为6,y%3的值为0,满足条件打印一一Y,即先减一后打印,所以打印5;第四次for循环,Y的值为4,不满足if条件,不执行打印语句;第五次for循环,Y的值为3,满足if条件,打印输出2;第六次for循环,Y的值为1,不满足条件,不执行打印语句。

  (22)C【解析】第一次外循环i的值为l,第一次内循环j的值为3,不满足条件执行in}=i}j即m的值为3;第二次j的值为2,不满足条件执行m·=i*j,即m的值为6;第三次j的值为1,不满足条件执行nl*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。

  (23)A【解析】本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)=6。所以选择A。

  (24)D【解析】D选项中+f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

  (25)A【解析】选项8的正确写法应为P=&n;选项c的正确写法应为scanf(”%d”,P);选项D的正确写法应为printf(”%d\n”,* P)。

  (26)A【解析】数组说明的一般形式为:类型说明符

  数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。c选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。

  (27)D【解析】第一次循环i为0,i%2为o,执行switch(a[O]%2)中的ca∞0语句后内容即a[0]++,a[0]的值变成3;第二次循环i的值为l,i%2为1,执行ca∞1:a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的ca∞1语句后的内容a[2]一一,8[2]的值变成4;第四次循环i的值为3,i%2为1,执行casel:a[i]=0;所以a[3]的值变成0。

  (28)B【解析】每次内循环只循环一次就结束,第一次外循环时t=t+b[0][b[0][0]]=1+b][0]=1+0=第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。

  (29)A【解析】数组定义后,不可以对数组整体赋值,s是二维数组,因SS[1]是一维字符数组,即字符串,字符串赋值可以使用strcpy(SS[1],”right”);这样的形式,而选项A中对二维数组中的第…l维(相当于一个一维数组)赋值,是不可以的。选项8和D是定义时对数组初始化,这是可以的。选项c中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。

  (30)A【解析】do{*t++=}S++;}while(*S);不能因为当*s=’、0。时,while(* s)跳出循环,这样字符串结束标志’、0’没有复制给}t,造成}t不完整。注意,*t++=*s++是先执行t=*s,然后才进行t=t+1,s=s+1。B、C、D都能将。\0’复制过去

  (31)A【解析】P是指向二维字符数组第二行One+Dream!的数组指针,所以长度是l0,打印输出的也是该字符串。

  (32)B【解析】本题中遇到“\”字符循环结束,所以只统计“\”之前的数字字符,所以为3。

  (33)A【解析1声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数tim中的变量i和m均为静态局部变量。所以第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,nl的值已经是5了,所以执行i+=m+1,i的值变为9,nl=i+x+Y=9+1+l=11。

  (34)C【解析】aut0:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空问。register:为了提高效率,C语言允许将局部变量的值放在cPU中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extem:#1’部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

  (35)A【解析】A选项stnlet onl{int x;int y;int 2;struet ora a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B选项或者D选项的格式。

  (36)B【解析l结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择B。

  (37)A【解析】预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、c错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D错误。

  (38)C【解析】nlaIloc(sizeof(int))的作用是开辟一个长度为sizeof(int)存储空间,并通过强制类型转换(int。)将此存储空间的地址赋给了一个整型的指针变量P。然后执行语句·P=n,使得·p的值为10,并通过return返回此值,即a的值为l0。然后在主函数中输出a+ftm(10)=10+10=20。

  (39)B【解析】无符号整型变量a的值为8,二进制表示为00001000,右移3位后为00000001,即十进制的l,所以输出1。

  (40)D【解析】fread(void}buffer,size—t size,size—tcount,FILE}stream);功能是从一个文件流中读数据,读取count个元素。每个元素size字节,如果调用成功返回count。buffer:用于接收数据的内存地址,大小至少是size * count字节;size:单个元素的大小,单位是字节;count:元素的个数,每个元素是size字节;Stream:输人流。

 

计算机等级考试