《计算机国二C语言考试试题 第五套》由会员分享,可在线阅读,更多相关《计算机国二C语言考试试题 第五套(11页珍藏版)》请在金锄头文库上搜索。
1、第五套1.算法分析的目的是( )A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进分析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。2.在单链表中,增加头结点的目的是( )A.方便运算的B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现分析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头
2、结点目的是为了便于运算的实现。3.软件开发离不开系统环境资源的支持,其中必要的测试数据属于( )A.硬件资源B.通信资源C.支持软件D.辅助资源分析:D4.分布式数据库系统不具有的特点是( )A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余分析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。5.下列数据模型,有坚实理论基础的是( )A.层次模型B.
3、网状模型C.关系模型D.以上 3 个都是分析:关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。6.栈底到栈顶依次存放元素 A、B、C、D,在第五个元素 E 入栈前,栈中元素可以出栈,则出栈序列可能是( )A.ABCEDB.DCBEAC.DBCEA D.CDABE分析:栈操作原则上“后进先出” ,栈底至栈顶依次存放元素 A、B、C、D,则表明这 4 个元素中 D 是最后进栈,B、C 处于中间,A 最早进栈。所以出栈时一定是先出 D,再出C,最后出 A。7.在结构化程序设计思想提出之前,在程序设
4、计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的( )A.安全性B.一致性C.可理解性D.合理性分析:C8.软件开发的结构化生命周期方法将软件生命周期划分成( )A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计分析:通常,将软件产品从提出、实现使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3 个阶段。9.在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有( )A.特定的数据模型B.数据无冗余C.数据可共享D.专门的数据管理软件分析:在文件系统中
5、,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。10.实体是信息世界中广泛使用的一个术语,它用于表示( )A.有生命的事物B.无生命的事物C.实际存在的事物D.一切事物分析:实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可是无生命的事物,但它必须是客观存在的,而且可以相互区别。11.下面叙述中正确的是( )A.C
6、 语言编译时不检查语法B.C 语言的子程序有过程和函数两种C.C 语言的函数可以嵌套定义D.C 语言的函数可以嵌套调用分析:C 语言相对其他高级语言来说,放宽了语法检查,因此程序设计自由度大,并不是不检查语法,C 语言的程序是由函数构成的。函数不能嵌套定义,但是可以嵌套调用。12.以下叙述中正确的是( )A.构成 C 程序的基本单位是函数 B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义分析:本题综合考查 C 语言概念部分,关于 C 语言,我们应该了解以下必须要掌握的基础知识:C 程序是由函数构成的。一个函数由两部分组成:函
7、数的首部和函数体。一个 C 程序总是从 main 函数开始执行的,而不论 main 函数的整个程序中的位置如何(main 函数可以放在程序最开始,也可以放在程序最后,或写在一些函数之前,在另一些函数之后) 。C 程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。C 程序本身没有输入输出语句。输入和输出的操作是由库函数 scanf 和 printf 等函数来完成。可以用/*/对 C 语言的程序的任何部分作注释。13.下列程序段的输出结果是( )int a=1234;float b=123.456;double c=12345.
8、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.设有以下程序段int x=0,s=0;while(!x!
9、=0)s+=+x;printf( %d,s);则( )A.运行程序段后输出 0B.运行程序段后输出 1C.程序段中的控制表达式是非法的D.程序段执行无限次分析:本题中, “!”表示逻辑非运算符, “!=”等于运算符,逻辑非运算符比等于运算符的优先级低。15.以下程序段的描述,正确的是( )x=-1;dox=x*x;while(!x);A.是死循环B.循环执行两次C.循环执行一次D.有语法错误分析:do-while 语句的一般形式为:do循环语句while(表达式) ;本题中,执行“语句”一次后,表达式值为假,终止执行。16.下列程序执行后的输出结果是( )void func1(int i);v
10、oid func2(int i);char st = hello,friend!;void func1(int i) printf(%c ,sti);if(ivoid prt(int *x,int*y,int*z) printf(%d,%d,%d n,+*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,2012,22,41C.11,21,40 12,42,22D.11,41,2111,21,21分析:尽管 C 语言以传值方式进行函数调用,但也可以通过传递指
11、针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次是要应注意表达式*(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 a3 3,*p,i;p=&a0 0;for(i=1;ivoid f(int n);main() void f
12、(int n);f(5);void f(int n) printf(%dn,n);则以下叙述中不正确的是( )A.若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 fB.若在主函数前对函数 f 进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:提示对 f 函数重复说明D.函数 f 无返回值,所以可用 void 将其类型定义为无返回值型分析:C 语言规定,一个函数中调用另一个函数(即被调用函数)需要具备的条件有:首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数) 。如果使用库函数,一般还应该在本文件开头用#in
13、clude 命令将函数调用有关库函数时所需要到的信息“包含”到本文件中来。如果使用自定义函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数作声明,即向编译系统声明将要调用此函数,并将有关信息通知编译系统。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);fclo
14、se(fp);程序运行后的输出结果是( )A.20 30B.20 50C.30 50D.30 20分析:本题中,最主要的是掌握几个有关文件的函数的应用。函数 fopen 的功能:打开一个文件 调用方式 FILE *fp;fp=fopen(文件名,使用文件方式);函数 fprintf 的功能:传送格式化输出到一个文件中 调用方式:fprintf (文件指针,格式字符串,输出表列) ;函数 fclose 的功能:关闭一个文件 调用方式:fclose(文件指针) ;函数 fscanf 的功能:从磁盘文件执行格式化输入 调用方式:fscanf(文件指针,格式字符串,输入表列) 。24.下面 4 个选项
15、中,均是不合法的用户标识符的选项是( ) A.A P_0B.float la0 _AC.b-a goto intD._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=10amain()int i;for
16、(i=100;ib)c=1;else if(a=b)c=0;else c=-1;return(c);A.-1 B.1C.2D.编译出错,无法运行分析:函数调用相当于 f(2,3),程序运算应得结果为“-1” 。35.有如下程序#define N 2#define M N+1#define NUM 2*M+1main()int i;for(i=1;i=NUM;i+)printf(%dn,i);该程序中的 for 循环执行的次数是( )A.5B.6C.7D.8分析:该题目测试考生对宏替换的理解。这是一种简单的情况:不带参数的宏。关键要注意在对 2*M+1 进行宏替换时,要将宏名 M 原封不动代进去,