计算机国二C语言考试试题 第五套.doc_第1页
计算机国二C语言考试试题 第五套.doc_第2页
计算机国二C语言考试试题 第五套.doc_第3页
计算机国二C语言考试试题 第五套.doc_第4页
计算机国二C语言考试试题 第五套.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第五套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.ABCED B.DCBEA C.DBCEA D.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.下列程序段的输出结果是( )int a=1234;float b=123.456;double c=12345.54321;printf(%2d,%2.1f,%2.1f,a,b,c); A.无输出 B.12,123.5,12345.5 C.1234,123.5,12345.5 D.1234,123.4,1234.5分析:printf函数的浮点数缺省输出格式:在printf函数的输出中,若无输出宽度限制,每种数据都有一个缺省的输出宽度,一般浮点数的小数位数是6位,不管输出格式是%f或%1f皆如此。printf函数的浮点数宽度限制输出:小数部分按指定数输出,且对数据做四舍五入处理。printf的整数限宽输出:没有宽度制的整数原数输出。14.设有以下程序段int x=0,s=0;while(!x!=0)s+=+x;printf(%d,s);则( ) A.运行程序段后输出0 B.运行程序段后输出1 C.程序段中的控制表达式是非法的 D.程序段执行无限次分析:本题中,“!”表示逻辑非运算符,“!=”等于运算符,逻辑非运算符比等于运算符的优先级低。15.以下程序段的描述,正确的是( )x=-1;dox=x*x;while(!x); A.是死循环 B.循环执行两次 C.循环执行一次 D.有语法错误分析:do-while语句的一般形式为:do循环语句while(表达式);本题中,执行“语句”一次后,表达式值为假,终止执行。16.下列程序执行后的输出结果是( )void func1(int i);void func2(int i);char st =hello,friend!;void func1(int i) printf(%c,sti); if(i3)i+=2;func2(i);void func2(int i) printf(%c,sti); if(i3)i+=2;func1(i);main() int i=0;func1(i);printf(n); A.hello B.hel C.hlo D.hlm分析:函数调用的一般形式为: 函数名(实参列表)首先调用函数func1(0),输出st0=h。i值变为2,并调用函数func2(2),输出st2=1。i值此时变为4,调用函数func1(4),输出st4=o。此时i值大于等于3,执行完毕。因此,输出结果为hlo。17.以下程序的输出结果是( )#include void prt(int *x,int*y,int*z) printf(%d,%d,%dn,+*x,+*y,*(z+);main() int a=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c); A.11,42,31 12,42,20 B.11,41,20 12,22,41 C.11,21,40 12,42,22 D.11,41,21 11,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() int a33,*p,i; p=&a00; for(i=1;i9;i+)pi=i+1; printf(%dn,a12); A.3 B.6 C.9 D.随机数分析:本题中,a12是二维数组中的第6个元素,对应for循环中i的值为5,p5=5+1。19.下列程序执行后的输出结果是( )main() char arr24; strcpy(arr,you);strcpy(arr1,me); arr03=&; printf(sn,arr); A.you&me B.you C.me D.err分析:函数strcpy的功能是字符串拷贝,用法char *strcpy(char *str1,char *str2),作用是将字符串2复制到字符串1中去。二维数组可以看做是一种特殊的一维数组,它的元素又是一个一维数组。本题把arr看做是一个一维数组,它有两个元素:arr0,arr1,每个元素又是一个包含4个元素的一维数组。20.有以下程序int f(int n) if(n=1)return 1; else return f(n-1)+1;main() int i,j=0; for(i=1;i3;i+)j+=f(i); printf(%dn,j);程序运行后的输出结果是( ) A.4 B.3 C.2 D.1分析:在main函数中,对f(1)和f(2)的值进行了累加。f(1)=1f(2)=f(1)+1=2最后,j的值为1+2=321.对结构体类型变量的定义,不正确的是( ) A.typedef struct aa B.#define AA struct aa int n; AA int n; float m; float m; AA; tdl; AA tdl; C.struct D.struct int n; int n; float m; float m; aa; tdl; struct aa tdl;分析:定义结构体类型的变量有几种的方法如下:定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量td1。上述选项B中将宏名AA用宏体struct aa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名aa是可以省略的,因此,选项D也是正确的。struct aa tdl;先定义结构体类型,然后再定义结构体类型的变量,形式如下:struct aa ;struct aa tdl;这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是选项A的形式。22.若有以下程序#include void f(int n);main() void f(int n); f(5);void f(int n) printf(%dn,n);则以下叙述中不正确的是( ) A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f C.对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D.函数f无返回值,所以可用void将其类型定义为无返回值型分析:C语言规定,一个函数中调用另一个函数(即被调用函数)需要具备的条件有:首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。如果使用库函数,一般还应该在本文件开头用#include命令将函数调用有关库函数时所需要到的信息“包含”到本文件中来。如果使用自定义函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数作声明,即向编译系统声明将要调用此函数,并将有关信息通知编译系统。23.有以下程序#include main() FILE *fp;int i=20,j=30,k,n; fp=fopen(d1.dat,w); fprintf(fp,%dn,i);fprintf(fp,%dn,j); fclose(fp); fp=fopen(d1.dat,r); fscanf(fp,%d%d,&k,&n);printf(%d%dn,k,n); fclose(fp);程序运行后的输出结果是( ) A.20 30 B.20 50 C.30 50 D.30 20分析:本题中,最主要的是掌握几个有关文件的函数的应用。函数fopen的功能:打开一个文件 调用方式FILE *fp;fp=fopen(文件名,使用文件方式);函数fprintf的功能:传送格式化输出到一个文件中 调用方式:fprintf(文件指针,格式字符串,输出表列);函数fclose的功能:关闭一个文件 调用方式:fclose(文件指针);函数fscanf的功能:从磁盘文件执行格式化输入 调用方式:fscanf(文件指针,格式字符串,输入表列)。24.下面4个选项中,均是不合法的用户标识符的选项是( ) A.A P_0 B.float la0 _A C.b-a goto int D._123 temp int分析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C中goto和int是关键字,b-a中-不是组成标识符的3种字符之一,选项D中int是关键字。所以,均是不合法用户标识符的选项是C。25.能正确表示逻辑关系:“a10或a0”的C语言表达式是( ) A.a=10 or a=0a=10 &a=10a=0分析:本题考查是C语言的逻辑表达式及逻辑或(“”)运算符的用法。“”表示或的意思,“”是按位或的意思,“&”是并且的意思,C语言中没有“or”。26.若有说明:int *p,m=5,n;以下正确的程序段是( ) A.p=&n;scanf(%d,&p;) B.p=&n;scanf(%d,*p) C.scanf(%d,&n);*p=n; D.p=&n;*p=m;分析:“&”是求址运算符,“*”是变量说明符。选项A和B应改为scanf(“%d”,p);选项C中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险建议不使用。27.有如下程序main() int a=2,b=-1,c=2; if(ab) i

温馨提示

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

评论

0/150

提交评论