1、浙江二级 VISUAL+FOXPRO-2 及答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 程序功能是计算 110 的阶乘。【程序】SET TAIK OFFCLEARN1DO WHILE N11Y=1U (1) /U? STR (N,2)+“的阶乘是:”+STR (Y,8)U (2) /UENDDOSET TAIK ONRETURNU(3) /UPARAMETERS N,YIF N1DO FP WITH N-1,YU (4) /UENDIFRETURN(分
2、数:12.00)A.DO FP WITH N-1,YB.DO FP WITH N,Y-1C.DO FP WITH N,YD.DO FP WITH N-1,Y-1A.N=Y+1B.N=N+1C.N=N-1D.N=Y-1A.PARA FPB.PRIVATE FPC.PUBLIC FPD.PROCEDURE FPA.Y=N*YB.YN+YC.YND.Y=(N-1)* Y二、B试题 2/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 下列输出乘法口诀的程序,要求输出的格式如下,其中数字之间有 3 个空格。* 1 2 3 4 5 6
3、 7 8 91 12 2 43 3 6 94 4 8 12 165 5 10 15 20 25 6 6 12 18 24 30 367 7 14 21 28 35 42 478 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81【程序】CLEARSET TALK OFFU(5) /UA1DO WHILE A=9? STR(A,4)AA+1ENDDOA=U (6) /UDO WHILE A=9? STR(A,4)B1DO WHILE BAP=U (7) /U? STR(P,4)B=B+1ENDDOA=U (8) /UENDDOSET TALK ON
4、RETURN(分数:12.00)A.?“*”B.? SPACE(3) +“*”C.? SPACE (3)+*D.SPACE(3) +“*”A.0B.1C.2D.3A.(A-1)*(B-1)B.A-1C.(A-1)*BD.A*BA.A+1B.A-1C.A*BD.(A-1)*B三、B试题 3/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 如下图所示,设计一个可供逐条记录翻页查看职工档案表(ZGDA. DBF)内容的表单,首先打开表单设计器,采用“快速表单”方法,在该表单的数据环境中加入 ZGDA 表,并完成表单布局;然后在表
5、单的下方添加命令按钮组,依次包括:“上页”、“下页”、“退出”3 个按钮。【程序】命令按钮组 Click 事件的程序代码如下:DO CASECASE This. Value1U(9) /UIF BOF ()GO BOTTENDIFThisForm. RefreshCASE This. Value=2U(10) /UIF EOF()GO TOPENDIFU (11) /UCASE This. Value3U(12) /UENDCASE(分数:12.00)A.SKIP-1B.SKIPC.GO BOTTD.GO TOPA.SKIP-1B.SKIPC.GO BOTTD.GO TOPA.ThisFor
6、ReleasB.ThiReleaseC.ThiRefreshD.ThisFor RefreshA.ThisForRefreshB.Thi ReleaseC.ThisFor ReleaseD.ThiRefresh四、B试题 4/B(总题数:1,分数:12.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 涉及到的库文件 SJK.DBF 如下:record# BH(N 型) XM(C 型) XB(C 型) CS(D 型) ZF(N 型) ZXJ(N 型) 1 080102 王五 男 88/06/08 586.00 99.00 2 08020
7、1 李四 女 89/08/09 532.00 81.00 3 080202 张三 男 90/05/06 618.00 116.00 4 080101 赵六 女 91/07/08 609.00 103.00 5 080103 孙月 女 89/06/23 589.00 72.00【程序】* 主程序SET TALK OFFUSE SJKZZF=0SCAN FOR XB“男” &ZZFZZF+ZFENDSCAN? ZZFUSESET TALK ONRETURN(分数:12.00)(1).程序的运行结果为 _。(分数:3.00)A.586.00B.532.00C.1204.00D.1720.00(2).
8、若将输出语句“? ZZF”和“ENDSCAN”调换一下位置,则程序运行结果为 _。(分数:3.00)A.586.00 1204.00B.586.00 1204.00C.532.00 1720.00D.53200 1204.00(3).若将带有“&”标注的语句改成 SCAN WHILE XB“男”,则程序运行结果为 _。(分数:3.00)A.586.00B.532.00C.1204.00D.1720.00(4).若将带有“&”标注的语句改成 SCAN WHILE XB=“男”,且输出语句“?ZZF”和“ ENDSCAN”调换一下位置,则程序运行结果为 _。(分数:3.00)A.586.00B.5
9、32.00C.1204.00D.1720.00五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARPUBLIC X,YX5Y=3DO SUB? X,YSET TALK ONRETURNPROCEDURE SUBPRIVATE XX1X=X*2+1Y=5RETURN(分数:12.00)(1).X 的输出结果为 _。(分数:3.00)A.5B.6C.8D.3(2).Y 的输出结果为 _。(分数:3.00)A.5B.6C.8D.3(3).若将子过程 SUB 中的 PRIVATE
10、 X 改为 PRIVATE Y,则 X 的输出结果为 _。(分数:3.00)A.5B.11C.8D.3(4).若将子过程 SUB 中的 PRIVATE X 改为 PRIVATE Y,则 Y 的输出结果为 _。(分数:3.00)A.5B.11C.8D.3六、B试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFS0I1DO WHILE I4ACCEPT “请输入字符串:”TO XIF“A” XSS+1ENDIFII+1 ENDDO? SRETURN(分数:12.00)(1).运行时输入:“
11、abcd”、“aBCD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1D.0(2).运行时输入:“abcd”、“ABGD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1D.0(3).运行时输入:“abcd”、“ABCD”、“aBcD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1D.0(4).运行时输入:“abcd”、“ABCD”、“ABcD”;“abcD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1D.0七、B试题 7/B(总题数:1,分数:14.00)1.编写程序,一球从 100 米高度落下,每次落地后反弹高度为上一次高度的一半。求
12、该球第 10 次落地时所经过的总路程(保留两位小数)。(分数:14.00)_八、B试题 8/B(总题数:1,分数:14.00)2.编写程序,求“学生”表中指定班级(如 071 或 073,学号字段的前 3 个字符表示班级)的男、女学生的奖学金总额。(分数:14.00)_浙江二级 VISUAL+FOXPRO-2 答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 程序功能是计算 110 的阶乘。【程序】SET TAIK OFFCLEARN1DO WHILE N1
13、1Y=1U (1) /U? STR (N,2)+“的阶乘是:”+STR (Y,8)U (2) /UENDDOSET TAIK ONRETURNU(3) /UPARAMETERS N,YIF N1DO FP WITH N-1,YU (4) /UENDIFRETURN(分数:12.00)A.DO FP WITH N-1,YB.DO FP WITH N,Y-1C.DO FP WITH N,Y D.DO FP WITH N-1,Y-1解析:解析 从整个程序结构上看,主程序中每给 N 赋一个值,就调用过程求出该 N 值的阶乘,并通过 Y 返回该阶乘的结果,因此第一个填空处应是调用过程语句。从过程中语句“
14、DO FP WITH N-1,Y”可判断出在过程中是通过递归调用(过程在执行中自己调用自己)实现对阶乘的运算,因此推断出过程名为“FP”。程序中第(1)处填空应是“DO FP WITH N,Y”。A.N=Y+1B.N=N+1 C.N=N-1D.N=Y-1解析:解析 本题功能是使变量 N 的值依次代替从 2 到 10 的整数,即对 N 的下一个数进行处理,所以 NN+1。A.PARA FPB.PRIVATE FPC.PUBLIC FPD.PROCEDURE FP 解析:解析 语句“PARAMETERS .”前应该是定义过程的开始语句“PROCEDURE FP“。A.Y=N*Y B.YN+YC.Y
15、ND.Y=(N-1)* Y解析:解析 从过程结构看,过程中最后的运算语句应该是阶乘的具体算法公式,所以该语句是“Y=Y*N”。二、B试题 2/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 下列输出乘法口诀的程序,要求输出的格式如下,其中数字之间有 3 个空格。* 1 2 3 4 5 6 7 8 91 12 2 43 3 6 94 4 8 12 165 5 10 15 20 25 6 6 12 18 24 30 367 7 14 21 28 35 42 478 8 16 24 32 40 48 56 649 9 18 27
16、 36 45 54 63 72 81【程序】CLEARSET TALK OFFU(5) /UA1DO WHILE A=9? STR(A,4)AA+1ENDDOA=U (6) /UDO WHILE A=9? STR(A,4)B1DO WHILE BAP=U (7) /U? STR(P,4)B=B+1ENDDOA=U (8) /UENDDOSET TALK ONRETURN(分数:12.00)A.?“*”B.? SPACE(3) +“*” C.? SPACE (3)+*D.SPACE(3) +“*”解析:解析 本程序是显示乘法口诀表,首先要在左上方显示乘号“*”。可以判断第一个空白处应该是显示“*
17、”号,为了和下面的数据对齐,在“*”前要有 3 个空格。因此第(5)处填空是? SPACE(3)+“*”。A.0B.1 C.2D.3解析:A.(A-1)*(B-1)B.A-1C.(A-1)*BD.A*B 解析:解析 程序中第一个循环的结果是显示第一个的数字 19,第二个循环是针对最左边一列数字,计算每一行从左到右的数值。由此可见,第二个循环的外循环是显示最左边的一个值,内循环是计算并显示该行对应最左边值的后续数字。所以第二个循环外 A 的初值应是 1,第二个循环的内循环 P 的值应是A*B。A.A+1 B.A-1C.A*BD.(A-1)*B解析:解析 当内循环结束时,应该针对最左边的下一个数进
18、行该行后续数的处理,因此第(8)个空应是 A+1。三、B试题 3/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 如下图所示,设计一个可供逐条记录翻页查看职工档案表(ZGDA. DBF)内容的表单,首先打开表单设计器,采用“快速表单”方法,在该表单的数据环境中加入 ZGDA 表,并完成表单布局;然后在表单的下方添加命令按钮组,依次包括:“上页”、“下页”、“退出”3 个按钮。【程序】命令按钮组 Click 事件的程序代码如下:DO CASECASE This. Value1U(9) /UIF BOF ()GO BOTTEN
19、DIFThisForm. RefreshCASE This. Value=2U(10) /UIF EOF()GO TOPENDIFU (11) /UCASE This. Value3U(12) /UENDCASE(分数:12.00)A.SKIP-1 B.SKIPC.GO BOTTD.GO TOP解析:解析 查找上一条记录,STEP 步长为-1。A.SKIP-1B.SKIP C.GO BOTTD.GO TOP解析:解析 查找下一条记录,STEP 步长为 1 或省略。A.ThisFor ReleasB.ThiReleaseC.ThiRefreshD.ThisFor Refresh 解析:解析 Th
20、is:表示对当前对象的引用。ThisForm:表示对当前表单的引用。从上一个 CASE 分支的同一个位置可知本语句用到表单的 Refresh 方法来刷新记录。A.ThisForRefreshB.Thi ReleaseC.ThisFor Release D.ThiRefresh解析:解析 退出系统用表单中的 Release 方法。四、B试题 4/B(总题数:1,分数:12.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 涉及到的库文件 SJK.DBF 如下:record# BH(N 型) XM(C 型) XB(C 型) CS(D 型)
21、ZF(N 型) ZXJ(N 型) 1 080102 王五 男 88/06/08 586.00 99.00 2 080201 李四 女 89/08/09 532.00 81.00 3 080202 张三 男 90/05/06 618.00 116.00 4 080101 赵六 女 91/07/08 609.00 103.00 5 080103 孙月 女 89/06/23 589.00 72.00【程序】* 主程序SET TALK OFFUSE SJKZZF=0SCAN FOR XB“男” &ZZFZZF+ZFENDSCAN? ZZFUSESET TALK ONRETURN(分数:12.00)(1
22、).程序的运行结果为 _。(分数:3.00)A.586.00B.532.00C.1204.00 D.1720.00解析:解析 本小题用 SCAN 语句将数据库文件中性别为“男”的记录的总分字段“ZF”值进行累加,最后显示累加值。(2).若将输出语句“? ZZF”和“ENDSCAN”调换一下位置,则程序运行结果为 _。(分数:3.00)A.586.00 1204.00B.586.00 1204.00 C.532.00 1720.00D.53200 1204.00解析:解析 若将“? ZZF”放在“ENDSCAN”的上方,当第一次查找“男”的记录就输出一次“ZF”值,第二次查找输出“ZF”值的累加
23、。?表示换行输出语句。(3).若将带有“&”标注的语句改成 SCAN WHILE XB“男”,则程序运行结果为 _。(分数:3.00)A.586.00 B.532.00C.1204.00D.1720.00解析:解析 采用条件子句 WHILE,SCAN- ENDSCAN 结构中,隐含执行 SKIP 语句。在没有打开任何索引文件的情况下,第一次执行循环体之后,隐含的 SKIP 将记录指针跳到第二条记录,该记录性别为“女”,不满足 WHILE 的条件,WHILE 的特点是一遇到不满足条件的记录便停止操作,从而置 EOF()为.T.,退出循环。(4).若将带有“&”标注的语句改成 SCAN WHILE
24、 XB=“男”,且输出语句“?ZZF”和“ ENDSCAN”调换一下位置,则程序运行结果为 _。(分数:3.00)A.586.00 B.532.00C.1204.00D.1720.00解析:解析 本小题与第(15)题的不同之处在于:第(15)题是先退出循环体,后输出 ZF。本小题是先输出 ZF,后退出循环体。五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARPUBLIC X,YX5Y=3DO SUB? X,YSET TALK ONRETURNPROCEDURE SUBP
25、RIVATE XX1X=X*2+1Y=5RETURN(分数:12.00)(1).X 的输出结果为 _。(分数:3.00)A.5 B.6C.8D.3解析:(2).Y 的输出结果为 _。(分数:3.00)A.5 B.6C.8D.3解析:解析 主程序中定义了公用属性的内存变量 X 和 Y,在调用子程序时,由于子程序中 X 为私有属性的内存变量,而主程序中的公用属性的内存变量 X 被隐藏起来,即保持原来的值,不再受子程序中同名变量的影响,而公用属性的内存变量 Y 的值已经变为在子程序中改变过的值。所以最后 X、Y 值均为 5。(3).若将子过程 SUB 中的 PRIVATE X 改为 PRIVATE
26、Y,则 X 的输出结果为 _。(分数:3.00)A.5B.11C.8D.3 解析:(4).若将子过程 SUB 中的 PRIVATE X 改为 PRIVATE Y,则 Y 的输出结果为 _。(分数:3.00)A.5B.11C.8D.3 解析:解析 若将 PRIVATE X 改为 PRIVATE Y,则 Y 在子程序中成为私有属性的内存变量,即仍保持原来的值。X 为公有属性的内存变量,X 的值已经变为在子程序改变过的值即 X3。六、B试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFS0I
27、1DO WHILE I4ACCEPT “请输入字符串:”TO XIF“A” XSS+1ENDIFII+1 ENDDO? SRETURN(分数:12.00)(1).运行时输入:“abcd”、“aBCD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1D.0 解析:解析 字符串包含运算符()的格式:字符串 1字符串 2 功能:当字符串 2包含字符串 1,其值为.T.;当字符串 2不包含字符串 1,其值为.F.。 本程序段的功能是输入的字符串包含“A”的个数。字符串“abcd”不包含“A”,“aBCD”也不包含“A”,所以不执行 IF 语句,故 S 为 0。(2).运行时输入:“abcd
28、”、“ABGD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1 D.0解析:解析 字符串“ABCD”包含“A”,当输入“ABCD”时执行 IF 语句,所以 S=S+1=0+1=1。(3).运行时输入:“abcd”、“ABCD”、“aBcD”,输出 S 的值为 _。(分数:3.00)A.3B.2C.1 D.0解析:解析 当输入“abcd”和“aBCD”时不执行 IF 语句,而输入“ABCD”时执行 IF 语句,所以S1。(4).运行时输入:“abcd”、“ABCD”、“ABcD”;“abcD”,输出 S 的值为 _。(分数:3.00)A.3B.2 C.1D.0解析:解析 当输入“a
29、bcd”和“aBCD”时不执行 IF 语句,而输入“ABCD”和“ABcD”时,各执行一次IF 语句,所以 S2。七、B试题 7/B(总题数:1,分数:14.00)1.编写程序,一球从 100 米高度落下,每次落地后反弹高度为上一次高度的一半。求该球第 10 次落地时所经过的总路程(保留两位小数)。(分数:14.00)_正确答案:()解析:程序代码如下: CLEAR SET TALK OFF h100 5100 FOR i2 TO 10 hh/2 ss+ h* 2 ENDFOR ? ROUND(s,2)八、B试题 8/B(总题数:1,分数:14.00)2.编写程序,求“学生”表中指定班级(如
30、071 或 073,学号字段的前 3 个字符表示班级)的男、女学生的奖学金总额。(分数:14.00)_正确答案:()解析:程序代码如下: SET TALK OFF CLEAR USE 学生 ACCEPT“输入指定的班级(如:071 或 073):”TO BJ LOCATE FOR LEFT(学号,3)=BJ IF FOUND() SUM 奖学金 TO JXJ1 FOR LEFT (学号,3)=BJ AND 性别 SUM 奖学金 TO JXJ2 FOR LEFT (学号,3)BJ AND ! 性别 ? BJ+“班全体男学生的奖学金总额为:”+STR (JXJ1,5,2) ? BJ+“班全体女学生的奖学金总额为:”+STR (JXJ2,5,2) ELSE ?“指定班级不存在!” ENDIF USE SET TALK ON