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

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

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

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

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

    1、二级 C 语言笔试 318 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.结构化程序设计主要强调的是(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性2.若有条件表达式(exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是(分数:2.00)A.(exp=0)B.(exp!=0)C.(exp=1)D.(exp!=1)3.将 E-R 图转换到关系模式时,实体与联系都可以表示成(分数:2.00)A.属性B.关系C.键D.域4.下面判断正确的是(分数:2.00)A.char*a=“china

    2、“;等价于 char*a;*a=“china“;B.char str5=“china“;等价于 char str=“china“;C.char *s=“china“;等价于 char *s;s=“china“;D.char c4=“abc“,d4=“abc“;等价于 char c4=d4=“abc“;5.下列有关数据库的描述,正确的是(分数:2.00)A.数据处理是将信息转化为数据的过程B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C.关系中的每一列称为元组,一个元组就是一个字段D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外

    3、关键字6.有以下程序段 char ch; int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d/n“,k); 已知字符 a 的 ASCII 码值为 97,则执行上述程序段后输出结果是(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=127.下列选项中,不属于模块间耦合的是(分数:2.00)A.数据耦合B.标记耦合C.异构耦合D.公共耦合8.若有以下说明和定义 union dt int a;char b;double c;da

    4、ta; 以下叙述中错误的是(分数:2.00)A.data 的每个成员起始地址都相同B.变量 data 所占内存字节数与成员 c 所占字节数相等C.程序段:data=5;printf(“%f/n“,dat;输出结果为 5.000000D.data 可以作为函数的实参9.若已定义 int a0,1,2,3,4,5,6,7,8,9,*p=a,i; 其中 0i9,则对 a 数组元素不正确的引用是(分数:2.00)A.ap-aB.*( j+=2) s=10*s+pij-0; printf(“%d/n“,s); 该程序的输出结果是(分数:1.00)A.69825B.63825C.6385D.6938251

    5、6.以下错误的定义语句是(分数:1.00)A.int x3=0,1,1,2,3;B.int x43=1,2,3,1,2,3,1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3;D.int x3=1,2,3,4;17.已知函数的调用形式为 fread(buf,size,count,fp),参数 buf 的含义是(分数:1.00)A.一个整型变量,代表要读入的数据项总数B.一个文件指针,指向要读的文件C.一个指针;指向要读入数据的存放地址D.一个存储区,存放要读的数据项18.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,以下不能

    6、正确判断出 kk 中的值为大写字母的表达式是(分数:1.00)A.kk=A p= printf(“%d/n“,a12);(分数:2.00)A.3B.6C.9D.随机数31.栈底至栈顶依次存放元素 A、B、C、D,在第五个元素 E 入栈前,栈中元素可以出栈,则出栈序列可能是(分数:2.00)A.ABCEDB.DCBEAC.DBCEAD.CDABE32.有以下程序 #include stdioh int f(int x) int y; if(x=0|x=1) return(3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“%d/n“

    7、,z); 程序的运行结果是(分数:2.00)A.0B.9C.6D.833.以下选项中,不能作为合法常量的是(分数:2.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e034.若有以下定义: struct link int data; strnct link *next; a,b,c,*p,*q; 且变量 a和 b 之间已有如下图所示的链表结构: (分数:2.00)A.next=c;next=b;B.next=q;next=next;C.p-next= j+=2) s=10*s+pij-0; printf(“%d/n“,s); 该程序的输出结果是(分数:1.0

    8、0)A.69825B.63825C.6385 D.693825解析:解析 该题稍微难一点。主要要搞清楚以下几点:定义了一个指针数组 char *p2后,程序中第一个循环 for(i=0;i2;i+)pichi;的作用,是使指针数组的 p0元素(它本身是一个指针)指向了二维数组 ch 的第一行字符串,并使指针数组的 p1元素指向二维数组 ch 的第二行字符串。这样,就使指针数组 p 和二维数组 ch 建立起了一种对应关系,以后对二维数组 ch 的某个元素的引用就有两种等价的形式:chij或 pij。对二维数组 ch 的初始化,使其第一行 ch0中存入了字符串“6937”,第二行 ch1中的内容为

    9、字符串“8254”。程序中第二个循环中的循环体 ss*10+pi j-0;的功能是这样的,每执行一次,将 s 中的值乘以 10(也即将 s 中的数值整体向左移动一位,并在空出来的个位上添一个 0),再将当前 pii中的字符量转换为相应的数字,然后把这个数字加到 s 的个位上。注意到内启循环的循环条件 pij/0是指 pij中的字符只要不是字符串结束标志/0就继续循环。语句 j+2;是使下标 j 每次增加 2,也即一个隔一个地从 pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 p0所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从 p1)所指向的

    10、字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果 s 中的值应该是 6385。16.以下错误的定义语句是(分数:1.00)A.int x3=0,1,1,2,3;B.int x43=1,2,3,1,2,3,1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3; D.int x3=1,2,3,4;解析:解析 本题考查的是二维数组的定义和初始化方法。C 语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项 C) 错误。17.已知函数的调用形式为 fread(buf,size,co

    11、unt,fp),参数 buf 的含义是(分数:1.00)A.一个整型变量,代表要读入的数据项总数B.一个文件指针,指向要读的文件C.一个指针;指向要读入数据的存放地址 D.一个存储区,存放要读的数据项解析:解析 这是一道考查 fread 函数的题。buf 是一个指针,fread 是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。18.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,以下不能正确判断出 kk 中的值为大写字母的表达式是(分数:1.00)A.kk=A p= printf(“%d/n“,a12);(分数:2.00)A.3B.6 C

    12、.9D.随机数解析:解析 本题中,a12是二维数组中的第 6 个元素,对应 for 循环中 i 的值为 5,p55+1。31.栈底至栈顶依次存放元素 A、B、C、D,在第五个元素 E 入栈前,栈中元素可以出栈,则出栈序列可能是(分数:2.00)A.ABCEDB.DCBEA C.DBCEAD.CDABE解析:解析 栈操作原则上“后进先出”,栈底至栈顶依次存放元素 A、B、C、D,则表明这 4 个元素中D 是最后进栈, B、C 处于中间,A 最早进栈,所以出栈时一定是先出 D,再出 C,最后出 A。32.有以下程序 #include stdioh int f(int x) int y; if(x=

    13、0|x=1) return(3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“%d/n“,z); 程序的运行结果是(分数:2.00)A.0B.9C.6 D.8解析:解析 函数 int f(int x)是一个递归函数调用,当 x 的值等于 0 或 1 时,函数值等于 3,其他情况下y=x2-f(x -2),所以在主函数中执行语句 zf(3)时,y3*3-f(3-2)9-f(1)9-36。33.以下选项中,不能作为合法常量的是(分数:2.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:解

    14、析 C 语言的语法规定,字母 e(E)之前必须有数字,且 e(E)后面的指数必须是整数,而选项 B) 中,e(E)后面的指数是小数,所以不合法。34.若有以下定义: struct link int data; strnct link *next; a,b,c,*p,*q; 且变量 a和 b 之间已有如下图所示的链表结构: (分数:2.00)A.next=c;next=b;B.next=q;next=next;C.p-next=&c;q-next=p-next;D.(*.next=q;(*.next=&b; 解析:解析 本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针

    15、变量,用它存放下一结点的地址。35.关系表中的每一横行称为一个(分数:2.00)A.元组 B.字段C.属性D.码解析:解析 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。36.已知 #int t=0; while(t=1) 则以下叙述正确的是(分数:2.00)A.循环控制表达式的值为 0B.循环控制表达式的值为 1 C.循环控制表达式不合法D.以上说法都不对解析:解析 t1 是将 t 赋值为 1,所以循环控制表达式的值为 1。判断 t 是否等于 1 时,应用t1,注意“”与“”的用法。37.有定

    16、义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是(分数:2.00)A.gets(&s0);B.scanf(“%s“,s+1);C.gets(;D.scanf(“%s“,s1); 解析:解析 在格式输入中,要求给出的是编译的地址,而 D) 答案中给出的 s1是一个值的表达式。38.需求分析阶段的任务是确定(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能 解析:解析 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确

    17、定新系统的功能。选项 A) 软件开发方法是在总体设计阶段需完成的任务;选项 B) 软件开发工具是在实现阶段需完成的任务;选项 C) 软件开发费用是在可行性研究阶段需完成的任务。39.以下叙述中错误的是(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:解析 getchar 函数的作用是从终端读入一个字符。40.有以下程序 #include stdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1:

    18、 switch(y) case 0:a+; break; case 1:b+; break; case 2:a+;b+; break; case 3:a+;b+; printf(“a=%d,b=%d/n“,a,b); 程序的运行结果是(分数:2.00)A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1 解析:解析 本题考查 switch 语句,首先,x1 符合条件 case 1,执行 switch(y)语句。y0 符合case 0 语句,执行 a 抖并跳出 switch(y)语句,此时 a1。因为 case 1 语句后面没有 break 语句,所以向后执行 case 2

    19、语句,执行 a+,b+,然后跳出 switch(x),得 a=2,b=1。二、B填空题/B(总题数:15,分数:30.00)41.测试用例包括输入值集和U 【1】 /U值集。(分数:2.00)填空项 1:_ (正确答案:输出)解析:解析 软件测试用例是为了有效发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。42.某二叉树中度为 2 的结点有 18 个,则该二叉树中有U 【2】 /U个叶子结点。(分数:2.00)填空项

    20、 1:_ (正确答案:19)解析:解析 在任意一棵二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。43.数据结构分为逻辑结构与存储结构,线性链表属于U 【3】 /U。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:解析 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。44.在关系模型中,把数据看成一个二维表,每一个二维表称为一个U 【4】 /U。(分数:2.00)填空项 1:_ (正确答案:关系)解析:

    21、解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名;表中的一行称为一个元组,相当于记录值。45.数据库设计分为以下 6 个设计阶段:需求分析阶段、U 【5】 /U、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(分数:2.00)填空项 1:_ (正确答案:概念设计阶段)解析:解析 数据库设计分为以下 6 个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。46.以下程序的输出结果是U 【6】 /U。 main() char c=z; printf(

    22、“%c“,c-25);(分数:2.00)填空项 1:_ (正确答案:a)解析:解析 “z”的 ASCII 码值为 122,经过 c-25 运算后得 97,以字符形式输出是 a。47.函数 fun 的返回值是U 【7】 /U。 fun(char *a,char *b) int num=0,n=0; while(*(a+num)!=/0)num+; while(bn) *(a+num)=bn;num+;n+; return num; (分数:2.00)填空项 1:_ (正确答案:字符串 a 和 b 的长度之和)解析:解析 本题首先通过第一个 while 循环计算字符串 a 的长度,再通过第二个循环

    23、,将字符串 a 和b 相连,最后返回连接后的总长度。48.下列程序的输出结果是U 【8】 /U。 main() int i; for(i=1;i+1;i+) if(i4) printf(“%d/n“,i); break; printf(“%d/n“,i+);(分数:2.00)填空项 1:_ (正确答案:1)解析:3 5 解析 本题考查了 for 循环语句的使用,break 语句用在本题中是结束 for 循环直接跳出循环体外。当 i1 时,因为 if 语句条件不满足,所以直接执行 printf(“%d/n“,i+);输出 1,同时 i 自加 1;执行第二次 for 循环时,i=3;同样的 if

    24、语句条件不满足,所以直接执行 printf(“%d/n“,i+);输出 3,同时 i 自加 1;执行第三次 for 循环时,i5,if 语句条件满足,所以执行 printf(“%d/n“,i),输出 5,然后 break 语句跳出了 for 循环。49.以下程序的运行结果是U 【9】 /U。 #include stdioh main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+; break; case 1: b+; break; case 2:a+; b+;break; case 3:a+;b+; printf(“a

    25、=%d,b=%d/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:a2,b1)解析:解析 本题考查了 switch 结构的内容。C 语言中,程序执行完一个 case 标号的内容后,如果没有 break 语句,控制结构会转移到下一个 case 继续执行,因为 case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部 switch 结构后,继续执行了外部 switch 结构的 case 2 分支,最后 a 和 b 的值分别为 2 和 1。50.以下程序的输出结果是U 【10】 /U。 #include stdioh void swap(int *a,

    26、int *b) int *t; t=a; a=b; b=t; main() int i=3,j=5,*p=&i,*q=&j; swap(p,q); printf(“%d %d/n“,*p,*q); (分数:2.00)填空项 1:_ (正确答案:3 5)解析:解析 函数 swap(int *a,int *b)的功能是实现*a 和*b 中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量 a 和 b 分别指向 i 和 j,在 swap(int *a,int *b)执行完后,指针变量 a和 b 分别指向 j 和 i,而指针变量 p,q 所指向变量的值没有发生变化,所以输出结果为 3 5

    27、。51.函数 my_cmp()的功能是比较字符串 s 和 t 的大小,当 s 等于 t 时返回 0,否则返回 s 和 t 的第一个不同字符的 ASCII 码差值,即 st 时返回正值,当 st 时返回负值。请填空。 my_cmp(char *s,char *t) while(*s=*t) if(*s=/0)return 0; +s; +t; returnU 【11】 /U; (分数:2.00)填空项 1:_ (正确答案:*s-*t)解析:解析 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回。值

    28、;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在 st 时,返回正值,当 st 时,返回负值。52.以下程序的输出结果是U 【12】 /U。 float fun(int x,int y) return(x+y); main() int a=2,b=5,c=8; printf(“%3.0f/n“,fun(int)fun(a+c,b),a-c);(分数:2.00)填空项 1:_ (正确答案:9)解析:解析 本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如: (

    29、double)a 是将 a 转换成 double 类型;(int)(x+y)是将 x+y 的值转换成整型。 本题可按部就班地逐步运算: fun(int)fun(a+c,b),a-c) fun(int)fun(10,5),2-8) fun(int)15.000000,-6) fun(15,-6) 953.以下说明语句中,U 【13】 /U是结构体类型名。 typedef struct int n; char ch8; PER;(分数:2.00)填空项 1:_ (正确答案:PER)解析:解析 本题中,typedef 声明新的类型名 PER 来代替已有的类型名,PER 代表上面指定的一个结构体类型,

    30、此时,也可以用 PER 来定义变量。54.fseek 函数的正确调用形式是U 【14】 /U。(分数:2.00)填空项 1:_ (正确答案:fseek(文件指针,位移量,起始点))解析:解析 本题考查函数 fseek 的用法。fseek 函数的调用形式为: fseek(文件指针,位移量,起始点) “起始点”用 0,1 或 2 代替,其中,0 代表“文件开始”;1 为“当前位置”;2 为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSI C 和大多数 C 版本要求位移量是 long 型数据,这样当文件的长度大于 64k 时不致出现问题。 ANSI C 标准规定在数字的末尾加

    31、一个字母 L,就表示long 型。55.以下程序的作用是:从名为 fileadat 的文本文件中逐个读入字符并显示在屏幕上。请填空。 #include stdioh main() FILE *fp; char ch; fp=fopen(U 【15】 /U); ch=fsetc(fp); while(! feof (fp) putchar(ch); ch=fgetc(fp); putchar(/n); fclose(fp);(分数:2.00)填空项 1:_ (正确答案:“filea.dat“,“r“)解析:解析 fopen 函数的调用方式通常为 fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat 文件,并且是要读取文件中的内容,所以空白处应当填入“fileadat“,“r“。


    注意事项

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




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

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

    收起
    展开