1、浙江二级 VISUAL+FOXPRO-9 及答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】从键盘输入学生的学号,在“成绩”表中计算该生的平均成绩,并说明成绩的档次(优、良、中、及格和不及格),如果该生不在表中则提示相应的信息。【程序】SET TALK OFFCLEARUSE 成绩ACCEPT“请输入学生的学号:” TO XHU(1) /UIF U(2) /U?“查无此人!”ELSEU (3) /U成绩 TO CJ FOR 学号XHDO CASECASE C
2、J=90DC=“优”CASE CJ80DC“良”CASE CJ70DC=“中”CASE CJ60DC“及格”U (4) /UDC“不及格”ENDCASE? XH,CJ,DCENDIFUSESET TALK ON(分数:12.00)A.LOCATE TO 学号= XHB.LOCATE OF 学号XHC.LOCATE FOR 学号XHD.INDEX ON 学号=XHA.FOUND()B.! FOUND()C.FIND()D.! FIND()A.AVERAGEB.SUMC.COUNTD.CALCULATEA.EXITB.ENDDOC.THE OTHED.OTHERWISE二、B试题 2/B(总题数:
3、1,分数:9.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】程序功能是求 1!+2!+3!+10!的累加和。【程序】SET TALK OFFS0FOR i1 TO 10t1FOR j1 TO U(5) /Utt*jU(6) /Us=s+ tNEXTU(7) /USET TALK ON(分数:9.00)A.10B.jC.9D.iA.EXITB.ENDFORC.ENDDOD.STEPA.? SB.PRINT SC.DISPLAY SD.#S三、B试题 3/B(总题数:1,分数:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确
4、答案。【程序说明】本题使用如下数据表:学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D)选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1)(分数:15.00)(1).查询所有 1990 年 3 月 20 日以后(含)出生的性别为男的学生,正确的 SQL 语句是 _。(分数:3.00)A.SELECT* FROM 学生 WHERE 出生日期19900320 AND 性别“男”B.SELECT* FROM 学生 WHERE 出生日期19900320 AND 性别=“男”C.SELECT* FROM 学生 WHERE 出生日期=19900320OR 性别“男
5、”D.SELECT* FROM 学生 WHERE 出生日期19900320)OR 性别“男”(2).计算刘明同学选修的所有课程的平均成绩,正确的 SQL 语句是 _。(分数:3.00)A.SELECT AVG(成绩)FROM 选课 WHERE 姓名=“刘明”B.SELECT AVG(成绩)FROM 学生,选课 WHERE 姓名“刘明”C.SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.姓名“刘明”D.SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.学号选课.学号 AND 姓名“刘明”(3).查询选修课程号为“101”课程得分最高的同学,正确的 SQL 语
6、句是 _。(分数:3.00)A.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 课程号“101” AND 成绩=ALL (SELECT 成绩 FROM 选课)B.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 成绩ALL(SELECT 成绩 FROM 选课 WHERE 课程号“101”)C.SELECT 学生. 学号,姓名 FROM 学生,选课 WHERE 学生. 学号选课.学号 AND 成绩ANY (SELECT 成绩 FROM 选课 WHERE 选课号“101”)D.SELECT 学生.学号,姓
7、名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 课程号“101”AND 成绩= ALL(SELECT 成绩 FROM 选课 WHERE 课程号=“101”)(4).插入一条记录到“选课”表中,学号、课程号和成绩分别是“08080111”、“103”和 80,正确的SQL 语句是_。(分数:3.00)A.INSERT INTO 选课 VALUES(“08080111”,“103”,80)B.INSERT VALUES(“08080111”,“103”,80)TO 选题 (学号,课程号,成绩)C.INSERT VALUES(“08080111”,“103”,80)INTO 选题
8、(学号,课程号,成绩)D.INSERT INTO 选课(学号,课程号,成绩)FROM VALUES(“08080111”,“103”,80)(5).将学号为“08080110”、课程号为“102”的选课记录的成绩改为 92,正确的 SQL 语句是 _。(分数:3.00)A.UPDATE 选课 SET 成绩 WITH 92 WHERE 学号=“08080110” AND 课程号“102”B.UPDATE 选课 SET 成绩92 WHERE 学号“08080110” AND 课程号“102”C.UPDATE FROM 选课 SET 成绩 WITH 92 WHERE 学号=“08080110” AN
9、D 课程号“102”D.UPDATE FROM 选课 SET 成绩 92 WHERE 学号“08080110” AND 课程号“102”四、B试题 4/B(总题数:1,分数:9.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】表学生.DBF 中共有 100 条记录,顺序执行下面命令。【程序】SET DELETED OFFUSE 学生DELETECOUNTPACKCOUNTZAPCOUNTUSE(分数:9.00)(1).第一次 COUNT 的结果为 _。(分数:3.00)A.99B.100C.0D.101(2).第二次 COUNT 的结果
10、为 _。(分数:3.00)A.99B.100C.0D.101(3).第三次 COUNT 的结果为 _。(分数:3.00)A.99B.100C.0D.101五、B试题 5/B(总题数:1,分数:15.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* * PROG1. PRGSET TALK OFFPUBLIC X,YX“同学们”Y=“你们好!”? X+YDO SUBPRO? X,Y,ZSET TALK ONRETURN* SUBPRO. PRGPRIVATE XPUBLIC ZX=100Y200Z300? X+Y+ZRETURN(分数:15.0
11、0)(1).第一个 X+Y 的输出结果为 _。(分数:3.00)A.同学们你们好!B.你们好同学们C.同学们+你们好!D.同学们(2).子程序中,X+Y+Z 的输出结果为 _。(分数:3.00)A.100B.同学们 200C.你们好! 500D.600(3).调完子程序后,主程序中 X 的输出结果为 _。(分数:3.00)A.100B.同学们C.300D.你们好!(4).调完子程序后,主程序中 Y 的输出结果为 _。(分数:3.00)A.100B.200C.300D.你们好!(5).调完子程序后,主程序中 Z 的输出结果为 _。(分数:3.00)A.100B.200C.300D.你们好!六、B
12、试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFDIMENSION A(6)FOR K1 TO 6A(K)=303*KENDFORK5DO WHILE K1A(K)=A(K)A(K+1)KK1ENDDO? A(1),A(2),A(4),A(6)SET TALK ONRETURN(分数:12.00)(1).A(1)的输出结果为 _。(分数:3.00)A.24B.15C.27D.9(2).A(2)的输出结果为_。(分数:3.00)A.24B.18C.27D.9(3).A(4)的输出结果为
13、 _。(分数:3.00)A.24B.18C.15D.12(4).A(6)的输出结果为 _。(分数:3.00)A.24B.18C.15D.12七、B试题 7/B(总题数:1,分数:14.00)1.编写程序,输入三角形的边长,求三角形的面积。(分数:14.00)_八、B试题 8/B(总题数:1,分数:14.00)2.某表单上有两个命令按钮 Command1 和 Command2。要求:(1)若单击 Command1 命令按钮,程序将当前表的记录指针上移一位,并刷新表单中所有的值;其中,若指针已处于文件的首记录,则将其自身(Command1 命令按钮)设置为不能被激活状态。(2)若单击 Comman
14、d2 命令按钮,程序将当前表的记录指针下移一位,并刷新表单中所有的值;其中,若指针已处于文件的末记录,则将其自身(Command2 命令按钮)设置为不能被激活状态。(分数:14.00)_浙江二级 VISUAL+FOXPRO-9 答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】从键盘输入学生的学号,在“成绩”表中计算该生的平均成绩,并说明成绩的档次(优、良、中、及格和不及格),如果该生不在表中则提示相应的信息。【程序】SET TALK OFFCLEARUSE
15、成绩ACCEPT“请输入学生的学号:” TO XHU(1) /UIF U(2) /U?“查无此人!”ELSEU (3) /U成绩 TO CJ FOR 学号XHDO CASECASE CJ=90DC=“优”CASE CJ80DC“良”CASE CJ70DC=“中”CASE CJ60DC“及格”U (4) /UDC“不及格”ENDCASE? XH,CJ,DCENDIFUSESET TALK ON(分数:12.00)A.LOCATE TO 学号= XHB.LOCATE OF 学号XHC.LOCATE FOR 学号XH D.INDEX ON 学号=XH解析:解析 本空要求通过查找学生的学号,来显示学生
16、的相应信息。 顺序查找命令的格式:LOCATE FOR条件WHILE条件范围。 其功能:按表的排列顺序依次搜索满足条件的第一条记录。A.FOUND()B.! FOUND() C.FIND()D.! FIND()解析:解析 查询结果函数的格式:FOUND(工作区号/别名) 功能:如果LOCATE,CONTINUE,SEEK,FIND 命令执行成功(找到),则返回.T.,否则返回.F.。 记录查找结果,也可用 EOF()来测试。如果记录找到,则 EOF()为逻辑假(.NOT. EOF()为逻辑真),否则,EOF()为逻辑真。 本小题要求找不到学生的学号时,显示相应的提示信息,所以应是! FOUND
17、()为真。A.AVERAGE B.SUMC.COUNTD.CALCULATE解析:解析 AVERAGE:求平均值;SUM:求和;COUNT:统计记录的个数;MAX:求最大值。A.EXITB.ENDDOC.THE OTHED.OTHERWISE 解析:解析 多路选择分支结构的格式: DO CASE CASE条件表达式 1 语句序列 1 CASE条件表达式 2 语句序列 2 CASE条件表达式 n 语句序列 n OTHERWISE 语句序列 n+1 ENDCASE 功能:依次判断条件表达式 I(I1、23n)的逻辑值,当值为真(.T.)时,控制执行对应的语句序列 I(11、2、3n)。OTHERW
18、ISE 表示当所有的条件表达式 I(I=1、2、3n)的值都为假(.F.)时,则执行语句序列 n+1。CASE 条件语句行的多少根据问题面定。当只有一条 CASE 条件语句行时,DO CASE 控制结构实现的功能与 IF 控制结构相同。二、B试题 2/B(总题数:1,分数:9.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】程序功能是求 1!+2!+3!+10!的累加和。【程序】SET TALK OFFS0FOR i1 TO 10t1FOR j1 TO U(5) /Utt*jU(6) /Us=s+ tNEXTU(7) /USET TALK ON(分数:
19、9.00)A.10B.jC.9D.i 解析:解析 程序中外层的循环是求 10 个数的累加和,内层循环是求当外层循环到第 i 次时求 i!,因而内层循环语句应写成 FOR j=1 TO i。A.EXITB.ENDFOR C.ENDDOD.STEP解析:解析 FOR ENDFOR 的格式如下: FOR 循环变量初值 TO 终值STEP 步长 语句序列 EXIT LOOP EXDFOR/NEXTA.? S B.PRINT SC.DISPLAY SD.#S解析:解析 在 Visual FoxPro 中,?表示换行输出语句,?表示同行输出语句,此空功能是输出累加和S。三、B试题 3/B(总题数:1,分数
20、:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】本题使用如下数据表:学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D)选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1)(分数:15.00)(1).查询所有 1990 年 3 月 20 日以后(含)出生的性别为男的学生,正确的 SQL 语句是 _。(分数:3.00)A.SELECT* FROM 学生 WHERE 出生日期19900320 AND 性别“男” B.SELECT* FROM 学生 WHERE 出生日期19900320 AND 性别=“男”C.S
21、ELECT* FROM 学生 WHERE 出生日期=19900320OR 性别“男”D.SELECT* FROM 学生 WHERE 出生日期19900320)OR 性别“男”解析:解析 本小题考查考生对逻辑表达式的掌握,题目要求查询所有 1990 年 3 月 20 日以后(含)出生,并且性别为“男”的记录,题目所给出的选项意义如下:选项 A 查询所有 1990 年 3 月 20 日以后 (含)出生并且性别为“男”的记录,为正确答案,选项 B 查询所有 1990 年 3 月 20 日以前(含)出生并且性别为“男”的记录,错误。选项 C 查询所有 1990 年 3 月 20 日以后(含)出生或者性
22、别为“男”的记录,错误。选项 D 查询所有 1990 年 3 月 20 日以前(含)出生或者性别为“男”的记录,错误。选项 A 为正确答案。(2).计算刘明同学选修的所有课程的平均成绩,正确的 SQL 语句是 _。(分数:3.00)A.SELECT AVG(成绩)FROM 选课 WHERE 姓名=“刘明”B.SELECT AVG(成绩)FROM 学生,选课 WHERE 姓名“刘明”C.SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.姓名“刘明”D.SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.学号选课.学号 AND 姓名“刘明” 解析:解析 此小题中各
23、个选项解释如下:选项 A 错误,此查询只选择了“选课”表,但在“选课”表中并没有“姓名”字段。选项 B 与选项 C 错误,此查询进行了两个表的联合查询,但没有根据关键字将两个表连接起来。选项 D 正确。(3).查询选修课程号为“101”课程得分最高的同学,正确的 SQL 语句是 _。(分数:3.00)A.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 课程号“101” AND 成绩=ALL (SELECT 成绩 FROM 选课)B.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 成绩ALL(SELE
24、CT 成绩 FROM 选课 WHERE 课程号“101”)C.SELECT 学生. 学号,姓名 FROM 学生,选课 WHERE 学生. 学号选课.学号 AND 成绩ANY (SELECT 成绩 FROM 选课 WHERE 选课号“101”)D.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号选课.学号 AND 课程号“101”AND 成绩= ALL(SELECT 成绩 FROM 选课 WHERE 课程号=“101”) 解析:解析 选项 A 中的子查询并没有限定选择“课程号”为“101”,则此命令选择出来的结果是“101”课程得分大于等于所有科目成绩的记录,如果其余
25、课目的成绩有记录大于“101”科目的最高成绩,则此查询无结果,此选择错误。 选项 B 中的查询并没有限定选择“课程号”为“101”,则此命令选择出来的结果是所有课程得分大于等于所有“101”科目成绩的记录,如果其余课目的成绩有记录大于“101”科目的最高成绩,则此查询将查询出错误结果,此选项错误。 选项 C 中的查陶并没有限定选择“课程号”为“101”,则此命令选择出来的结果是所有课程得分大于等于任意“101”科目成绩的记录,此查询将查询出错误的结果,此选项错误。(4).插入一条记录到“选课”表中,学号、课程号和成绩分别是“08080111”、“103”和 80,正确的SQL 语句是_。(分数
26、:3.00)A.INSERT INTO 选课 VALUES(“08080111”,“103”,80) B.INSERT VALUES(“08080111”,“103”,80)TO 选题 (学号,课程号,成绩)C.INSERT VALUES(“08080111”,“103”,80)INTO 选题(学号,课程号,成绩)D.INSERT INTO 选课(学号,课程号,成绩)FROM VALUES(“08080111”,“103”,80)解析:解析 使用 SQL 插入表记录的命令 INSERT INTO 向表中插入记录的格式如下: INSERT INTO 表名(字段名 1,字段号 2,)VALUES(
27、表达式 1,表达式 2,) 由此命令格式可以看出,选项 A 为正确答案(5).将学号为“08080110”、课程号为“102”的选课记录的成绩改为 92,正确的 SQL 语句是 _。(分数:3.00)A.UPDATE 选课 SET 成绩 WITH 92 WHERE 学号=“08080110” AND 课程号“102”B.UPDATE 选课 SET 成绩92 WHERE 学号“08080110” AND 课程号“102” C.UPDATE FROM 选课 SET 成绩 WITH 92 WHERE 学号=“08080110” AND 课程号“102”D.UPDATE FROM 选课 SET 成绩
28、92 WHERE 学号“08080110” AND 课程号“102”解析:解析 SQL 中的 UPDATE 语句可以更新表中数据,格式如下: UPDATE表名SET列名 1=表达式 1,列名 2表达式 2WHERE条件表达式 1ANDOR条件表达式 2 由此命令格式可以看出,选项 B 为正确答案。选项 A 错误的使用了 WITH 短语,而选项 C 及选项 D 均使用了错误的FROM 短语。四、B试题 4/B(总题数:1,分数:9.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】表学生.DBF 中共有 100 条记录,顺序执行下面命令。【
29、程序】SET DELETED OFFUSE 学生DELETECOUNTPACKCOUNTZAPCOUNTUSE(分数:9.00)(1).第一次 COUNT 的结果为 _。(分数:3.00)A.99B.100 C.0D.101解析:(2).第二次 COUNT 的结果为 _。(分数:3.00)A.99 B.100C.0D.101解析:(3).第三次 COUNT 的结果为 _。(分数:3.00)A.99B.100C.0 D.101解析:解析 设置 SET DELETED OFF 之后,逻辑删除的记录参与其他命令的操作。第 1 次 COUNT 包括带有删除标记的第 1 条记录,结果为 100,用 PA
30、CK 命令进行物理删除之后,第 2 次 COUNT 是 99;用 ZAP 清除全部记录,第 3 次 COUNT 的结果是 0。五、B试题 5/B(总题数:1,分数:15.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* * PROG1. PRGSET TALK OFFPUBLIC X,YX“同学们”Y=“你们好!”? X+YDO SUBPRO? X,Y,ZSET TALK ONRETURN* SUBPRO. PRGPRIVATE XPUBLIC ZX=100Y200Z300? X+Y+ZRETURN(分数:15.00)(1).第一个 X+Y
31、的输出结果为 _。(分数:3.00)A.同学们你们好! B.你们好同学们C.同学们+你们好!D.同学们解析:解析 X 和 Y 是字符串型,“+”用于连接两个字符串。所以输出 X+ Y 的结果为“同学们你们好!”。(2).子程序中,X+Y+Z 的输出结果为 _。(分数:3.00)A.100B.同学们 200C.你们好! 500D.600 解析:解析 在子程序中,X、Y、Z 被重新赋值。此时 X+Y+Z=100+200+300600。(3).调完子程序后,主程序中 X 的输出结果为 _。(分数:3.00)A.100B.同学们 C.300D.你们好!解析:解析 在主程序中,X 是公用属性的内存变量,
32、在调用子程序时,X 为私有属性的内存变量,因此主程序中 X 变量被隐藏起来,即保持其原有的值,不受子程序中同名变量的影响。所以调完子程序后,X仍为字符串“同学们”。(4).调完子程序后,主程序中 Y 的输出结果为 _。(分数:3.00)A.100B.200 C.300D.你们好!解析:解析 在主程序中,Y 是公用属性的内存变量。变量 Y 在子程序已改变值为 200,返回主程序后,Y 值为子程序中的值 200。(5).调完子程序后,主程序中 Z 的输出结果为 _。(分数:3.00)A.100B.200C.300 D.你们好!解析:解析 Z 在子程序中被定义公用属性的内存变量,则在主程序中也可共享
33、公用属性的内存变量 Z。所以主程序中的 Z 值即是子程序中的 Z 值。六、B试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFDIMENSION A(6)FOR K1 TO 6A(K)=303*KENDFORK5DO WHILE K1A(K)=A(K)A(K+1)KK1ENDDO? A(1),A(2),A(4),A(6)SET TALK ONRETURN(分数:12.00)(1).A(1)的输出结果为 _。(分数:3.00)A.24B.15C.27D.9 解析:(2).A(2)的输出结
34、果为_。(分数:3.00)A.24B.18 C.27D.9解析:(3).A(4)的输出结果为 _。(分数:3.00)A.24B.18C.15 D.12解析:(4).A(6)的输出结果为 _。(分数:3.00)A.24B.18C.15D.12 解析:解析 开始数组被赋值后,A(1)27,A(2)=24,A(3)=21,A(4)=18,A(5)=15,A(6)=12。进入 DO WHILE 后,数组又被重新赋值,当 K=5 时,A(5)A(5)A(6)1512=3,当 K4 时,A(4)= A(4)A(5)183=15,当 K3 时,A(3)=A(3)A(4)2115=6,当 K2 时,A(2)A
35、(2)A(3) =246=18时,当 K=2 时,A(2)A(2)A(3)246=18,当 K=1 时,A(1)=A(1)A(2) 27189。 所以最后A(1)=9,A(2)=18,A(3)=6,A(4)15,A(5)=3,A(6)=12。七、B试题 7/B(总题数:1,分数:14.00)1.编写程序,输入三角形的边长,求三角形的面积。(分数:14.00)_正确答案:()解析:程序代码如下: SET TALK OFF CLEAR INPUT “请输入三角形第一边长值:” TO A INPUT“请输入三角形第二边长值:” TO B INPUT“请输入三角形第三边长值:” TO C S=(A+B
36、+C)/2 AREASQRT(S*(SA)*(SB)*(SC) ?“三角形面积= ”,AREA SET TALK ON RETURN八、B试题 8/B(总题数:1,分数:14.00)2.某表单上有两个命令按钮 Command1 和 Command2。要求:(1)若单击 Command1 命令按钮,程序将当前表的记录指针上移一位,并刷新表单中所有的值;其中,若指针已处于文件的首记录,则将其自身(Command1 命令按钮)设置为不能被激活状态。(2)若单击 Command2 命令按钮,程序将当前表的记录指针下移一位,并刷新表单中所有的值;其中,若指针已处于文件的末记录,则将其自身(Command2 命令按钮)设置为不能被激活状态。(分数:14.00)_正确答案:()解析:编写 CommaNd1 的 Click 事件代码如下: ThisForm. Command2. Enabled= .T. SKIP 1 IF BOF() GO TOP This. Enabled=.F. ENDIF ThisForm. Refresh Command2 的 Click 事件代码如下: ThisForm. Command1. Enabled. =.T. SKIP IF EOF() GO BOTTOM This. Enabled.F. ENDIF ThisForm. Refresh