您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 综合/其它 > 计算机国二C语言考试试题第五套
第五套1.算法分析的目的是()A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进分析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。2.在单链表中,增加头结点的目的是()A.方便运算的B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现分析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。3.软件开发离不开系统环境资源的支持,其中必要的测试数据属于()A.硬件资源B.通信资源C.支持软件D.辅助资源分析:D4.分布式数据库系统不具有的特点是()A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余分析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。5.下列数据模型,有坚实理论基础的是()A.层次模型B.网状模型C.关系模型D.以上3个都是分析:关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。6.栈底到栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()A.ABCEDB.DCBEAC.DBCEAD.CDABE分析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。7.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的()A.安全性B.一致性C.可理解性D.合理性分析:C8.软件开发的结构化生命周期方法将软件生命周期划分成()A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计分析:通常,将软件产品从提出、实现使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。9.在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有()A.特定的数据模型B.数据无冗余C.数据可共享D.专门的数据管理软件分析:在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。10.实体是信息世界中广泛使用的一个术语,它用于表示()A.有生命的事物B.无生命的事物C.实际存在的事物D.一切事物分析:实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可是无生命的事物,但它必须是客观存在的,而且可以相互区别。11.下面叙述中正确的是()A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种C.C语言的函数可以嵌套定义D.C语言的函数可以嵌套调用分析:C语言相对其他高级语言来说,放宽了语法检查,因此程序设计自由度大,并不是不检查语法,C语言的程序是由函数构成的。函数不能嵌套定义,但是可以嵌套调用。12.以下叙述中正确的是()A.构成C程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义分析:本题综合考查C语言概念部分,关于C语言,我们应该了解以下必须要掌握的基础知识:①C程序是由函数构成的。②一个函数由两部分组成:函数的首部和函数体。③一个C程序总是从main函数开始执行的,而不论main函数的整个程序中的位置如何(main函数可以放在程序最开始,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。④C程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。⑤C程序本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成。⑥可以用/*……*/对C语言的程序的任何部分作注释。13.下列程序段的输出结果是()inta=1234;floatb=123.456;doublec=12345.54321;printf(″%2d,%2.1f,%2.1f″,a,b,c);A.无输出B.12,123.5,12345.5C.1234,123.5,12345.5D.1234,123.4,1234.5分析:①printf函数的浮点数缺省输出格式:在printf函数的输出中,若无输出宽度限制,每种数据都有一个缺省的输出宽度,一般浮点数的小数位数是6位,不管输出格式是%f或%1f皆如此。②printf函数的浮点数宽度限制输出:小数部分按指定数输出,且对数据做四舍五入处理。③printf的整数限宽输出:没有宽度制的整数原数输出。14.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(″%d″,s);则()A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次分析:本题中,“!”表示逻辑非运算符,“!=”等于运算符,逻辑非运算符比等于运算符的优先级低。15.以下程序段的描述,正确的是()x=-1;do{x=x*x;}while(!x);A.是死循环B.循环执行两次C.循环执行一次D.有语法错误分析:do-while语句的一般形式为:do循环语句while(表达式);本题中,执行“语句”一次后,表达式值为假,终止执行。16.下列程序执行后的输出结果是()voidfunc1(inti);voidfunc2(inti);charst[]=″hello,friend!″;voidfunc1(inti){printf(″%c″,st[i]);if(i3){i+=2;func2(i);}}voidfunc2(inti){printf(″%c″,st[i]);if(i3){i+=2;func1(i);}}main(){inti=0;func1(i);printf(″\n″);}A.helloB.helC.hloD.hlm分析:函数调用的一般形式为:函数名(实参列表)首先调用函数func1(0),输出st[0]=h。i值变为2,并调用函数func2(2),输出st[2]=1。i值此时变为4,调用函数func1(4),输出st[4]=o。此时i值大于等于3,执行完毕。因此,输出结果为hlo。17.以下程序的输出结果是()#includestdio.hvoidprt(int*x,int*y,int*z){printf(″%d,%d,%d\n″,++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A.11,42,3112,42,20B.11,41,2012,22,41C.11,21,4012,42,22D.11,41,2111,21,21分析:尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次是要应注意表达式*(z++)的值是*z。函数调用,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B是正确的。在第一次输出后,a=11,b=41,c=20第二次输出为:12,42,20。18.下列程序执行后的输出结果是()main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i9;i++)p[i]=i+1;printf(″%d\n″,a[1][2]);}A.3B.6C.9D.随机数分析:本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。19.下列程序执行后的输出结果是()main(){chararr[2][4];strcpy(arr,″you″);strcpy(arr[1],″me″);arr[0][3]=′&′;printf(″s\n″,arr);}A.you&meB.youC.meD.err分析:函数strcpy的功能是字符串拷贝,用法char*strcpy(char*str1,char*str2),作用是将字符串2复制到字符串1中去。二维数组可以看做是一种特殊的一维数组,它的元素又是一个一维数组。本题把arr看做是一个一维数组,它有两个元素:arr[0],arr[1],每个元素又是一个包含4个元素的一维数组。20.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i3;i++)j+=f(i);printf(″%d\n″,j);}程序运行后的输出结果是()A.4B.3C.2D.1分析:在main函数中,对f(1)和f(2)的值进行了累加。f(1)=1f(2)=f(1)+1=2最后,j的值为1+2=321.对结构体类型变量的定义,不正确的是()A.typedefstructaaB.#defineAAstructaa{intn;AA{intn;floatm;floatm;}AA;}tdl;AAtdl;C.structD.struct{intn;{intn;floatm;floatm;}aa;}tdl;structaatdl;分析:定义结构体类型的变量有几种的方法如下:①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量td1。上述选项B中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名aa是可以省略的,因此,选项D也是正确的。structaa{…}tdl;②先定义结构体类型,然后再定义结构体类型的变量,形式如下:structaa{…};structaatdl;这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是选项A的形式。22.若有以下程序#includestdio.hvoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf(″%d\n″,n);}则以下叙述中不正确的是()A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明D.函数f无返回值,所以可用void将其类型定义为无返回值型分析:C语言规定,一个函数中调用另一个函数(即被调用函数)需要具备的条件有:①首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。②如果使用库函数,一般还应该在本文件开头用#include命令将函数调用有关库函数时所需要到的信息“包含”到本文件中来。③如果使用自定义函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调
本文标题:计算机国二C语言考试试题第五套
链接地址:https://www.777doc.com/doc-2098319 .html