• 沒有找到結果。

2006 年 9 月全国计算机等级考试二级笔试试卷 Visual FoxPro 数据库程序设计

一、单项选择题

1.下列选项中不符合良好程序设计风格的是( )。

A.源程序要文档化 B.数据说明的次序要规范化

C.避免滥用 goto 语句 D.模块设计要保证高耦合、高内聚

解析:良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此程序 设计风格对保证程序的质量很重要。主要应注意和考虑下述因素:

源程序要文档化。

数据说明的次序要规范化。

语句的结构应该简单直接,不应该为提高效率而把语句复杂化,避免滥用 goto 语句。

模块设计要保证低耦合、高内聚。

答案:D

2.从工程管理角度来看,软件设计一般分为两步完成,它们是( )。 A.概要设计与详细设计 B.过程控制

C.软件结构设计与数据设计 D.程序设计与数据设计

解析:从工程管理角度看,软件设计分为两步完成:概要设计与详细设计。概要设计(又 称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;

详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

答案:A

3.下列选项中不属于软件生命周期开发阶段任务的是( )。

余的数据库,否则是非冗余的数据库。

答案:B

10.对下列二叉树进行中序遍历的结果是( )。

A.ACBDFEG B.ACBDFGE C.ABDCGEF D.FCADBEG

解析:二叉树的中序遍历指在访问根节点、遍历左子树与遍历右子树这三者中,首先遍 历左子树,然后访问根节点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,

然后访问根节点,最后遍历右子树。

答案:A

11.下列程序段执行以后,内存变量 A 和 B 的值是( )。 CLEAR

A=10 B=20

SET UDFPARMS TO REFERENCE

DO SQ WITH(A),B &&参数 A 是值传送,B 是引用传送

? A,B

PROCEDURE SQ PARAMETERS X1,Y1 X1=X1*X1 Y1=2*X1 ENDPROC

A.10 200 B.100 200 C.100 20 D.10 20

解析:此题中参数 A 为值传送,即 A 值为 10;参数 B 为引用传送,根据 X1=X1*X1,

Y1=2*X1 得 Y1 值为 200,即 B 的值。

答案:A

12.从内存中清除内存变量的命令是( )。

A.Release B.Delete C.Erase D.Destroy 解析:清除内存变量的命令是:

RELEASE ALL [LIKE <通配符>|EXCEPT <通配符>]

选用 LIKE 清除与通配符相匹配的内存变量,选用 EXCEPT 短语清除与通配符不相匹配 的内存变量。其中通配符可能使用*和?,*表示任何数目的字符,?表示任何单个字符。

答案:A

13.操作对象只能是一个表的关系运算是( )。

A.连接和选择 B.连接和投影 C.选择和投影 D.自然连接和选择 解析:选择和投影运算的操作对象只能是一个表,相当于对一个二维表进行切割。连接 运算需要两个表作为操作对象。

F

C E

A D G

B

答案:C

14.在“项目管理器”下为项目建立一个新报表,应该使用的选项卡是( )。 A.数据 B.文档 C.类 D.代码

解析:略。

答案:B

15.如果有定义 LOCAL data,data 的初值是( )。

A.整数 0 B.不定值 C.逻辑真 D.逻辑假

解析:LOCAL<内存变量表>,LOCAL 命令只能在一个函数或过程中被访问,其他过程 或函数不能访问此变量的数据。

说明:该变量同样给建立的内存变量赋以初值逻辑假。

答案:D

16.退出 Visual FoxPro 的操作方法是( )。 A.从“文件”下拉菜单中选择“退出”选项 B.用鼠标左键单击关闭窗口按钮

C.在命令窗口中键入 QUIT 命令,然后按回车键 D.以上方法都可以

解析:略。

答案:D

17.下列程序段执行以后,内存变量 y 的值是( )。 x=34567

y=0

DO WHILE x>0 y=x%10+y*10 x=int(x/10) ENDDO

A.3456 B.34567 C.7654 D.76543

解析:此题意为当 x>0 时就执行循环,%为取余函数,int()为取整函数,经过循环运行的 结果是 76543。

答案:D

18.下列程序段中与上题的程序段对 y 的计算结果相同的程序是( )。

A.x=34567 B.x=34567

y=0 y=0

flag=.T. flag=.T.

DO WHIL flag DO WHIL flag y=x%10+y*10 y=x%10+y*10 x=int(x/10) x=int(x/10)

IF x>0 IF x=0

flag=.F. flag=.F.

ENDIF ENDIF

ENDDO ENDDO

C.x=34567 D.x=34567

y=0 y=0

flag=.T. flag=.T.

DO WHIL!flag DO WHIL!flag y=x%l0+y*10 y=x%l0+y*10

x=int(x/10) x=int(x/10)

IF x>0 IIF x=0

flag=.F. flag=.T.

ENDIF ENDIF

ENDDO ENDDO

解析:略。

答案:B

19.在 SQL SELECT 语句的 ORDER BY 短语中如果指定了多个字段,则( )。

A.无法进行排序 B.只按第一个字段排序

C.按从左至右优先依次排序 D.按字段排序优先级依次排序

解析:SELECT 中用来对最终的查询结果进行排序使用的是 ORDER BY 短语,通常置于 SELECT 语句的最后。也可以对两个或多个列进行排序,这会创建嵌套排序。默认值仍然是升 序,在 ORDER BY 子句中最先列示的列优先,即按从左至右优先依次排序。

答案:C

20.如果运行一个表单,以下事件首先被触发的是( )。

A.Load B.Error C.Init D.Click

解析:表单运行时的基本事件先后情况为先执行表单的 Load 事件,然后执行表单的 Init 事件,最后执行表单的 Active 事件。

答案:A

21.在 Visual FoxPro 中以下叙述正确的是( )。

A.关系也被称作表单 B.数据库文件不存储用户数据

C.表文件的扩展名是.DBC D.多个表存储在一个物理文件中

解析:在 Visual FoxPro 中,一个关系就是一张二维表,每个关系有一个关系名,一个关 系存储为一个文件,称为“表”;表文件的扩展名是.DBF;一个“表”就是一个关系,存储在 一个.dbf 文件中,多个表应该存储在多个.dbf 文件中;数据库文件不存放用户数据。

答案:B

22.设 X=6<5,命令?VARTYPE(X)的输出是( )。

A.N B.C C.L D.出错

解析:VARTYPE(<表达式>[,<逻辑表达式>]) 是测试 <表达式>的类型,返回一个大写字 母,函数值为字符型。若<表达式>的运算结果是 NULL 值,则根据<逻辑表达式>值决定是否 返回<表达式>的类型:如果值为.T.,就返回<表达式>的原数据类型;如果<逻辑表达式>的值 为.F.或默认,则返回 X 以表明<表达式>的运算结果是 NULL 值。

答案:C

23.假设表单上有一选项组:⊙男 ○女,如果选择第二个按钮“女”,则该选项组的 Value 属性值为( )。

A..F. B.女 C.2 D.女或 2

解析:选项按钮组(OptionGroup)的 Value 属性值可以是字符型的,也可以是数值型的。

如果它是字符型,那么它的值就是运行表单时用户所选中的选项(Option)的 Caption 属性的 值;如果它是数值型的,那么它的值就是运行表单时用户所选中的选项(Option)在选项按钮 组(OptionGroup)中的顺序号。

答案:D

24.假设表单 MyForm 隐藏着,让该表单在屏幕上显示的命令是( )。

A.MyForm.List B.MyForm.Display C.MyForm.Show D.MyForm.ShowForm 解析:一般情况下,运行表单时,在产生表单对象后,将调用表单对象的 Show 方法显 示表单。

答案:C

25.当前盘当前目录下有数据库:大奖赛.dbc,其中有数据库表“歌手.dbf”、“评分.dbf”。

“歌手”表 “评分”表

歌手号 姓名 歌手号 分数 评委号

1001 王蓉 1001 9.8 101

2001 许巍 1001 9.6 102

3001 周杰伦 1001 9.7 103

4001 林俊杰 1001 9.8 104

为“歌手”表增加一个字段“最后得分”的 SQL 语句是( )。

A.ALTER TABLE 歌手 ADD 最后得分 F(6,2) B.ALTER DBF 歌手 ADD 最后得分 F6,2 C.CHANGE TABLE 歌手 ADD 最后得分 F(6,2) D.CHANGE TABLE 学院 INSERT 最后得分 F6,2

解析:修改表结构应使用 ALTER TABLE 命令,ALTER TABLE 命令有 3 种格式,分别 用于完成不同的修改功能。添加新属性,要采用该命令的格式 1。要添加的属性名及类型置于 ADD 短语之后。F 表示数值类型,圆括号内由逗号分开的 6 和 2 分别代表总宽度和小数位数。

答案:A

26.依据 25 题的表文件,插入一条记录到“评分”表中,歌手号、分数和评委号分别是

“1001”、9.9 和“105”,正确的 SQL 语句是( )。

A.INSERT VALUES ("1001",9.9,"105") INTO 评分(歌手号,分数,评委号) B.INSERT TO 评分(歌手号,分数,评委号) VALUES("1001",9.9,"105") C.INSERT INTO 评分(歌手号,分数,评委号) VALUES("1001",9.9,"105") D.INSERT VALUES ("1001",9.9,"105") TO 评分(歌手号,分数,评委号)

解析:INSERT INTO 表名[(字段名 1[,字段名 2,...])] VALUES (表达式 1[,表达式 2,...]) 。 答案:C

27.依据 25 题的表文件,假设每个歌手“最后得分”字段的计算方法是去掉一个最高分 和一个最低分,取剩下分数的平均分。根据“评分”表求每个歌手的“最后得分”并存储于表 TEMP 中,表 TEMP 中有两个字段:“歌手号”和“最后得分”,并且按最后得分降序排列,

生成表 TEMP 的 SQL 语句是( )。

A.SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数)/(SUM(*)-2) 最后得分;

FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分 DESC B.SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数)/(SUM(*)-2) 最后得分;

FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESC C.SELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数)/(COUNT (*)-2) 最后得分;

FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESC D.SELECT 歌手号,(SUM (分数)-MAX(分数)-MIN(分数)/(COUNT (*)-2) 最后得分;

FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分 DESC

解析:此题根据题意应该根据歌手号进行分组,所以排除 B、C 选项;歌手的最后得分应

该是分数的总和去掉一个最高分和一个最低分,即 SUM (分数)-MAX(分数)-MIN(分数)。

答案:D

28.依据 25 题的表文件,与“SELECT * FROM 歌手 WHERE NOT(最后得分>9.00 OR 最后得分<8.00)”等价的语句是( )。

A.SELECT * FROM 歌手 WHERE 最后得分 BETWEEN 9.00 AND 8.00 B.SELECT * FROM 歌手 WHERE 最后得分>=8.00 AND 最后得分<=9.00 C.SELECT * FROM 歌手 WHERE 最后得分>9.00 OR 最后得分<8.00 D.SELECT * FROM 歌手 WHERE 最后得分<=8.00 AND 最后得分>=9.00

解析:此题表示查询最后得分小于等于 9.00 或者大于等于 8.00 的歌手信息。

答案:B

29.依据 25 题的表文件,为“评分”表的“分数”字段添加有效性规则:“分数必须大 于等于 0 并且小于等于 10”,正确的 SQL 语句是( )。

A.CHANGE TABLE 评分 ALTER 分数 SET CHECK 分数>=0 AND 分数<=10 B.ALTER TABLE 评分 ALTER 分数 SET CHECK 分数>=0 AND 分数<=10 C.ALTER TABLE 评分 ALTER 分数 CHECK 分数>=0 AND 分数<=10 D.CHANGE TABLE 评分 ALTER 分数 SET CHECK 分数>=0 OR 分数<=10 解析:略。

答案:B

30.依据 25 题的表文件,根据“歌手”表建立视图 myview,视图中含有包括了“歌手号”

左边第一位是“l”的所有记录,正确的 SQL 语句是( )。

A.CREATE VIEW myview AS SELECT * FROM 歌手 WHERE LEFT(歌手号,l)="1"

B.CREATE VIEW myview AS SELECT * FROM 歌手 WHERE LIKE("1",歌手号) C.CREATE VIEW myview SELECT * FROM 歌手 WHERE LEFT(歌手号,l)="1"

D.CREATE VIEW myview SELECT * FROM 歌手 WHERE LIKE("1",歌手号) 解析:略。

答案:A

31.删除视图 myview 的命令是( )。

A.DELETE myview VIEW B.DELETE myview C.DROP myview VIEW D.DROP VIEW myview 解析:删除视图的命令格式是 DROP VIEW <视图名>。

答案:D

32.依据 25 题的表文件,假设 temp.dbf 数据表中有两个字段:“歌手号”和“最后得分”。

下面程序段的功能是:将 temp.dbf 中歌手的“最后得分”填入“歌手”表对应歌手的“最后 得分”字段中(假设已增加了该字段)。在下划线处应该填写的 SQL 语句是( )。

USE 歌手

DO WHILE .NOT. EOF()

REPLACE 歌手.最后得分 WITH a[2]

SKIP ENDDO

A.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 TO ARRAY a B.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO ARRAY a C.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 TO FILE a D.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO FILE a

解析:将查询结果放在数组中应使用 INTO ARRAY ArrayName 短语,ArrayName 可以是 任意的数组变量名。将查询结果放在文本文件中应使用 TO FILE FileName [ADDITIVE] 短 语,其中 FileName 给出了文本文件名。

答案:B

33.依据 25 题的表文件,与“SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分

>=ALL (SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,l,1)="2")”等价的 SQL 语句 是( )。

A.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分>=;

(SELECT MAX(最后得分) FROM 歌手 WHERE SUBSTR(歌手号,l,1)="2") B.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分>=;

(SELECT MIX(最后得分) FROM 歌手 WHERE SUBSTR(歌手号,l,1)="2") C.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分>=ANY;

(SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,l,1)="2") D.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分>=SOME;

(SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,l,1)="2") D.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分>=SOME;