1、浙江二级 VISUAL+FOXPRO-3 及答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 下面为显示 SJK.DBF 中 1989 年 6 月 8 日出生的第一个学生记录的程序,其中,出生年月字段为 CS,索引文件为 INDS.IDX。【程序】SET TALK OFFUSE SJKU(1) /UU(2) /UIFU (3) /UDISPLAYELSE?“没有符合条件的记录”ENDIFUSEU(4) /URETURN(分数:12.00)A.INDEX ON
2、 INDS OF SJKB.INDEX ON INDS TO SJKC.INDEX ON CS TO INDSD.INDEX ON CS OF INDSA.SEEK CTOD(“89/06/08“)B.SEEK(“89/06/08“)C.SEEK DTOC(“89/0S/08“)D.SEEK YEAR(“89/06/08“)AB.FOUND()CD.FCOUND()A.TURN TALK OFFB.TURN TALK ONC.TURN OND.SET TALK ON二、B试题 2/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说
3、明】 程序功能是求 1 到 100 之间的所有素数。【程序】SET TALK OFFCLEARJ=2DO WHILE J100I2DO WHILE U(5) /UIF MOD(J,I)0U (6) /UENDIFII+1ENDDOIF U(7) /U?JENDIFJ=J+1U(8) /USET TALK ONRETURN(分数:12.00)A.IJB.IJC.IJD.IJA.EXITB.ENDC.ENDDOD.ENDWHILEA.IINT(J/2)B.IINT(J/2)C.I=INT(J/2)D.IJ/2A.EXITB.ENDC.ENDDOD.ENDWHILE三、B试题 3/B(总题数:1,分
4、数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 设成绩库 CJK.DBF 中,“数学”(数值型字段)这门课程的学分为4,其学分算的方法如下:数学=90,学分值为 480数学90,学分值为 370=数学80,学分值为 260数学70,学分值为 1数学60,学分值为 0计算任一学生数学这门课程的学分值。【程序】SET TALK OFFUSE CJKACCEPT“输入学号:”TO XHXF0U(9) /UDO CASECASE U(10) /UXH=4CASE U(11) /UXH3CASE U(12) /UXF=2CASE 数学=60XF1OT
5、HERWISEXF0ENDCASE?“学号:”,XH?“数学的学分值:”,XFUSERETURN(分数:12.00)A.LOCATE FOR 学号=XHB.SEEK FOR 学号=XHC.FIND FOR 学号=XHD.CONTINUEA.数学90B.数学=80C.数学=70D.数学60A.数学90B.数学80C.数学90D.数学=60A.数学=90B.数学80C.数学70D.数学=60四、B试题 4/B(总题数:1,分数:15.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 本试题用到学生数据库文件(学生.DBF):结构:学号 姓名
6、 性别 出生年月 简历 奖学金 照片C,6 C,8 L,1 D,8 M,4 N,6,2 G,4记录;记录号# 学号 姓名 性别 出生年月 简历 奖学金 照片1 971001 王平 .F. 05/06/89 memo 50.00 gen2 971003 李华 .F. 01/23/90 memo 25.00 gen3 974006 张小强 .T. 07/21/89 memo 0.00 gen4 973008 赵峰 .T. 11/05/88 memo 75.00 gen5 974011 丁超 .T. 09/27/91 memo 0.00 gen6 973013 罗浩 .T. 09/09/90 mem
7、o 50.00 gen(注:性别.F.为女,性别=.T.为男,学号前三位为班级号)【程序】USE 学生? RECNO(),BOF() &.第一个显示LIST? RECNO(),EOF() & 第二个显示GO TOP? RECNO(),EOF() & 第三个显示SKIP1? RECNO(),BOF & 第四个显示SKIP 22? RECNO(),BOF() & 第五个显示(分数:15.00)(1).第一个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.1.C.7.D.1.(2).第二个显示? RECNO(),EOF()的值为 _。(分数:3.00)A.1.B.7.C.
8、7.D.1.(3).第三个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.7.C.7.D.1.(4).第四个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.7.C.7.D.1.(5).第五个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.7.C.7.D.1.五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARSTORE 0 TO A,BDO WHILE.T.A=A+1DO CASECASE
9、 INT (A/3)=A/3LOOPCASE A6EXITOTHERWISEB=B+AENDCASEENDDO? A,BSET TALK ON(分数:12.00)(1).A 的输出结果为 _。(分数:3.00)A.5B.6C.7D.8(2).B 的输出结果为_。(分数:3.00)A.5B.10C.12D.15(3).若将 DO WHILE.T.改为 DO WHILE.F.时,A 的输出结果为_。(分数:3.00)A.0B.7C.6D.15(4).若将 DO WHIE.T. 改为 DO WHILE. F.时,B 的输出结果为_。(分数:3.00)A.0B.7C.6D.15六、B试题 6/B(总题
10、数:1,分数:9.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* 主程序SET TALK OFFCLEARSTORE 100 TO X,Y,ZSET PROCEDURE TO GC1DO PROCl WITH X,Y? X,Y,ZSET PR()CEDURE TOSET TALK ONRETURN* 过程PROCEDURE PROC1PARAMETER M,NM=M+100NN+100RETURN(分数:9.00)(1).X 的输出结果为 _。(分数:3.00)A.100B.200C.300D.400(2).Y 的输出结果为 _。(分数:3
11、.00)A.100B.200C.300D.400(3).Z 的输出结果为 _。(分数:3.00)A.100B.200C.300D.400七、B试题 7/B(总题数:1,分数:14.00)1.编程求 1001000 之间能同时 3 和 7 整除的数的个数。(分数:14.00)_八、B试题 8/B(总题数:1,分数:14.00)2.设计一个表单(如下图所示),判断一个正数是不是素数。 要求:在文本框中输入一个正数,单击“确定”按钮后显示结果,单击“退出”按钮释放表单。 控件的主要属性: Labe11. Caption“请输入一个正数:” Labe12.Caption=“判断结果:” Command
12、1. Caption“确定” Command2. Caption=“退出” Text1.Value2 (分数:14.00)_浙江二级 VISUAL+FOXPRO-3 答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 下面为显示 SJK.DBF 中 1989 年 6 月 8 日出生的第一个学生记录的程序,其中,出生年月字段为 CS,索引文件为 INDS.IDX。【程序】SET TALK OFFUSE SJKU(1) /UU(2) /UIFU (3) /UDIS
13、PLAYELSE?“没有符合条件的记录”ENDIFUSEU(4) /URETURN(分数:12.00)A.INDEX ON INDS OF SJKB.INDEX ON INDS TO SJKC.INDEX ON CS TO INDS D.INDEX ON CS OF INDS解析:解析 本程序是根据某出生日期查找记录,因此索引的字段应该是有关出生年月日的字段,在该库文件中是 CS 字段。建立单项索引文件的格式;INDEX ON索引表达式TO文件名U NIQUECOMPACTADDITIVEA.SEEK CTOD(“89/06/08“) B.SEEK(“89/06/08“)C.SEEK DTOC
14、(“89/0S/08“)D.SEEK YEAR(“89/06/08“)解析:解析 SEEK 后的查找内容应是索引字段的值,也就是指定的“1989 年 6 月 8 日”,用语句应表示为 CTOD(“89/06/08”)。CTODO 函数功能是将字符串转换成日期。DTOC()函数功能是将日期转换成字符中。YEAR()函数返回年份。AB.FOUND() CD.FCOUND()解析:解析 程序中 IF 语句后是显示记录内容命令 DISPLAY,因此 IF 后的条件应该是表示是否查找到,用 FOUND()。 FCOUNT()函数功能是返回指定工作区中所打开表的字段数。A.TURN TALK OFFB.T
15、URN TALK ONC.TURN OND.SET TALK ON 解析:解析 首句 SET TALK OFF 是关闭对话显示。SET TALK ON 是恢复对话显示。二、B试题 2/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 程序功能是求 1 到 100 之间的所有素数。【程序】SET TALK OFFCLEARJ=2DO WHILE J100I2DO WHILE U(5) /UIF MOD(J,I)0U (6) /UENDIFII+1ENDDOIF U(7) /U?JENDIFJ=J+1U(8) /USET TAL
16、K ONRETURN(分数:12.00)A.IJB.IJC.IJD.IJ 解析:A.EXIT B.ENDC.ENDDOD.ENDWHILE解析:A.IINT(J/2)B.IINT(J/2) C.I=INT(J/2)D.IJ/2解析:解析 素数是只能被自己和 1 整除的数。该程序的指导思想是:变量 J 从 2 增加到 100(1 既不是素数也不是合数,所以直接从 2 开始),是外层循环所做的工作,变量 J 每增加 1,在循环体中判断本次循环的 J 是否是素数,然后加 1。如何去判断 1 是否是素数?如果 J 最先遇到的能整除的数(除了 1 以外)比 J 的一半还大,这个能整除的数肯定是 J 自己
17、,那么此时的 J 是素数。在内循环,被除数 I,最大也不能超过 J,所以第(5)空是 I=J。在循环体内,如果找到第一个能够整除 J 的 I,此时要退出内循环,其余的 I 不用再参与循环了。剩下的工作就只需要判断 I 是比 J 的一半大,还是比 J 的一半小。如果大,则J 是素数,如果小,则 J 不是素数。综上分析,第(6)个空和第(7)个空分别填 EXIT 和 IINT(J/2)。A.EXITB.ENDC.ENDDO D.ENDWHILE解析:解析 在 Visual FoxPro 中有 3 种循环语句;DO WHILE ENDDO,SCAN ENDSCAN 和 FOR ENDFOR。三、B试
18、题 3/B(总题数:1,分数:12.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 设成绩库 CJK.DBF 中,“数学”(数值型字段)这门课程的学分为4,其学分算的方法如下:数学=90,学分值为 480数学90,学分值为 370=数学80,学分值为 260数学70,学分值为 1数学60,学分值为 0计算任一学生数学这门课程的学分值。【程序】SET TALK OFFUSE CJKACCEPT“输入学号:”TO XHXF0U(9) /UDO CASECASE U(10) /UXH=4CASE U(11) /UXH3CASE U(12) /UXF=2CA
19、SE 数学=60XF1OTHERWISEXF0ENDCASE?“学号:”,XH?“数学的学分值:”,XFUSERETURN(分数:12.00)A.LOCATE FOR 学号=XH B.SEEK FOR 学号=XHC.FIND FOR 学号=XHD.CONTINUE解析:解析 顺序查找命令的格式:LOCATE FOR条件WHILE条件范围。功能;按表的排列顺序依次搜索满足条件的第一条记录。A.数学90 B.数学=80C.数学=70D.数学60解析:A.数学90B.数学80 C.数学90D.数学=60解析:A.数学=90B.数学80C.数学70 D.数学=60解析:解析 第(10)、(11)和(1
20、2)题是考核 DO CASE 分支语句。再结合题意,能很容易得出此三小题的答案。四、B试题 4/B(总题数:1,分数:15.00)阅读下列程序说明和程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 本试题用到学生数据库文件(学生.DBF):结构:学号 姓名 性别 出生年月 简历 奖学金 照片C,6 C,8 L,1 D,8 M,4 N,6,2 G,4记录;记录号# 学号 姓名 性别 出生年月 简历 奖学金 照片1 971001 王平 .F. 05/06/89 memo 50.00 gen2 971003 李华 .F. 01/23/90 memo 25.00 ge
21、n3 974006 张小强 .T. 07/21/89 memo 0.00 gen4 973008 赵峰 .T. 11/05/88 memo 75.00 gen5 974011 丁超 .T. 09/27/91 memo 0.00 gen6 973013 罗浩 .T. 09/09/90 memo 50.00 gen(注:性别.F.为女,性别=.T.为男,学号前三位为班级号)【程序】USE 学生? RECNO(),BOF() &.第一个显示LIST? RECNO(),EOF() & 第二个显示GO TOP? RECNO(),EOF() & 第三个显示SKIP1? RECNO(),BOF & 第四个显
22、示SKIP 22? RECNO(),BOF() & 第五个显示(分数:15.00)(1).第一个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.1.C.7.D.1. 解析:解析 RECNO()返回工作区中当前的记录号。BOF()表头测试函数的格式:BOF(工作区号/别名)。功能当记录指针指向表文件的首记录之前(表头)时,该函数值为.T.,否则返回.F.。输出值类型为逻辑型。工作区号/别名)用于指定工作区,缺省为当前工作区。EOF()表尾测试函数的格式;EOF(工作区号/别名)。功能:当记录指针指向表文件的末记录之后(表尾)时,该函数值为.T.,否则返回.F.。输出值
23、类型为逻辑值。工作区号/别名用于指定工作区,缺省为当前工作区(2).第二个显示? RECNO(),EOF()的值为 _。(分数:3.00)A.1.B.7. C.7.D.1.解析:解析 做完了 LIST 命令后指针移到了文件尾。若记录指针移到文件尾,则 RECNO()=记录数 +1 且 EOF ()=.T.。(3).第三个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.7.C.7.D.1. 解析:解析 指针移到首记录,即指向第一条记录。(4).第四个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1. B.7.C.7.D.1.解析:解析 当指针指向
24、第一条记录时,再执行 SKIP-1 命令,此时,记录号仍为首记录号。且 BOF 为.T.。(5).第五个显示? RECNO(),BOF()的值为 _。(分数:3.00)A.1.B.7. C.7.D.1.解析:解析 当指针移到文件尾后不再下移。五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARSTORE 0 TO A,BDO WHILE.T.A=A+1DO CASECASE INT (A/3)=A/3LOOPCASE A6EXITOTHERWISEB=B+AENDCASE
25、ENDDO? A,BSET TALK ON(分数:12.00)(1).A 的输出结果为 _。(分数:3.00)A.5B.6C.7 D.8解析:(2).B 的输出结果为_。(分数:3.00)A.5B.10C.12 D.15解析:解析 本程序执行时,当 A=6 时,既满足第一个条件“被 3 整除”,也满足第二个条件“大于等于 6”,但此时应执行第一个 CASE 语句中的 LOOP 语句。当 A7 时,才退出循环,B 的值等于不满足前两个条件的 A 的总和,即等于 1+2+4+5=12。(3).若将 DO WHILE.T.改为 DO WHILE.F.时,A 的输出结果为_。(分数:3.00)A.0
26、B.7C.6D.15解析:(4).若将 DO WHIE.T. 改为 DO WHILE. F.时,B 的输出结果为_。(分数:3.00)A.0 B.7C.6D.15解析:解析 当 DOWHILE.F.时,循环条件值为假,则不执行循环体。直接输 A、B 值,它们的值为初值0。六、B试题 6/B(总题数:1,分数:9.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* 主程序SET TALK OFFCLEARSTORE 100 TO X,Y,ZSET PROCEDURE TO GC1DO PROCl WITH X,Y? X,Y,ZSET PR()CE
27、DURE TOSET TALK ONRETURN* 过程PROCEDURE PROC1PARAMETER M,NM=M+100NN+100RETURN(分数:9.00)(1).X 的输出结果为 _。(分数:3.00)A.100B.200 C.300D.400解析:(2).Y 的输出结果为 _。(分数:3.00)A.100B.200 C.300D.400解析:(3).Z 的输出结果为 _。(分数:3.00)A.100 B.200C.300D.400解析:解析 程序运行的开始,X、Y、Z 的值均为 100,当主程序调用 PROC1 过程时,将 X 的值 100 传递给过程中的 M,将 Y 的值 1
28、00 传递给过程中的 N。接着执行子过程中的语句,处理结果 M 值为 200,N 的值为 200。在过程执行结束返回主程序时,将 M 的值 200 反传给主程序中的 X,将 N 的值 200 反传给主程序中的 Y。因此主程序中 X 的结果是 200,Y 的结果也是 260,而 Z 值没有变,仍然是原值 100。七、B试题 7/B(总题数:1,分数:14.00)1.编程求 1001000 之间能同时 3 和 7 整除的数的个数。(分数:14.00)_正确答案:()解析:CLEAR SET TALK OFF n=0 FOR I= 100 TO 1000 IF 1%3=0 ANDI%7=0 nn+1
29、 ENDIF ENDFOR ? n八、B试题 8/B(总题数:1,分数:14.00)2.设计一个表单(如下图所示),判断一个正数是不是素数。 要求:在文本框中输入一个正数,单击“确定”按钮后显示结果,单击“退出”按钮释放表单。 控件的主要属性: Labe11. Caption“请输入一个正数:” Labe12.Caption=“判断结果:” Command1. Caption“确定” Command2. Caption=“退出” Text1.Value2 (分数:14.00)_正确答案:()解析:(1)编写 Text1 的 GotFocus 事件代码如下: THISFORM. Labe12.Caption=“判断结果:” (2)编写Command1 的 Click 事件代码如下: FOR I=2 TO THISFORM. Tcxt1. Value-1 IF THISFORM. Text1. Value %I0 THISFORM. Labe12. Caption“判断结果:不是素数” RETURN ENDIF ENDFOR THISFORM. Labe12. Caption“判断结果:是素数” (3)编写 Command2 的 Click 事件代码如下: THISFORM. Release