2012年3月二级C试题及答案详解.doc_第1页
2012年3月二级C试题及答案详解.doc_第2页
2012年3月二级C试题及答案详解.doc_第3页
2012年3月二级C试题及答案详解.doc_第4页
2012年3月二级C试题及答案详解.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年3月全国计算机等级考试二级C语言笔试试题及详解(考试时间90分钟,满分100分)一、选择题1、下列叙述中正确的是: A、循环队列是队列的一种顺序存储结构 B、循环队列是队列的一种链式存储结构 C、循环队列是非线性结构 D、循环队列是一直逻辑结构2、下列叙述中正确的是 A、栈是一种先进先出的线性表 B、队列是一种后进先出的线性表 C、栈和队列都是非线性结构 D、以上三种说法都不对3、一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为 A、4 B、6 C、10 D、164、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 A、内模式 B、外模式 C、概念模式 D、逻辑模式5、在满足实体完整性约束的条件下 A、一个关系中可以没有候选关键词 B、一个关系中只能有一个候选关键词 C、一个关系中必须有多个候选关键词 D、一个关系中应该有一个或者多个候选关键词6、有三个关系R、S和T如下: R S T ABCa21b31ABCa12b21 A B C a 1 2 b 2 1 c 3 1 则由关系R和S得到关系T的操作是 A、自然连接 B、并 C、差 D、交7、软件生命周期中的活动不包括 A、软件维护 B、市场调研 C、软件测试 D、需求分析8,下面不属于需求分析阶段任务的是 A、确定软件系统的功能需求 B、确定软件系统的系统的系能需求 B、制定软件集成测试计划 D、需求规格说明书审评9、在黑盒测试方式中,设计测试用例的主要根据是 A、程序外部功能 B、程序内部逻辑 C、程序数据结构 D、程序流程图10、在软件设计中不使用的工具是 A、系统结构图 B、程序流程图 C、PAD图 D、数据流图(DFD图)11、针对简单程序设计,以下叙述的实施步骤正确的是 A、确定算法和数据结构、编码、调试、整理文档 B、编码、确定算法和数据结构、调试、整理文档 C、整理文档、确定算法和数据结构、编码、调试 D、确定算法和数据结构、调试、编码、整理文档12、关于C语言中数的表示,以下叙述正确的是 A、只有整型数在允许范围内能精确无误的表示,实型数会有误差 B、只要在在允许范围内整型和实型都能精确表示 C、只有实型数在允许范围内能精确无误的表示,整型数会有误差 D、只有八进制表示的数在不会有误差13、以下关于算法叙述错误的是 A、算法可以用伪代码、流程图等多种形式来描述 B、一个正确的算法必须有输入 C、一个正确的算法必须有输出 D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14、以下叙述错误的是 A、一个C程序可以包含多个不同名的函数 B、一个C程序只能有一个主函数 C、C程序在书写时,有严格的缩进要求,否则不能编译通过 D、C程序的主函数必须用main作为函数名15、设有以下语句 Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2); 若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是 A、A和B之间用逗号间隔 B、A和B之间不能有任何间隔符 C、A和B之间可以用回车间隔 D、A和B之间用空格间隔16、以下选项中非法的字符常量是 A、102 B、65 C、xff D、01917、有以下程序 #include Main() Int A=0,B=0,C=0; C=(A-=A-5);(A=B,B+=4); Printf(“%d, %d, %dn”,A,B,C) 程序运行后输出的结果是 A 0,4,5 B 4,4,5 C 4,4,4 D 0,0,018、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是 A、x+; printf(“%dn”,x); B、n=+x; printf(“%dn”,n); C、+x; printf(“%dn”,x); D、n=x+; printf(“%dn”,n);19、以下选项中,能表示逻辑值“假”的是 A 1 B 0.000001 C 0 D 100.020、有以下程序 #include Main() int a; Scanf(“%d”,&a); If(a+9) printf(“%dn”,a); Else printf(“%dn”,a-); 程序运行时键盘输入9,则输出的结构是 A、10 B 11 C 9 D 821、有以下程序 #include Main() int s=0,n; For (n=0;n3;n+) switch(s) case 0; Case 1;s+=1; Case 2;s+=2;break; Case 3;s+3; Case 4;s+=4; printf(“%dn”,s); 程序运行后的结果是 A 1,2,4 B 1,3,6 C 3,10,14 D 3,6,1022、若k是int类型变量,且有以下for语句 For(k=-1;k0;k+) printf(*n”); 下面关于语句执行情况的叙述中正确的是 A、循环体执行一次 B、循环体执行两次 C、循环体一次也不执行 D、构成无限循环23、有以下程序 #include Main() char A,B,C; B=1;C=A For(A=0;A6;A+) if(A%2) putchar(B+A); Else putchar(C+A); 程序运行后输出的结果是 A 1B3D5F B ABCDFE C A2C4E6 D 12345624、设有如下定义语句 Int m =2,4,6,8,*k=m; 以下选项中,表达式的值为6的是 A *(k+2) B k+2 C *k+2 D *k+=225、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是 #include #define N 5 Viod fun(int xN) int m; For(m=N-1;m0;m-) scanf(“%dn”, ); A &x+m B &xm+1 C x+(m+) D x+m26、若有函数 Viod fun(double a, int *n) 以下叙述中正确的是 A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送 B、形参a和n都是指针变量 C、形参a是一个数组名,n是指针变量 D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组27、有以下程序 #include Main() int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&m; a=/*p1-m; b=*p1+*p2+6; printf(“%d ”,a); printf(“%dn”,b); 编译时编译器提示错误信息,你认为出错的语句是 A、a=/*p1-m B、b=*p1+*p2+6 C、k=1,m=8; D、p1=&k,p2=&m;28、以下选项中有语法错误的是 A char *str =“guest”; B、char str10 =“guest”; C、char *str3 *str1=“guest”; D、char str310;str1=“guest”;29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语 句错误的是 A、int avg(int *a,int n); B、int avg(int a10,int n); C、int avg(int a,int n) ; D、int avg(int a,int n);30、有以下函数 #include #include main() printf(“%dn”,strren”ATSn0121”) );程序运行后的输出结果是 A 3 B 8 C 4 D 931、有以下函数 #include main() char a20,b20,c20; scanf(”%s%s”,a,b); get(c); printf(”%s%sn”,a,b,c); 程序运行时从第一行开始输入 this is a cat!,则输出结果是 A thisisacat! B this is a C thisis a cat! D thisisa cat!32、有以下函数 #include viod fun(char c) if(cx) fun(c-1); printf (“%c”,c); main() fun”z”; 程序运行输出结果是 A xyz B wxyz C zyxw D zyx33、有以下函数 #include viod func(int n) int i; for(i=0;i=n;i+) printf(“*”); printf(“#”); main() func(3); printf(“?”); func(4); printf(“n”); 程序运行输出结果是 A *#?*# B *#?*# C *#?*# D *#?*#34、有以下函数 #include viod fun(int *s) staic int j=0; do sj=sj+sj+1; wihle(+j2); main() int k,a10=1,2,3,4,5; for(K+1;k3;k+) fun(a); for(K+1;k5;k+) printf(“%d”,ak); printf(“n”); 程序运行输出结果是 A 12345 B 23445 C 34756 D 3574535、有以下函数 #include #define S(x) (x)*x*2 main() int k=5,j=2; printf(“%d,”,Sk+j); printf(“%dn”,S(k-j); 程序运行输出结果是 A 98,18 B 39,11 C39,18 D98,1136、有以下函数 #include Viod exch(int t ) t0=t5; int x10=1,2,3,4,5,6,7,8,9,10,i=0; While(i=4) exch(&xi)i+; for(i=0;i color C std- color D (*ptr) .color 38、有以下函数 #include struct stu int mun; char name10; int age; viod fun(struct stu *p) printf(“%sn”,p-name); mian() struct stu x3=01,”zhang”,20,02,”wang”,19,03,”zhao”,18; fun(x+2); 程序运行输出结果是 A zhang B zhao C wang D 1939、有以下函数 #include mian() int a=12,c; c=(a2)1; printf(“%dn”,c): 程序运行输出结果是 A 3 B 50 C 2 D 9640、以下函数不能用于向文件写入数据的是 A ftell B fwrite C fputc D fprintf二、填空题1、将长度为n的顺序存储在线性表中删除一个元素,最坏情况下需要移动表中的元素个数为( )。2、设循环队列的存储空间为Q(1:3),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有( )个元素。3、数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是( )。4、在将E-R图转换到关系模式时,实体和联系都可以表示成( )。5、常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于( )。6、设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,&a,&b);语句分别给a和b输入1和2,则正确的数据输入内容是( )。7、以下程序的输出结果是( )。#include mian() int a=37;a+=a%=9; printf(“%dn”,a);8、设a、b、c都是整型变量,如果a的值为1,b的值为2,则执行c=a+|b+;语句后,变量b的值是( ).9、有以下程序段s=1.0;for(k=1,k=n;k+) s=s+1.0(k*(k+1);printf(“%fn”,s);请填空,使以下程序段的功能与上面的程序段完全相同。s=1.0; k=1;while( ) s=s+1.0(k*(k+1); k=k+1;printf(“%fn”,s);10、以下程序段的输出结果是( )#include mian() char a,b; for(a=0;a20;a+=7) b=a%10; putchar(b+0); 11、以下程序段的输出结果是( )#include mian() char *ch4=“red”,”green”,”blue”;Int i=0;While(chi); putchar(chi0; i+; 12、有以下程序#include mian()int arr=1,3,5,7,2,4,6,8, i, start;Scanf(“%d”, &start);For(i=0,i3,i+)printf(“%d”,arr(start+i)%8);若在程序运行时输入整数10 ,则输出结果为( )。13、以下程序的功能是输出a数组中的所有字符串,请填空#include mian()char *a=“ABC”,”DEFGH”,”IJ”,”KLMNOP”;Int i=0;For(;i4;i+) printf(“%sn”, );14、以下程序的输出结果是( )。#include #include #include mian() char *p, *q, *r;p=q=r=(char *)malloc(sizeof(char)*20);strcpy(p,”attaboy,welcome!”);printf(“%c%c%cn”,p11, q3, r4);free(p);15、设文件test.txt中原已写入字符串Begin,执行以下程序后,文件中的内容为( )。#include mian() file *fp; fp=fopen(“test.txt”,”w+”); fputs(“test”,fp); fclose(fp);2012年3月全国计算机等级考试二级C语言真题标准答案一、选择题1-5、ADDAD 6-10、CBCAD 11-15、ABBCB 16-20、DADCA 21-25、CACAD 26-30、CADCB 31-35、CADDC 36-40、DCBDA二、填空题1、n-1 2、29 3、数据操纵语言 4、关系5、面向对象方法 6、a=1,b=2 7、2 8、2 9、k=n 10、074 11、rgb 12、572 13、ai 14、cab 15、test2012年3月二级C考试题参考答案(1)【答案】A【解析】为了充分利用存储空间,可以把顺序队列看成一个环状空间,即把顺序队列的头尾指针相连, 这样的队列称之为循环队列。它是对顺序队列的改进,故循环队列是队列的一种顺序存储结构(2)【D】【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结构,故选项A)、B)、 C) 均不对,答案为选项D)。(3)【D】【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得 知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)正确(4)【答案】A【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方 式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑 描述。所以选项 A)正确。(5)【答案】D【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。在一个 关系中, 候选关键字可以有多个且在任何关系中至少有一个关键字。所以在满足数据完整性 约束的条件下,一个关系应该有一个或多个候选关键字,所以选项D)正确。(6)【答案】C【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。记为T=R-S。根据本题 关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算(7)【答案】B【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。可以 将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生命周期的主要活动阶 段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。软件生 命周期不包括市场调研。(8)【答案】C【解析】需求分析是对待开发软件提出的需求进行分析并给出详细的定义。主要工作是编写软件需求规 格说明书及用户手册。需求分析的任务是导出目标系统的逻辑模型,解决“做什么”的问题。制 定软件集成测试计划是软件设计阶段需要完成的任务(9)【答案】A【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻 辑结构,主要针对软件界面和软件功能进行测试。(10)【答案】D【解析】软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统 结构图和事务型数据流两种。软件详细设计,程序流程图(PDF)和PAD(问题分析图)是过程 设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。(11)【答案】A【解析】简单程序设计的步骤是首先要确定算法和数据结构,然胡编码、调试,最后整理相关文档。(12)【答案】A【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾 数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度, 从而导致有效数字丢失而产生误差。(13)【答案】B)【解析】一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出。(14)【答案】C)【解析】一个C程序有且只有一个主函数 main()。一个C 程序可以包含多个不同名字的子函数。 C程序在书写时没有严格的缩进要求。(15)【答案】B)【解析】考察C语言中输入格式,因为在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间 不能加任何字符,包含不能加逗号、回车和空格,因为这些也算是字符。所以在输入时也不可以有任何间隔符号。(16)【答案】D)【解析】字符常量有两种表示方法:一种是用该字符的图形符号,如b ,y,*。另外还可以用字符的ASCII码表示,即用反斜符()开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:有两种形式:一种是用字符的八进制ASCII码,表示为:odd.这里,ddd是八进制值(o可以省略)。另一种使用字符的十六进制ASCII码值,表示为0xhh或0Xhh这里hh是两位十六进制值。本题中D)选项019使用是八进制表示,不应该出现9,所以错误。(17)【答案】A)【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4。最后打印输出。(18)【答案】D)【解析】本题考察自增运算符,+x表示先将x值加1后再用,x+表示先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。(19)【答案】C)【解析】在C语言中非0的值表示真,0表示假。(20)【答案】A)【解析】考察if语句和自增自减运算符,判断条件中if(a+9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。执行else语句时,因为打印a-,是先用后减,所以先输出10,然后a的值变为9。(21)【答案】C)【解析】本题考察switch语句的应用,case分支后面如果没有break,那么就会顺序执行下面的case,直到遇到break跳出。所以第一次循环后s的值为3打印输出。第二次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。(22)【答案】A)【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k来指向结构体重的成员,C选项引用错误。(38)【答案】B)【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三个元素,所以输 出name为Zhao。(39)【答案】D)【解析】考察移位操作,执行c=(a2)1语句时,首先是 a左移两位,其等效于将a乘以4,得到 48,然后将48左移一位,相当于是乘以2,所以结果为c=96,选项D正确。(40)【答案】A)【解析】考察文件的操作,函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。调用函数ftell()就能非常容易地确定文件的当前位置。不能写入数据,其他三个选项都可以向文件中写入。二、填空题(1)【答案】【1】n-1【解析】在顺序表中删除一个元素,最坏情况是删除第一个元素,后面的(n-1)个元素均要向前移动,所以此处填n-1。(2)【答案】【2】29【解析】通过题干的描述可知此循环队列共30个空间,另外队尾指针rear的值小于队头指针front的值,所以利用公式(rear-front+30)%30=29,可知此循环队列的元素个数为29。(3)【答案】【3】数据操纵语言【解析】数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询、插入、删除和修改。 在DML中,应用程序可以对数据库作插、删、改、排、检等五种操作。(4)【答案】【4】关系【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中的关系模式,这种转换是比较直接的,实体与联系都可以表示成关系。(5)【答案】【5】面向对象方法【解析】面向对象方法是一种基于对象模型的程序设计方法,包括面向对象分析、面向对象设计、面向对象编程,是目前应用范围最广的设计方法。其中对象模型包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论