《计算机国二C语言考试试题 第六套》由会员分享,可在线阅读,更多相关《计算机国二C语言考试试题 第六套(12页珍藏版)》请在金锄头文库上搜索。
1、第六套1.树是结点的集合,它的根结点数目是( )A.有且只有 1B.1 或多于 1C.0 或 1D.至少 2分析:树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。每个集合同时又时一棵树。树有且只有 1 个根结点。2.在设计程序时,应采纳的原则之一是( )A.不限制 goto 语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解分析:滥用 goto 语句将使程序流程无规律,可读性差,因此 A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。3.下列叙述中,不属于
2、软件需求规格说明书的作用的是( )A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析分析:软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:便于用户、开发人员进行理解和交流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。4.单个用户使用的数据视图的描述称为( )A.外模式B.概念模式C.内模式D.存储模式分析:选项 A 正确,外模式是用
3、户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式为内模式。5.SQL 语言又称为( )A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言分析:结构化查询语言(Structured Query Language,简称 SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。6.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的
4、结点访问顺序是( )A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca分析:前序遍历的第一个结点 a 为树的根结点;中序遍历中 a 的左边的结点为 a 的左子树,a 右边的结点为 a 的右子树;再分别对 a 的左右子树进行上述两步处理,直到每个结点都找到正确的位置。7.软件工程的理论和技术性研究的内容主要包括软件开发技术和( )A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用分析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基
5、于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。8.软件测试设计中,软件测试的主要目的是( )A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.发现软件错误而执行程序分析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。9.索引属于( )A.模式B.内模式C.外模式D.概念模式分析:内模式(Internal Schema)又称物理模式(Physical Schema) ,它给出了数据库物理
6、存储结构与物理存取方法,如数据存储的文件结构、索引,集簇及 hash 等存取方式与存取路径。10.数据库系统的核心是( )A.数据库B.数据库管理系统C.模拟模型D.软件工程分析:数据库管理系统(Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。11.以下叙述不正确的是( )A.一个 C 源程序可由一个或多个函数组成B.一个 C 源程序必须包含一个 main 函数C.C 程序的基本组成单位是函数D.在 C 程序中,注释说明只能位于一条语句的后
7、面分析:本题考查 C 语言的基本基础知识。是在 C 程序中,注释用符号 “/*”开始,而是以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行说明。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容,且注释内容也不会出现在目标程序中。12.以下叙述正确的是( )A.在 C 程序,每行中只能写一条语句B.若 a 是实型变量,C 程序中允许赋值 a=10,因此实型变量中允许存放整型数C.在 C 程序中,无论是整数还是实数,都能被准确无误地表示D.在 C 程序中,%是只能用于整数运算的运算符
8、分析:选项 A 错误,因为在 C 语言中,各语句间可以用分号隔开,一行可以书写多个语句;选项 B 错误的原因是,忽略了 C 语言中进行运算的数据类型必须一致的规定,因此实型变量中不允许存放整型数,存放整型数据其实是把整型转化为实型在存放。选项 C 错误的原因是由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效的位以外的数将被舍去,由此可能产生一些误差。13.已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合 C 语言语法的表达式是( )A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b
9、)D.a+=a-=(b=4)*(a=3)分析:“%”是求余运算符或模运算符, “%”两侧均应为整型数据,选项 A 中的 x 是double 型数据。14.设 x,y 均为整型变量,且 x=10 y=3,则以下语句的输出结果是( )printf(%d,%dn,x-,-y);A.10,3B.9,3C.9,2D.10,2分析:在 C 语言中,自增 1 运算符记为 “+”,其功能是使变量的值自增 1。自减 1 运算符记为“-” ,其功能是使变量值自减 1。自增 1,自减 1 运算符均为单目运算,都具有右结合性。可有以下几种形式:+I i 自增 1 后再参与其他运算-I i 自减 1 后再参与其他运算i
10、+ i 参与运算后,i 的值再自增 1i- i 参与运算后, i 的值再自减 1在理解和使用上容易出错的是 i+和+i 。特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细解析。15.执行下列程序时输入 123456789输出结果是( )main() char s100;int c,i; scanf(%c,&c);scanf(%d,&i);scanf(%s,s);printf(%c,%d,%sn,c,i,s);A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456分析:当执行输入时,把整数赋给字符型变量 c(整型与字符型能相互转化) ,
11、把 23 赋给整型变量 i,把 456 赋给字符数组 s,789 之所以没有被接受是因为字符串输入时,遇空格结束。16.以下程序的输出结果是( )main() int i,j,x=0;for(i=0;i9,或者 x=876,只要在执行 scanf 语句时,从终端输入 876,循环就将结束。如果从终端一直未输入 876,则将由 i 值的增加使 i9,从而结束循环。按照题中所给定的 for 语句,每执行一次循环,i 自增 1,因此执行 10 次循环后,i 的值为 10,循环最终也将结束。20.下面程序的输出结果为( )main() int a,b;b=(a=3*5,a*4,a*5);printf(
12、%d,b);A.60B.75C.65D.无确定值分析:对于逗号表达式中的第一个表达式等价为 a=15;第二个表达式的值为 154=60,此时变量 a 的值仍未改变还是 15,第三个表达式的值为 b 的值。21.下面程序的输出结果是( )#include#includemain() char*p1=abc,*p2=ABC,str50=xyz;strcpy(str+2,strcat(p1,p2);printf(%sn,str);A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC分析:本题考查的重点是拷贝字符串使用 strcpy()函数,该函数的调用方式是:strcpy
13、(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,同结束标志0一起复制。不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数来处理。另外本题还考查连接字符串的 strcat()函数,其调用方式是: strcat(字符数组,字符串)功能是把“字符串”连接到“字符和数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未
14、被修改。使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以容纳连接后的目标字符串;否则,会因长度不够而产生问题。连接前两个字符串都会有结束标志0,连接后“字符数组”中存储的字符串的结束标志0被舍弃,只在目标串的最后保留一个0。22.有如下程序main() char ch2 5=6937,8254,*p2;int i,j,s=0;for(i=0;i0;j+=2)s=10*s+pi j-0;printf(%dn,s);该程序的输出结果是( )A.69825B.63825C.6385D.693825分析:该题稍微难一点。主要要搞清楚以下几点:定义了一个指针数组 char
15、 *p2后,程序中第一个循环 for(i=0;i0是指 pi j中的字符只要不是字符串结束标志0就继续循环,语句 j+=2;是使下标 j 每次增加 2,也即一个隔一个地从pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 p0所指向的字符串“6937”中一个隔一个地取出字符,分别是6和3 ,然后从 p1所指向的字符串“8254”中一个隔一个地取出字符,分别是8和5 ,同时经过转换和相加运算后,结果 s 中的值应该是6385。23.下面程序执行后文件 test 中内容是( )#include void fun(char *fname,char *st) FILE *myf;int i;myf=fopen(fname,w);for(i=0;i765.12B.i=100,f=765.12C.100765.12D.x=100,y=765.12分析:本题考查 scanf 函数的输入方法。 Scanf()函数是格式输入函数,它从标准输入设备(键盘)读取输入的信息。其调用格式为:scanf (“” ,) ;,格式化字符串包括以下三类不同的字符:格式化说明符:格式化说明符与 printf()函数中的格式说明符基本相空白字符:空白字符会使 scanf()函数在读操作中略去输入中的一个或多个空白字符。非空白字符:一个非空白字符会使 scanf()函数在读入时剔除掉