ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:81.50KB ,
资源ID:1326122      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1326122.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C语言笔试-316及答案解析.doc)为本站会员(postpastor181)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C语言笔试-316及答案解析.doc

1、二级 C语言笔试-316 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列叙述中,错误的是( )。(分数:2.00)A.在同一 C程序文件中,不同函数中可以使用名字相同的变量B.在 main()函数体内定义的变量是全局变量C.形参是局部变量,函数调用完成即失去意义D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用2.若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是( )。(分数:2.00)A.p1:p2=B.p1=n;C.p1=*p2=p1;D.p1=p2=p1;3.设 q1和 q2是指向

2、一个 float型一维数组的指针变量,k 为 float型变量,则不能正确执行的语句是( )。(分数:2.00)A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);4.设变量 a、b、c、d 和 y都已正确定义并赋值。若有下列 if语句 if(aB) if(c=D) y=0;else y=1;该语句所表示的含义是( )。(分数:2.00)A.B.C.D.5.c语言的基本单位是( )。(分数:2.00)A.函数B.过程C.子程序D.子函数6.下列选项中合法的赋值语句是( )。(分数:2.00)A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+

3、y);7.有下列程序:main()char s=“abcde“;S+=2;printf(“%d/n“,s0);执行后的结果是( )。(分数:2.00)A.输出字符 a的 ASCII码B.输出字符 c的 ASCII码C.输出字符 cD.程序出错8.若有“double a;”,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,C.scanf(“%lf“,9.下列叙述中正确的是( )。(分数:2.00)A.break语句只能用于 switch语句B.在 switch语句中必须使用 defaultC.break语句必须与 switch语句中的 ca

4、se配对使用D.在 switch语句中,不一定使用 break语句10.下列程序的输出结果是( )。mainint x=8,y=8;printf(“%d%d/n“,x-,-y);(分数:2.00)A.8 8B.7 7C.7 8D.8 711.下列程序的输出结果是( )。#includestdio.hf(int(分数:2.00)A.ifaB) if(b0)c=0;else c+=1;printf(“%d/n“,C) ;(分数:2.00)A.2B.3C.5D.414.结构化程序设计的核心和基础是( )。(分数:2.00)A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法15.

5、树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1个B.1或多于 1C.0或 1D.至少有 2个16.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ17.若定义 int a=10,则表达式 a+=a-*=a的值是( )。(分数:2.00)A.0B.-180C.-100D.-9018.需求分析阶段的任务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能19.若二维数组 a有 m列,则在 aij刚前的元素个数为( )。(分数

6、:2.00)A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+120.定义结构体数组:struct stuint num;char name20;x5=1,“LI“,2,“ZHAO“,3,“WANG“,4,“ZHANG“,5,“LIU“;for(i=1;i5;i+)printf(“%d%c“,xi.num,xi.name2;以上程序段的输出结果为( )。(分数:2.00)A.2A3N4A5UB.112A3H41C.1A2N3A4UD.2H3A4H5121.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是( )。(分数:2.00)A.地址传递B.值传递C.由实参传给形参

7、,并由形参传回给实参D.由用户指定传递方式22.常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构23.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。stmct stchar a15;int b;double c;printf(“%d“,sizeof(struct st);(分数:2.00)A.15B.8C.25D.224.下列不正确的转义字符是( )。(分数:2.00)A./B.tC./nD.08825.若希望下列的程序运行后输出 25,程序空白处的正确

8、选项是( )。main()int i,j=50,a=7,4,10,5,8;for( )j+=ai;printf(“%d“,j-40);(分数:2.00)A.i=1;i4;+iB.i=1;i3;+iC.i=4;i2;i-D.i:2;i4;+i26.函数 ftell(fp)的作用是( )。(分数:2.00)A.得到 fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上三种答案均正确27.有下列程序:#include“stdio.h“main()int x=0;int y=0;while(x7x+;printf(“%d,%d“,y,x);程序的输出结果是( )。

9、(分数:2.00)A.0,7B.7,7C.0,6D.1,628.能正确表示“当 x的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。(分数:2.00)A.(x=1)x=12;if(!(分数:1.00)A.x-;+x;x=1+x;执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 1。(分数:2.00)填空项 1:_48.下列程序的输出结果是_。main()int a=1,b=2,c=3,t=0;if(aB) t=a;a=b;b=t;if(aC) t=a;a=c;c=t;printf(“%d,%d,%d/n“,a,b,c);(分数:2.00)填空项 1:_49.在

10、 C语言中,while 和 dowhile循环的主要区别是 1 的循环至少被执行一次。(分数:2.00)填空项 1:_50.下列程序的输出结果是_。#includestdio.hmain()intx=10,y=10,i;for(i=0;x8;y=+)printf(“%d%d“,X-,y);(分数:2.00)填空项 1:_51.若有定义 doublea5;,则 a数组元素下标的上限为 1。(分数:2.00)填空项 1:_52.执行下列语句段后,x 的值是_。int*p,X;x=100;p=x=*p+50;(分数:2.00)填空项 1:_53.设有下列宏定义:#define A 2#define

11、B (A+3) 则执行赋值语句“k=B*20;”(k 为 int型变量)后,k 的值是_。(分数:2.00)填空项 1:_54.有下列程序:#includestdio.hmain()char c;while(c=getchar()!=,)putchar(+c);程序运行时,如果从键盘输入:A,B,CR,则输出结果为_。(分数:2.00)填空项 1:_55.下列程序执行输出的结果是_。#includestdio.hf(int a)int b=0;static c=7;a=c+;b+;return(a);main()int a=2,i,k;for(i=0;i2;i+)k=f(a+);printf(

12、“%d/n“,k);(分数:2.00)填空项 1:_二级 C语言笔试-316 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列叙述中,错误的是( )。(分数:2.00)A.在同一 C程序文件中,不同函数中可以使用名字相同的变量B.在 main()函数体内定义的变量是全局变量 C.形参是局部变量,函数调用完成即失去意义D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用解析:解析 本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就失去意义了,所以在同一个 C程序文件中,不同的函数体中可以使用名字相同的局部变量

13、。2.若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是( )。(分数:2.00)A.p1:p2=B.p1=n;C.p1=*p2=p1;D.p1=p2=p1; 解析:解析 本题考查指针变量的赋值。选项 A)中,p1、p2 本身都是地址变量,不能再将 p1 取地址赋给 p2;选项 B)中,不能将整型数据直接赋值给指针型数据;选项 C)中,*p2 代表了一个整型变量,而*p2=p1 这个语句试图把一个地址值放入一个整型变量中是错误的;选项 D)中指针间的赋值是正确的。3.设 q1和 q2是指向一个 float型一维数组的指针变量,k 为 float型变量,则不能正确执行的语句

14、是( )。(分数:2.00)A.k=*q1+*q2;B.q1=k; C.q1=q2;D.k=*q1*(*q2);解析:解析 选项 A)是将指针 q1和 q2所指向的变量值相加,然后赋给 k;选项 B)中,float 型数据和指针型数据之间不能进行赋值运算:选项 C)中,是两个指针变量之间的赋值;选项 D)中,是两个指针型变量所指向的两个 float型数据相乘。4.设变量 a、b、c、d 和 y都已正确定义并赋值。若有下列 if语句 if(aB) if(c=D) y=0;else y=1;该语句所表示的含义是( )。(分数:2.00)A.B.C. D.解析:解析 语句 if(c=d) y=0;e

15、lse y=1;是 if(ab)语句的一个子句。所以整个 C语句表达式的意思是:在 ab 的情况下,如果 c=d则 y=0,否则 y=1。所以,选项 C)为正确答案。5.c语言的基本单位是( )。(分数:2.00)A.函数 B.过程C.子程序D.子函数解析:解析 C 语言是函数式的语言,它的基本组成单位是函数,在 C语言中任何程序都是由一个或者多个函数组成的。6.下列选项中合法的赋值语句是( )。(分数:2.00)A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y); 解析:解析 选项 A)是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句;选项 B)是一

16、个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句;选项 C)是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。7.有下列程序:main()char s=“abcde“;S+=2;printf(“%d/n“,s0);执行后的结果是( )。(分数:2.00)A.输出字符 a的 ASCII码B.输出字符 c的 ASCII码C.输出字符 cD.程序出错 解析:解析 因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。8.若有“double a;”,则正确的输入语句是( )。(分数

17、:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,C.scanf(“%lf“, 解析:解析 scanf 函数的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。题中定义变量 a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“printf(“%d%d/n“,x-,-y);(分数:2.00)A.8 8B.7 7C.7 8D.8 7 解析:解析 本题考查自减(-)运算符的使用。“x-”是先引用 x的值然后将 x的值减 1,所以输出的x值为 8;“-y”是先将 y的值减 1然后

18、再引用 y的值,所以输出的 y值为 7。11.下列程序的输出结果是( )。#includestdio.hf(int(分数:2.00)A.ifaB) if(b0)c=0;else c+=1;printf(“%d/n“,C) ;(分数:2.00)A.2B.3C.5 D.4解析:解析 本题考查 if else语句。第一个 if语句,先判断条件,发现 ab 条件成立,执行下列的语句:第二个 if语句,先判断条件,发现 b0 条件不成立,则执行与其配对的 else语句,c+=1,得c=5。14.结构化程序设计的核心和基础是( )。(分数:2.00)A.结构化分析方法B.结构化设计方法C.结构化设计理论

19、D.结构化编程方法解析:解析 结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。15.树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1个B.1或多于 1C.0或 1 D.至少有 2个解析:解析 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为 0。16.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ 解析:解析 对二叉

20、树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住 3种遍历的顺序:前序,访问根一按前序遍历左子树一按前序遍历右子树;中序,按中序遍历左子树一访问根一按中序遍历右子树;后序,按后序遍历左子树一按后序遍历右子树一访问根。17.若定义 int a=10,则表达式 a+=a-*=a的值是( )。(分数:2.00)A.0B.-180 C.-100D.-90解析:解析 算术运算符的运算规则是:从右到左的原则。所以表达式中先计算 a=a-a*a的值是-90,再计算 a=a+a的值是-180。18.需求分析阶段的任务是( )。

21、(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能 解析:解析 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。19.若二维数组 a有 m列,则在 aij刚前的元素个数为( )。(分数:2.00)A.i*m+j-1B.i*m+j C.j*m+iD.i*m+j+1解析:解析 二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是 i,说明它前面还有 i行,有 i*m个元素,数组第二维的下标是 i,说明

22、它前面还有 i列,有 j个元素,所以共有 i*m+j个元素。20.定义结构体数组:struct stuint num;char name20;x5=1,“LI“,2,“ZHAO“,3,“WANG“,4,“ZHANG“,5,“LIU“;for(i=1;i5;i+)printf(“%d%c“,xi.num,xi.name2;以上程序段的输出结果为( )。(分数:2.00)A.2A3N4A5U B.112A3H41C.1A2N3A4UD.2H3A4H51解析:解析 本题主要考查结构体数组的使用。xi.num 为结构体 xi中的 num成员,xi.name2是结构体 xi中 name成员的第 3个元素

23、。程序执行循环过程时:第 1次循环,i=1,输出 x1.num,x1.name2的值,即 2A;第 2次循环,i=2,输出 x2.num,x2.name2的值,即 3N;第 3次循环,i=3,输出 x3.num,x3.name2的值,即 4A;第 4次循环,i=4,输出 x4.num,x4.name2的值,即5U。21.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是( )。(分数:2.00)A.地址传递B.值传递 C.由实参传给形参,并由形参传回给实参D.由用户指定传递方式解析:解析 本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之

24、间只是实参将值传递给形参。22.常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链式存储结构 B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。23.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。stmct stchar a15;int b;double c;printf(“%d“,sizeof(struct st);(分数:2.00)A.15B.8C.25 D.2解析:解析 本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使

25、用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中 int b占 2个字节,char a15占 15个字节,double c 占 8个字节,所以共 25个字节。24.下列不正确的转义字符是( )。(分数:2.00)A./B.tC./nD.088 解析:解析 /是反斜线转义字符;/t是水平跳格转义字符;/n是换行转义字符;C 语言中没有规定088为转义字符。25.若希望下列的程序运行后输出 25,程序空白处的正确选项是( )。main()int i,j=50,a=7,4,10,5,8;for( )j+=ai;printf(“%d“,j

26、-40);(分数:2.00)A.i=1;i4;+iB.i=1;i3;+iC.i=4;i2;i-D.i:2;i4;+i 解析:解析 要想使程序输出是 25,则 i-40=25,j=65,而 j初值是 50,所以填入 for循环中的语句,使引用的数组元素累加为 65-50=15即可。26.函数 ftell(fp)的作用是( )。(分数:2.00)A.得到 fp所指向文件的当前读写位置 B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上三种答案均正确解析:解析 位置指针当前值函数 ftell()的基本调用格式为:fiell(fp)。fiell()函数的参数说明:“fp”是指向文件的文件型

27、指针。fiell函数的功能:得到 fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。27.有下列程序:#include“stdio.h“main()int x=0;int y=0;while(x7x+;printf(“%d,%d“,y,x);程序的输出结果是( )。(分数:2.00)A.0,7 B.7,7C.0,6D.1,6解析:解析 本题考查 while循环。y 的值在 while循环的控制表达式中加 1,在循环体内减 1,所以总的 y值不变,且控制条件+y 永远非零。当 x加到 7时不满足循环条件,结束循环。28.能正确表示“当 x的取值在1,10和10

28、0,110范围内为真,否则为假”的表达式是( )。(分数:2.00)A.(x=1)x=12;if(!(分数:1.00)A.x-;+x;x=1+x;执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 1。(分数:2.00)填空项 1:_ (正确答案:x+1)解析:解析 本题考查“+”、“-”运算符;“+”、“-”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增 1或减 1,后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1。48.下列程序的输出结果是_。main()int a=1,b=2,c=3,t=0;if(aB) t=a;a=b;b=t;if(aC)

29、 t=a;a=c;c=t;printf(“%d,%d,%d/n“,a,b,c);(分数:2.00)填空项 1:_ (正确答案:3,1,2)解析:解析 分析程序,第一个汀语句,a=1,b=2,控制条件 ab 成立,则交换 a、b 的值,此时a=2,b=1。第二个 if语句,a=2,c=3,控制条件 ac 成立,则交换 a、c 的值,此时 a=3,c=2。49.在 C语言中,while 和 dowhile循环的主要区别是 1 的循环至少被执行一次。(分数:2.00)填空项 1:_ (正确答案:dowhile)解析:解析 考查 while和 dowhile循环的主要区别。 while 循环的控制出现

30、在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体:在 dowhile构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。50.下列程序的输出结果是_。#includestdio.hmain()intx=10,y=10,i;for(i=0;x8;y=+)printf(“%d%d“,X-,y);(分数:2.00)填空项 1:_ (正确答案:101091)解析:解析 for(表达式 1;表达式 2;表达式 3) 语句的功能是:首先计算表达式 1的值,然后检测表达式 2的值,若其值为真,则执行循环体语句,执行完毕后,再计

31、算表达式 3的值。然后再检测表达式 2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第 1 次循环 x8 成立,输出x=10,y=10 后,x 的值减 1,i=1,执行 y=+i操作,y 的值变为 1;判断条件还成立,输出 x=9,y=1,然后 x的值减 1,循环条件不成立,则退出循环。51.若有定义 doublea5;,则 a数组元素下标的上限为 1。(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 一维数组元素的定义形式为:数组名N,则该数组中元素的下限是 0,上限是 N-1。52.执行下列语句段后,x 的值是_。int*p,X;x=100;p=x=*p+50;

32、(分数:2.00)填空项 1:_ (正确答案:150)解析:解析 本题先给变量 x赋初始值 100,然后将指针 p 指向变量 x,*p 是取指针 p所指地址的内容,即 100,所以 x=100+50=150。53.设有下列宏定义:#define A 2#define B (A+3) 则执行赋值语句“k=B*20;”(k 为 int型变量)后,k 的值是_。(分数:2.00)填空项 1:_ (正确答案:100)解析:解析 本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。54.有下列程序:#includestdio.hmain()char c

33、;while(c=getchar()!=,)putchar(+c);程序运行时,如果从键盘输入:A,B,CR,则输出结果为_。(分数:2.00)填空项 1:_ (正确答案:B)解析:解析 因为 c是字符类型变量,它只能接收一个字符,所以 c=A,字符型变量在参与算术运算的时候是用其相应的 ASCII码参与运算的,这样+c 得到字母 B的 ASCII 码,用 putchar函数输出是输出其相应的字符,所以是 B。55.下列程序执行输出的结果是_。#includestdio.hf(int a)int b=0;static c=7;a=c+;b+;return(a);main()int a=2,i,k;for(i=0;i2;i+)k=f(a+);printf(“%d/n“,k);(分数:2.00)填空项 1:_ (正确答案:8)解析:解析 第 1次 for循环,i=0,调用函数 f(2),然后将 a的值加 1,在 f()函数中,变量 c为static类型,所以 c=8:第 2次,for 循环,i=1,调用函数 f(3),然后将 a 的值加 1,调用函数 f(3)时,萨 c+=8,所以 k=8。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1