2010年3月计算机等级考试二级C笔试试题及答案解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2010年3月计算机等级考试二级C笔试试题及答案解析2010年3月计算机等级考试二级C笔试试题一、选择题(1)下列叙述中正确的是(A)A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时问复杂度是指(D)A)算法的执行时间B)算法所处理的数据量C)算法程序中的语司或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是(B)A)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是(A)A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是(C)A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于(B)A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是(A)A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是(D)A)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的(A)A)需求分析阶段B)逻辑设计一阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:则由关系R得到关系T的操作是(A)A)选择B)投影C)交D)并(11)以下叙述正确的是A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可作为单独文件形式存在解析:选B。选项A错误,c语言中没有过程的概念。选项B正确,c语言中函数可以嵌套调用。选项C错误,c语言中可以对包含一个或多个函数的源程序单独编译。选项D错误,c语言程序可以由多个源程序组成,其中一个源程序文件包含main函数,其他函数可以写在另外的源程序文件中,作为单独文件形式存在。(12)以下关于C语言的叙述中正确的是A)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示解析:选A。选项A正确,注释夹在变量名和关键字中间,变量和关键字失去意义,语法错误。选项B错误,变量定义可以在函数开始,函数外面或者复合语句的开始。不可以放在使用它之前的任何位置,比如放在循环体内会造成重复定义。选项C错误,例如赋值语句,只要赋值兼容即可,不一定类型必须一致。比如实型数据和字符数据都可以赋给整型变量。选项D错误,原因同A。(13)以下C语言用户标识符中,不合法的是A)_1B)AaBcC)a_bD)a—b解析:选D。标识符由字母、数字、下划线组成,第一个字符必须为字母或下划线。D出现了非法字符。(14)若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是A)a=a++,i++;B)i=(a+k)=(i+k);C)i=a;D)i=!a;解析:选C。运算符%要求两边的操作数必须为整数,所以选项C错误。B和选项D中,可以将逻辑值赋给变量i,最后i的值都为0。选项A中的自增赋值运算也是正确的,不过整体上是逗号表达式语句。(15)有以下程序#includemain(){chara,b,c,d;scanf(“%c%c”,&a,&b);c=getchar();d=getchar();printf(“%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是A)1234B)12C)123D)1234解析:选C。程序用两种方式分别输入4个字符赋给a、b、c、d。1赋给a,2赋给b,回车也是一个字符,赋给c,3赋给d,多余的字符不被读取。最后的输出结果是选项C。(16)以i关于C语言数据类型使用的叙述中错误的是A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型解析:选D。C语言中没有逻辑型数据,所以选项D错误,其他选项的说法正确。(17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是A)1B)0C)2D)不知道a的值,不能确定解析:选A。逻辑或运算的两边只要有一个成立,结果就为真(1)。而a==l和a!=l是相互对立的两个条件,肯定有一个成立,所以表达式的值为1。(18)以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A)switch(a){case:a=b;break;default:a++;}B)switch(a==1){case0:a=b;break;case1:a++;}C)switch(a){default:a++;break;case1:a=b;}D)switch(a==1){case1:a=b;break;case0:a++;}解析:选B。选项A和选项C根据switch语句的功能,可以判断是正确的。选项A和选项C中,主要看表达式(a==1)。当a=1时,此表达式成立,值为1,应该执行case1;当a!=l时,此表达式不成立,值为0,应该执行case0。只有选项B与其他功能不同。(19)有如下嵌套的if语句if(aB)pif(apelsek=c;elseif(belsek=c;以下选项中与上述if语句等价的语句是A)k=(aC)?B:C;pB)k=(aB)?((Bc)?b:c);C)k=(aB)?((AE)?A:E):((BE)?B:C);pD)k=(aC)?A:C;p解析:选C。条件语句k=(ab)?a:b的功能:if(ab)k=a;elsek=b;排除A和D的基础上,选项C的功能和题目是完全等价的。(20)有以下程序#includemain(){ini,j,m=1;for(i=1;i3;i++){for(j=3;jO;j--){if(i*j)3)break;m=i*j;}}printf(m=%d\n,m);}程序运行后的输出结果是A)m=6B)m=2C)m=4D)m=5解析:选A。在循环嵌套语句中,外层循环执行2次,内层循环正常执行3次。m*=(i*j)m=m*(i*j)外层循环:第一次循环,i=1,i*j3始终不成立。i=1j=3m=l*(1*3)=3i=lj:2m=3*(1*2)=6i=lj=lm=6*(1*1)=6外层循环:第二次循环,i=2;i=2j=3此时i*j3条件成立,执行break退出内层循环,外层循环是最后一次循环,同时退出,接着输出m的值为6。(21)有以下程序#include(stdio.hmain(){inta=l;b=2;for(;a8;a++){b+=a;a+=2;}printf(%d,%d\n,a,b);}程序运行后的输出结果是A)9,18B)8,11C)7,11D)10,14解析:选D。考点为FOR语句的执行流程。当a8时执行循环体,执行完循环体后,接着执行a++,再判断循环条件a8是否成立。经过三次循环后a8不成立了,输出a=10b=14。(22)有以下程序,其中k的初值为八进制数#includemain(){intk=011;printf(%d\n,k++);}程序运行后的输出结果是A)12B)11C)10D)9解析:选D。C语言中,整型常量以0开头,表示是一个八进制数。(11)8=1*8+1*1=(9)10。K++表示先输出K的值,再加1。%d表示以十进制格式输出整数,所以选项D正确。(23)下列语句组中,正确的是A)char*s;s=Olympic;B)chars[7];s=Olympic;C)char*s;s={Olympic};D)chars[7];s={Olympic};C)?A:C;/B)?((AE)?A:E):((BE)?B:C);/B)?((BC)?B:C;解析:选A。字符型指针变量可以用选项A的赋值方法:char*s;s=“Olympic,选项C的写法:char*s,s={“Olympic”};是错误的。字符数组可以在定义的时候初始化:chars[]={“Olympic};或者chars[]=“Olympic,都是正确的。但是不可以在定义字符数组后,对数组名赋值。(数组名是常量,代表数组首地址)所以选项B和选项D都是错误的。对于本例,选项B、D中字符数组s的大小至少为a,才能存放下字符串。(字符串的末尾都有结束标志“\0”)(24)以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处解析:选B。自定义函数中可以没有return语句,如一些不需要返回值的函数。自定义函数中可以有多条return语句。例如在分支结构中,可以从不同的分支中返回到调用程序。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句。授有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处。(25)下列选项中,能正确定义数组的语句是A)intnum[0..2008];B)intnum[];C)intN=2008;intnum[N];D)#defineN2008intnum[N];解析:选D。C语言中不允许定义动态数组,定义数组的大小必须为常量表达式。选项D中的N为符号常量,可以用来定义数组大小。选项A、B为不正确的用法。选项C中的N为变量,不能用来定义数组大小。(26)有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf(%c,%c,,*c,d);main(){charb='a',a='A';fun(&b,a);printf(%e,%e\n,b,a);}程序运行后的输出结果是A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B解析:选A。C语言中函数参数的传递是值传递,是把实参的值传给形参,是单向传递,形参的改变不会影响到实参的值。(27)若有定义int(*Pt)[3];,则下列说法正确的是A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组ptC)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组解析:选D。int(*pt)[3]定义名为pt的指针变量,用来指向包含有3个整型元素的一维数组。也就是说指针变量pt的类型为行指针。如果有一个二维数组a[4][3],a是二维数组名,存放二维数组的首地址。二维数组名a的基类型为指向3个元素的一维数组的行指针。所以可以进行赋值:pt=a;(二者基类型一致)即指针变量pt可以指向这个二维数组。(28)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3解析:选B。根据指针S的定义,选项A的写法是错误的,(*s)后不能带

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功