《计算机二级c语言真题三[1].doc》由会员分享,可在线阅读,更多相关《计算机二级c语言真题三[1].doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流计算机二级c语言真题三1.精品文档. 计算机二级c语言真题三一、选择题(1)(10)每小题2分,(11)-(50)每小题1分,共60分)下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)算法的时间复杂度是指_。A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数答案:C评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。(2)下列叙述中正确的是_。A)线性表是线性结构 B)栈与队列是非线性结构C)线性链表是
2、非线性结构 D)二叉树是线性结构答案:A评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。(3)下面关于完全二叉树的叙述中,错误的是_。A)除了最后一层外,每一层上的结点数均达到最大值B)可能缺少若干个左右叶子结点C)完全二叉树一般不是满二叉树D)具有结点的完全二叉树的深度为log2n+1答案:B评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。(4)结构化程序 设计 主要强调的是_。A)程序的规模
3、 B)程序的易读性c)程序的执行效率 D)程序的可移植性答案:B评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。(5)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。A)概要设计B)详细设计C)可行性分析D)需求分析答案:D评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。(6)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。A)控制
4、流B)加工C)数据存储D)源和潭答案:A评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。(7)软件需求分析一般应确定的是用户对软件的_。A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求答案:D评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。(8)下述关于数据库系统的叙述中正确的是_。A)数据库系统减少了数据冗余B)数据库系统避免了一切冗余C)数据库系统中数据的一
5、致性是指数据类型的一致D)数据库系统比文件系统能管理更多的数据答案:A评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。(9)关系表中的每一横行称为一个_。A)元组B)字段C)属性D)码答案:A评析:在关系数据库中,关系模型采用二维表来表示,简称表。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。(10)数据库设计包括两个方面的设计内容,它们是_。A)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)结构特性设计和行为特性
6、设计答案:A评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。(11)请读程序:#includemain()int a;float b,c;scanf(2d3P%4f,&a,&b,&c);printf(na=d,b=ec。fn,a,b,c);若运行时从键盘上输入9876543210l,则上面程序的输出结果是_。A)a=98,b=765,c=432 1B)a=1 0,b=432,c=8765C)a=98,b=765000000,c=432 1000000D)a=98,
7、b=7650,c=432 10答案:C评析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765000000、4321000000。(12)一个良好的算法由下面的基本结构组成,但不包括_。A)顺序结构B)选择结构c)循环结构)跳转结构答案:D评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。(13)请选出以下程序的
8、输出结果_。#includesub(x,y,z)int x,y,*z:*z=y-x;main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(d,d,dn,a,b,c);A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7答案:B评析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&aI,10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&
9、b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。(14)下面程序在屏幕上的输出是_。main()printf(abbb c);A)abbb cB)a cC)abcD)ab c答案:B评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个开头的字符序列,这样的字符称为转义字符。常用的转义字符有:n,换行;t,水平制表;b,退格;r,回车。(15)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_。A)pb=&x;B)pb=x;C)*pb=&x;D)*pb=*x答案:A评析:选项A将变量x的地址赋给指针
10、变量pb,使pb指向x选项B是将x的值当作地址赋给指针pb,Db指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。(16)设整型数i=5,则printf(d,i+i);的输出为_。A)10B)1lC)12D)语法错误答案:D评析:c语言中有基本的算术运算符(+、-、*、)还包括自增自减运算符(+、-),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i+ + +i,显然该表达式不合c语言语法。(17)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*p;p=_malloc(sizeof(im);则应填入_。A)in
11、tB)int C)(*int)D)(int*)答案:D评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。(18)下面程序输出的结果是_。main()int i=5,J=9,x;x=(I=j?i:(j=7);printf(nd,d,I,J);A)5,7B)5,5C)语法错误D)7,5答案:A评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i=j,不等,执行j=7;然后执行x=7。故本题为A。(19)若执行下面程序时从键盘上输入5,ma
12、in()int x:scanf(d,&x);if(x+5)printf(dn,x);else printf(dn,x-);则输出是_。A)7B)6C)5D)4答案:B评析:根据c语言的语法,x+是在使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。(20)若有以下定义和语句:int a=l,2,3,4,5,6,7,8,9,10,*p=a;则值为3的表达式是_。A)p+=2,*(p+)B)p+=2,*+pC)p+=3,*p+D)p+=2,+*p答案:A评析:引用一个数组元素,可以用:(1)下标法,如ai形式;(2
13、)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a2。B、c的内容为a3,D将a2前自加,结果为4。(21)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_。A)a&bB)a=bc)a+c&b-cD)!(ab)&!c1)答案:D评析z选项A:a&b是字符a与b的相与,不为0;选项B:a=b,由题中变量赋值可知,结果为1。选项c:a+c&b-c,结果为1;选项D:!(ab)&!c1),运算结果为O。(22)以下程序运行后,输出结果是_。main()char*d。ab,cde;printf(x,d1);A)cde B)字符c
14、的ASCII码值C)字符c的地址D)出错答案:C评析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名+数组名数组长度,在本题main函数中定义指针数组d,它有两个元素,其初值分别是ab、cde的首地址。dB的值为cde的首地址。x是指以十六进制数形式输出整数。(23)设有如下程序#includemain()int*k,*j,i=100;j=&i;k=&j;printf(dn,*k);上述程序的输出结果是_。A)运行错误 B) 100C)i的地址D)j的地址答案:B评析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,*k=*j,而
15、1=100,所以*k=100,最后的打印结果应当为100。(24)设有以下语句,其中不是对a数组元素的正确引用的是:_(其中Oi10)int a=10=0,1,2,3,4,5,6,7,8,9,*p=a;A)ap-aB)。(&ai)C)pID)*(*(a+i)答案:D评析:观察程序可知,a实际上就是数组a的首地址,所以+(a+i)表示的就是数组a中的第i个元素的值,进而,我们可以知道+(t(a+i)必然不是对a数组元素的正确引用。(25)以下程序运行后,输出结果为_。main()int a23=1,3,5,7,9,1 1,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof(int);*pp=s11;p=*PP;printf(dn,*p);A)lB)7C)9D)1l答案:C评析:s是一个含有两个元素的指针数组,pp是一个指向指针变量的指针,sO是指向二维数组a行下标为0的元素的首地址,即a0儿0的地址,s1为a10的地址。pp的值为sO的地址。*pp=s1l后,a00的值将被赋值为alll的值,执行p=*pp;后,p中将是s0的值,最后的输出语句将输出地址s0所指向的数据,即a0O