欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1326131       资源大小:87.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C 语言笔试-328 及答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.表示关系 abc 的 C 语言表达式为( )。(分数:2.00)A.(a= 执行后的输出结果是( )。(分数:2.00)A.7B.3C.2D.03.下列程序的输出结果是( )。 #includestdio.h main() int a=4; printf(“%d/n“,(a+=a-=a*a);(分数:2.00)A.-8B.14C.0D.-244.有下列程序: #includestdio.h main() char c1,c2,c3,c4,c5,c6; scan

    2、f(“%c%c%c%c“,c6=getchar(); putchar(c1);putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始): 123CR 45678CR 则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.12455.下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是( )。(分数:2.00)A.x%2=1B.x/2C.x%2!=0D.x%2=06.设有下列语句 int a=1,b=2,c; c=a(b2); 执行后,C 的值为( )。(分数:2.00)A.6B.7C.8D.97.利

    3、用 fseek 函数可实现的操作是( )。(分数:2.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确8.下列叙述中错误的是( )。(分数:2.00)A.线性表是由 n 个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件D.线性表可以是空表9.设计软件结构是在软件生命周期的( )。(分数:2.00)A.软件定义期B.软件开发期C.软件维护期D.以上 3 个都不是10.若 a、b、c、d 都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是( )。(分数:2.00)A.a+d;B.a+;C.a=b=c=d=10

    4、0;D.a=(b=3)+(d=5);11.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针12.若有定义: “int a23;”则对 a 数组的第 i 行第 j 列元素的正确引用为( )。(分数:2.00)A.*(*(a+B.(a+C.*(a+i+D.*(a+j13.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.nD.n+114.下列程序的输出结果是( )。 #includestdio.h void main() in

    5、t a=0,b=1,c=2; if(+a0+b0) +C; printf(“%d,%d,%d“,a,b,c); (分数:2.00)A.0,1,2B.1,2,3C.1,1,3D.1,2,215.下列叙述中正确的是( )。(分数:2.00)A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法16.字符串“/“ABCDEF/“/“的长度是( )。(分数:2.00)A.15B.10C.

    6、7D.817.下列选项中不会引起二义性的宏定义是( )。(分数:2.00)A.#define S(x*xB.#define S(*(C.#define S(x*D.#define S(*()18.下列工具中为需求分析常用工具的是( )。(分数:2.00)A.PADB.PFDC.N-SD.DFD19.执行语句 printf(“%u/n“,+12345)的输出结果是( )。(分数:2.00)A.12345B.0C.-1D.非定值20.有下列二叉树,对此二叉树中序遍历的结果为( )。 (分数:2.00)A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ21.定义

    7、下列结构体(联合)数组: struct St char name15; int age; a10=“ZHAO“,14,“WANG“,15,“LIU“,16,“ZHANG“,17; 执行语句 printf(“%d,%c“,a2.age,*(a3.name+2)的输出结果为( )。(分数:2.00)A.15,AB.16,HC.16,AD.17,H22.下列程序的运行结果是( )。 main() int x=1,y=3,a=0; while(x+!=(y-=1) a+=1; if(yx)break; printf(“%d,%d,%d/n“,x,y,a); (分数:2.00)A.2,3,2B.2,3,

    8、1C.1,3,3D.3,1,223.下列程序的输出结果是( )。 #includestdio.h int fun(int x) int p; if(x=0x=1) return 3; else p=x-fun(x-2); return p; void main() printf(“/n%d“,fun(5); (分数:2.00)A.5B.3C.7D.124.下列选项中,值为 1 的表达式是( )。(分数:2.00)A.1-0B.1-/0C.1-0D./0-025.在 C 语言中,下列关于文件操作的叙述正确的是( )。(分数:2.00)A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对

    9、文件操作顺序没有统一规定D.以上全错26.有下列程序: #includestdio.h main() int a=6,b=7,m=1; switch(a%2) case0:m+;break; case 1=m+; switch(b%2) defaut:m+; case0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2C.3D.427.若有下列定义,则对 a 数组元素地址的正确引用是( )。 int a5,*p=a;(分数:2.00)A.p+5B.*a+1C.”,则正确的输入语句是( )。(分数:2.00)A.scanf(“%

    10、1f“,;B.scanf(“%f“, while(!(-X); 程序的输出结果是( )。(分数:2.00)A.1B.20C.1-4D.死循环38.已有定义 int(*q)(),指针 q 可以( )。(分数:2.00)A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型39.下列说法正确的是( )。(分数:2.00)A.一个 C 程序可以有多个主函数B.一个 C 语言的函数中只允许有一对花括号C.C 程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D.在对 C 程序进行编译时,可以发现注释行中的拼写错误40.若有下列说明和语句,则对结构体变量 st

    11、 中成员 i 的引用方式不正确的是( )。 Struct stu int i; int name; st,*p; p=b=0;c=1;n=1; while(n=3) c=c*a;b=b+c;+n; printf(“b=%d“,b); (分数:2.00)填空项 1:_50.下列程序的输出结果是_。 main() int i=0,a=0; while(i20) for(;) if(i%10)=0)break; else i-; i+=11; a+=i; printf(“%d/n“,a); (分数:2.00)填空项 1:_51.下列程序的运行结果是_。 #includestdio.h long fu

    12、nc(int x) long p; if(x=Ox=1) return(1); p=x*func(x-1); return(p); main() printf(“%d/n“,func(4); (分数:2.00)填空项 1:_52.下列程序将二维数组 a 的行和列元素互换后存放到另一个二维数组 b 中。请填空。 main() int a23=1,2,3,4,5,b32,i,j; for(i=0;i2;i+) for(j=0;j3;j+) _; (分数:2.00)填空项 1:_53.下列程序的运行结果是_。 #includestdio.h main() int fun(); fun(); fun(

    13、) static int a4=1,2,3,4; int i; for(i=0;i4;i+)ai+=ai; for(i=0;i4;i+)printf(“%d,“,ai); printf(“/n“); (分数:2.00)填空项 1:_54.设有下列程序: #includestdio.h #includestring.h main() int i; char s10,t10;gets(t); for(i=0;i2;i+) gets(s); if(strcmp(t,s)0)strcpy(t,s); printf(“%s/n“,t); 程序运行后,从键盘上输入(CR代表回车符):DEFCRBADEPC

    14、RQTHRGCR,则程序的输出结果是_。(分数:2.00)填空项 1:_55.下列程序的运行结果是_。 #define P(a) printf(“%d“,a) main() int j,a=1,2,3,4,5,6,7,i=5; for(j=3;j1;j-) switch(j) case 1: case 2:P(ai+;break; case 3:P(a-i); (分数:2.00)填空项 1:_二级 C 语言笔试-328 答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.表示关系 abc 的 C 语言表达式为( )。(分数:2.00)A.(

    15、a= 执行后的输出结果是( )。(分数:2.00)A.7B.3C.2 D.0解析:解析 因为在函数 fun(int x)中,如果参数 x 等于 0 或 1 时,返回值 3。否则 p=x-fun(x-2)这是一个递归函数,所以在主函数调用 fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)= 7-5=2”,所以最后的输出结果为 2。3.下列程序的输出结果是( )。 #includestdio.h main() int a=4; printf(“%d/n“,(a+=a-=a*a);(分数:2.00)A.-8B.14

    16、C.0D.-24 解析:解析 表达式 a+=a-=a*a 看起来复杂,其实将它分成两个表达式来计算就简单了:第一个表达式 (a-=a*a)=(a=a-a*a=-12);第二个表达式(a+=a-=a*a)=(a=a+a=-24)。4.有下列程序: #includestdio.h main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“,c6=getchar(); putchar(c1);putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始): 123CR 45678CR 则输出结果是( )。(分

    17、数:2.00)A.1267B.1256C.1278D.1245 解析:解析 当用 scanf 函数从键盘输入数据时,每行数据的末尾按下回车键(Enter 键)之前,可以任意修改。但按下回车键 putchar(c1) (Enter 键)之后,scanf 函数即接受了这一行数据,不能再回去修改。所以本题中,当输入 123CR时,变量 c1、c2、c3 的值分别为 1、2、3,当输入 45678CR时,变量c5、c6 的值 4 和 5。所以用输出函数 putchar(c1)输出 1,putchar(c2)输出 2,printf(“%c%c/n“,c5,c6)输出 45。所以选项 D)为正确答案。5.

    18、下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是( )。(分数:2.00)A.x%2=1B.x/2C.x%2!=0D.x%2=0 解析:解析 因为 x 的值为大于 1 的奇数,所以 x 除以 2 的余数等于 1。所以选项 D)等于关系表达式的结果为假,即等于 0。6.设有下列语句 int a=1,b=2,c; c=a(b2); 执行后,C 的值为( )。(分数:2.00)A.6B.7C.8D.9 解析:解析 变量 b 的初值等于 2,所以表达式 b2 表示 b 的值二进制左移两位,即扩大 4 倍,所以变量 b 的等于 8。然后与 a 的值 1 进行异或运算,得 9。7.利用 fs

    19、eek 函数可实现的操作是( )。(分数:2.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确 解析:解析 改变文件位置指针函数 fseek()的功能:改变文件的位置指针;辅助实现文件的顺序读写;辅助实现文件的随机读写。8.下列叙述中错误的是( )。(分数:2.00)A.线性表是由 n 个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件 D.线性表可以是空表解析:解析 线性表是一种线性结构,由 n(nO)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一

    20、个前件和后件,所以选项 C)是错误的。9.设计软件结构是在软件生命周期的( )。(分数:2.00)A.软件定义期B.软件开发期 C.软件维护期D.以上 3 个都不是解析:解析 设计软件结构是在软件概要设计阶段进行的,而概要设计属于软件开发期。10.若 a、b、c、d 都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是( )。(分数:2.00)A.a+d; B.a+;C.a=b=c=d=100;D.a=(b=3)+(d=5);解析:解析 C 语言规定,赋值号的右边可以是一个赋值表达式,因此选项 C)、选项 D)正确;在选项 B)中,a+是一个自加 1 的表达式,a 被重新赋值,因此它是一个

    21、合法的赋值表达式;在选项 A)中,a+d 是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。11.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针解析:解析 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。12.若有定义: “int a23;”则对 a 数组的第 i 行第 j 列元素的正确引用为( )。(分数:2.00)A.*(*(a

    22、+ B.(a+C.*(a+i+D.*(a+j解析:解析 本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有 5 种:aij;*(ai+j);*(*(a+i)+j);*(ai)j;*(break; case 1=m+; switch(b%2) defaut:m+; case0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2 C.3D.4解析:解析 本题考查 switch 语句。第一个 switch 语句,因为 a=6,a%2=0,所以执行 case0,将 m 加1,遇到 break 语句跳出 switch 语句

    23、,结束循环。27.若有下列定义,则对 a 数组元素地址的正确引用是( )。 int a5,*p=a;(分数:2.00)A.p+5B.*a+1C.”,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,;B.scanf(“%f“, while(!(-X); 程序的输出结果是( )。(分数:2.00)A.1B.20C.1-4 D.死循环解析:解析 本题考查 dowhile 循环。执行 printf 语句,x=x-4=1,输出 1,判断 while 循环的控制条件, -x=0,则(!(-X)非零,循环条件成立,执行下一次循环;执行 printf 语句,x=x-4=-4,输出-4,

    24、判断 while 循环的控制条件,-X=-5,则(!(-x)为零,循环条件不成立,结束循环。38.已有定义 int(*q)(),指针 q 可以( )。(分数:2.00)A.指向函数的入口地址 B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型解析:解析 本题考查的是指向函数的指针。函数指针的定义方式:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型:“指针”指向函数的入口地址。39.下列说法正确的是( )。(分数:2.00)A.一个 C 程序可以有多个主函数B.一个 C 语言的函数中只允许有一对花括号C.C 程序的书写格式是自由的,一个语句可以写在一行上,也可

    25、以写在多行内 D.在对 C 程序进行编译时,可以发现注释行中的拼写错误解析:解析 本题涉及 C 语言基本的 3 个知识点:C 语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;C 语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写;C 程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。40.若有下列说明和语句,则对结构体变量 st 中成员 i 的引用方式不正确的是( )。 Struct stu int i; int name; st,*p; p=b=0;c=1;n=1;

    26、 while(n=3) c=c*a;b=b+c;+n; printf(“b=%d“,b); (分数:2.00)填空项 1:_ (正确答案:b=14)解析:解析 分析程序可知,n 的初始值为 1,因此,while(n=3)循环 3 次。第 1 次:c=c*a=2;b=b+c=2; n=2。第 2 次:c=c*a=4;b=b+c=6;n=3。第 3 次:c=c*a=8;b=b+c=14。当 n=4 时,判断条件不满足,退出循环。50.下列程序的输出结果是_。 main() int i=0,a=0; while(i20) for(;) if(i%10)=0)break; else i-; i+=11

    27、; a+=i; printf(“%d/n“,a); (分数:2.00)填空项 1:_ (正确答案:32)解析:解析 while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束 while 语句的执行,继续执行 while 语句后面的语句;i=0 时满足循环条件,也满足 if 的条件,执行语句得 i=11,a=11,第2 次循环不满足汀的条件,执行 i-,i=10,执行 i+=11;a+=i 后,得 i=21,a=32,不满足 i20,循环结束。51.下列程序的运行结果是_。 #include

    28、stdio.h long func(int x) long p; if(x=Ox=1) return(1); p=x*func(x-1); return(p); main() printf(“%d/n“,func(4); (分数:2.00)填空项 1:_ (正确答案:24)解析:解析 本题考查函数的循环调用。p=x*func(x-1),当 x=4 时,不满足 if 语句的条件,p=4*func(3), x=3 也不满足条件,则 func(3)=3*func(2),func(2)=2*func(1),x=1 满足条件 return(1),则输出结果为 4*3*2*1=24。52.下列程序将二维数

    29、组 a 的行和列元素互换后存放到另一个二维数组 b 中。请填空。 main() int a23=1,2,3,4,5,b32,i,j; for(i=0;i2;i+) for(j=0;j3;j+) _; (分数:2.00)填空项 1:_ (正确答案:bji=aij)解析:解析 本题考查二维数组的基本知识。它是要将一个二维数组 a 的行和列元素互换后存放到另一个二维数组 b 中,只要将数组 a 的行标和列标互换,然后赋给数组 b 即可。53.下列程序的运行结果是_。 #includestdio.h main() int fun(); fun(); fun() static int a4=1,2,3,

    30、4; int i; for(i=0;i4;i+)ai+=ai; for(i=0;i4;i+)printf(“%d,“,ai); printf(“/n“); (分数:2.00)填空项 1:_ (正确答案:2,4,6,8)解析:解析 子函数 fun()的功能是将数组 a 中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组 a 的每个元素都变为原来的 2 倍,然后输出。在主程序中首先通过 int fun()定义了子函数fun(),然后再调用 fun()。54.设有下列程序: #includestdio.h #includestring.h main() int i; char s10,t

    31、10;gets(t); for(i=0;i2;i+) gets(s); if(strcmp(t,s)0)strcpy(t,s); printf(“%s/n“,t); 程序运行后,从键盘上输入(CR代表回车符):DEFCRBADEPCRQTHRGCR,则程序的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:QTHRG)解析:解析 函数 strcmp(t,s)用来比较 t 和 s 所指字符串的大小,若 ts,则函数值大于 0;若 t=s,则函数值等于 0;若 ts,则函数值小于 0。函数 strcpy(t,s)的功能:把字符数组 s 所指字符串的内容复制到字符数组 t 所指存储空间中。

    32、 本题中,t10=“CDEF“。第一次循环,s10=“BADEF“,if 语句的控制条件 strcmp(t,s)0 不成立,接着执行第二次循环,s=“QTHRG“,if 语句的控制条件 strcmp(t,s)0 成立,执行下列的语句,将字符数组 s 所指字符串的内容复制到字符数组 t 所指存储空间中,然后输出字符数组 t。55.下列程序的运行结果是_。 #define P(a) printf(“%d“,a) main() int j,a=1,2,3,4,5,6,7,i=5; for(j=3;j1;j-) switch(j) case 1: case 2:P(ai+;break; case 3:P(a-i); (分数:2.00)填空项 1:_ (正确答案:5 5)解析:解析 分析程序执行过程,第一次循环时,j=3,i=5,因为 switch(3),所以执行 case 3,调用 P(a-i)=P(a4)=P(5),输出 5;第二次循环时,j=2,i=4,因为 switch(2),所以执行 case 2,调用P(ai+)= P(a4)=P(5),输出 5,之后 i 自加等于 5。


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开