您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 计算机国二C语言考试试题第二套
第二套1.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是()A.acbedB.decabC.deabcD.cedba分析:依据后序遍历序列可确定根结点为c;再依据中序遍历序列可知其左子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列知其左子树为d,右子树由ba构成,如下图所示。求得该二叉树的前序遍历序列为选项D.2.结构化程序设计的3种结构是()A.顺序结构、选择结构、转移结构B.分支结构、等价结构、循环结构C.多分支结构、赋值结构、等价结构D.顺序结构、选择结构、循环结构分析:顺序结构、选择结构和循环结构(或重复结构)是结构化程序设计的3种基本结构。3.算法的时间复杂度是指()A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数分析:算法的复杂度主要包括算法的时间复杂和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。4.数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为()A.CB.BasicC.DDLD.DML分析:选项A、B显然不合题意。数据定义语言(DataDefinitionLanguage,简称DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言(DataManipulationLanguage,简称DML)负责数据的操纵,包括查询及增、删、改等操作。5.下列有关数据库的描述,正确的是()A.数据处理是将信息转化为数据的过程B.数据物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C.关系中的每一列称为元组,一个元组就是一个字段D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字、则称其为本关系的外关键字分析:数据处理是指将数据转换成信息的过程,所以选项A叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,所以选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,所以选项C叙述错误。6.用链表表示线性表的优点是()A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同分析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结构下的线性表便于插入和删除操作。7.结构化程序设计主要强调的是()A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性分析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。8.检查软件产品是否符合需求定义过程称()A.确认测试B.集成测试C.验证测试D.验收测试分析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。9.应用数据库的主要目的是()A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题D.解决数据量大的问题分析:数据库中的数据具有“集成”与“共享”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项C正确。10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()A.数据库系统B.文件系统C.人工管理D.数据项管理分析:人工管理阶段是在20世纪50年代中期以前出现的,数据不独立,完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具有高度的物理独立性和一定逻辑独立性。11.C语言中,int,char和short三种类型数据在内存所占用的字节数()A.由用户自己定义B.均为2个字节C.是任意的D.由所用机器的机器字长决定分析:C语言中,常用的数据类型有int,char,float,double等,但C语言标准没有具体规定以上各类数据所占内存字节数,只要求long型数据长度不短于int型,short型不长于int型,具体如何实现,由各计算机系统自行决定。12.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字和下划线中任一字符分析:C语言中规定,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线,而且标识符不能是C语言的关键字。13.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是()A.INPUTx,y,z;B.scanf(″%d%d%d″,&x,&y,&z);C.scanf(″%d%d%d″,x,y,z);D.read(″%d%d%d″,&x,&y,&z);分析:scanf函数的一般格式是:scanf(格式控制,地址表列)该格式中,地址表列中应是变量地址,而不是变量名14.以下程序的输出结果是()main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf(″%d\n″,d);}A.1B.0C.非0的数D.-1分析:本题考查的是逻辑与“&&”,逻辑或“||”,逻辑非“!”,表达式的应用。逻辑与运算符“&&”,当参与运算的两个量都为真时,结果才是真,否则为假;逻辑或运算符“||”,当参与运算的两个量有一个为真时,结果是真,否则为假;逻辑非运算符“!”,当参与运算的量为真时,结果才是假,否则为真。15.下面有关for循环的正确描述是()A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来分析:选项Afor循环可以用于循环次数不确定的情况;选项Bfor循环是先判断表达式,后执行循环体语句;选项C在for循环中,可以用break语句跳出循环体,从而接着执行循环体后面的语句。16.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(″%d″,s);则()A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次分析:本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符“!”的优先级大于不等于运算符“!=”的优先级。17.以下描述中正确的是()A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环体中,是先执行一次循环,再进行判断D.do-while循环中,根据情况可以省略while分析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。18.以下程序的运行结果是()sub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(″%4d,%4d,%4d\n″,a,b,c);}A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7分析:在C语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的“加减法”了。19.对下面程序描述正确的一项是(每行程序前面的数字表示行号)()①main()②{③floata[3]={0.0};④inti;⑤for(i=0;i3;i++)scanf(″%d″,&a[i]);⑥for(i=1;i3;i++)a[0]=a[0]+a[i];⑦printf(″%f\n″,a[0]);⑧}A.没有错误B.第3行有错误C.第5行有错误D.第7行有错误分析:第五行处的输入值格式和定义不一致,定义的为float类型a[3],输入值格式为scanf(“%f”,&a[i]);如果定义的为int类型a[3],则输入值格式为scanf(“%d”,&a[i])。20.下面程序的输出结果是()structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};main(){p=aa;printf(″%d\n″,++p-x);printf(″%d\n″,(++p)-x);printf(″%d\n″,++(*p-y));}A.102020B.506021C.516021D.607031分析:该题中首先定义了一个结构体指针变量p,然后说明了结构体变量数组aa,并赋初值,令每个结构体变量的指针域分别指向另一个整型数组dt的对应元素。要求出的是指针变量指向的值的输出。要注意的是指向结构体成员运算符→的优先级要大于自加和自减运算符,并和括号的优先级相同。运算时,指针p初始指向第1个元素,所以++p-x先计算p-x的值是50,增1后是51。(++p)-x先将指针指向第2个元素,然后取x的值为60。++(*p-y)先计算p-y,这是个指针,指向数组dt的第2个元素,然后将其值增1,结果为21。21.以下程序的输出结果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf(″%1d\n″,fun(3));}A.1B.2C.3D.4分析:该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3s=3-fun(2)第二次调用时:fun(2)n=2s=2返回第一次调用后,s=3-2=1。22.以下程序的输出结果是()unionmyun{struct{intx,y,z;}u;intk;}a;main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(″%d\n″,a.u.x);}A.4〖DW〗B.5〖DW〗C.6〖DW〗D.0分析:本题考查共用体变量起作用的范围。共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用,在本题中,当对a.u.y成员赋值时,a.u.x的值就不存在,当对a.u.z赋值时,a.u.y的值就不存在了。。23.以下有4组用户标识符其合法的一组是()A.For-subCaseB.4dDOSizeC.f2_G3IFabcD.WORDvoiddefine分析:C语言中规定,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线,而且标识符不能是C语言的关键字。选项A中-sub错误,选项B中4d错误,选项D中的void为C语言的关键字。24.已知各变量的类型如下inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合C语言语法的表达式是()A.a+=a-=(b=4)*(a=3)B.a=a*3+2C.x%(-3)D.y=float(i)分析:选项B中a在运算前未赋初值,在C语言里变量在运算前必须赋初值;选项C中的模运算符“%”两侧均应为整型数据;选项D应改为y=(float)i。25.下列程序的输出结果是()main(){inta=2;a%=4-1;printf(″%d″,a);a+=a*=a-=a*=3;printf(″\n%d″,a);}A.2,12B.-1,12C.1,0D.2,0分
本文标题:计算机国二C语言考试试题第二套
链接地址:https://www.777doc.com/doc-2098317 .html