1、浙江计算机二级 VF-试卷 7 及答案解析(总分:52.00,做题时间:90 分钟)一、程序阅读选择题(总题数:8,分数:48.00)1.程序阅读选择题阅读下列程序说明并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。_【程序说明】程序功能是计算一个整数的各位数字之和。【程序】SET TALK OFFINPUT“x”TO xs0DO WHILE x!=0 ss+ MOD(x,10) (1) (2)? SSET TALK ON(分数:4.00)A.xINT(x*10)B.xINT(x/10)C.xx-INT(x/10)D.xx-INT(x*10)A.ENDFORB.ENDCASEC.E
2、XITD.ENDDO【程序说明】假设用户名和口令存储在自由表“口令表”中,当用户输入用户名和口令并单击“登录”按钮时,若用户名输入错误,则提示“用户名错误”;若用户名输入正确,而口令输入错误,则提示“口令错误”。命令按钮“登录”的 Click 事件中的代码如下。【程序】USE 口令表 GO TOPflag0DO WHILE (3) IF Alltrim (用户名)= Alltrim(Thisform. Text1. Value) IF Alltrim (口令)Alltrim(Thisform. Text2,Value) WAIT“欢迎使用”WINDOW TTMEOUT2 ELSE WATT“口
3、令错误” WINDOW TIMEOUT2 ENDIF flag1 EXIT ENDIF SKIFENDDOIF (4) WAIT“用户名错误”WINDOW TIMEOUT2ENPIF(分数:4.00)A.BOF()BNOT.BOF()C.EOF()DNOT.EOF()A.flag1B.flag0C.flagTRUED.flag=FALSE【程序说明】程序功能是若输入的 N 值为 5,则输出结果如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1【程序】SET TALK OFFCLEARINPUT“N”TO NDIME A(N,N)P=NDO WHILE N0 A(N,N)=1 (
4、5) NN-1ENDDOFOR I3 TO (6) FOR J2 TO I-1 A(I,J)= (7) ENDFORENDFORFOR I1 TO P ? SPACE(3*(P-I+1) FOR J1 TO I ? STR(A(I,J),3) (8)?ENDFORSET TALK ON(分数:8.00)A.A(1,N)=1B.A(1,N-1)1C.A(N,1)=1D.A(N-1,1)1A.P-1B.PC.N-1D.N+1A.A(I1,J1)+A(I1,J)B.A(I,J)+A(I1,J1)C.A(I1,J)+A(I1,J)D.A(I1,J1)+A(I1,J1)A.EXITB.ENDCASEC.
5、ENDDOD.ENDFOR【程序说明】程序功能是对任意一个表都可以追加、删除记录。【程序】SET TALK OFFACCEPT“请输入文件名:”TO NAMEUSE (9)?“1.追加记录”?“2.删除记录”WAIT“请选择(12):”TO MIF (10) APPEND BLANK EDITELSE INPUT“输入要删除的记录号:”TO N (11) DELETE PACK (12)USESET TALK ONRETURN(分数:8.00)A.&NAMEB.NAMEC.表 NAMEDNAMEA.M“12”B.M“2”C.M=“1”D.M=“追加记录”A.GOTO 1B.GOTO TOPC.
6、GOTO BOTTD.GOTO NA.ENDFORB.ENDIFC.EXITD.LOOP【程序】SET TAIK OFFSTORE 0 TO M,NDO WHILE M30 NN+3 MM+NENDDO? M,NSET TALK ONPETURN(分数:8.00)(1).M 的输出结果为 _。(分数:2.00)A.30B.45C.18D.9(2).N 的输出结果为 _。(分数:2.00)A.30B.15C.12D.9(3).若将 DO WHILE 的循环条件 M30 改为 M30,则 M,N 的输出结果为 _。(分数:2.00)A.0 0B.12 30C.45 15D.无任何输出(4).若将
7、DO WHILE 的循环条件 M30 改为.T.,则 M、N 的输出结果为 _。(分数:2.00)A.30 12B.12 30C.45 15D.死循环【程序】SET TALK OFFCLEARINPUT“N=”TO NINPUT“M=”TO MX=MIN(N,M)FOR IX TO 1 STEP -1 IF M/IINT(M/I)AND N/I=INT(N/I) Y1=I EXIT ENDIFENDFOR?“Y1=”+ALLTRIM(STR(Y1,19)+“,Y2”+ALLTRIM(STR(M,N)/Y1,19)SET TALK ON(分数:8.00)(1).若输入 N、M 的值分别为 6,8
8、,则 Y1 的输出结果为 _。(分数:2.00)A.0B.1C.2D.3(2).若输入 N,M 的值分别为 6,8,则 Y2 的输出结果为 _。(分数:2.00)A.16B.24C.22D.20(3).若输入 N,M 的值分别为 3,9,则 Y1 的输出结果为 _。(分数:2.00)A.0B.1C.2D.3(4).若输入 N,M 的值分别为 3,9,则 Y2 的输出结果为 _。(分数:2.00)A.7B.9C.12D.3【程序】* * MAIN. PRGX11X2=3DO P1 W1TH X1,(X2)? “ X1”+STR(X1,1),“X2”+ STR(X2,1)X12X24DO P1 W
9、ITH X1,X1+ X2?“X1”+STR(X1,1),“X2=”+STR(X2,1)RETURN* * P1. PRGPARA W1,W2W1W1 * 2W2W2 * 2RETURN(分数:8.00)(1).当第一次调用 P1 时,X1 的输出结果为 _。(分数:2.00)A.1B.2C.3D.4(2).当第一次调用 P1 时,X2 的输出结果为_。(分数:2.00)A.3B.4C.5D.6(3).当第二次调用 P1 时,X1 的输出结果为_。(分数:2.00)A.1B.2C.3D.4(4).当第二次调用 P1 时,X2 的输出结果为 _。(分数:2.00)A.3B.4C.5D.6二、编写
10、程序题(总题数:2,分数:4.00)2.编程求 1001000 之间能同时 3 和 7 整除的数的个数。(分数:2.00)_3.设计一个表单(如下图所示),判断一个正数是不是素数。 要求:在文本框中输入一个正数,单击“确定”按钮后显示结果,单击“退出”按钮释放表单。控件的主要属性:Labe11. Caption“请输入一个正数:”Labe12.Caption=“判断结果:”Command1. Caption“确定”Command2. Caption=“退出”Text1.Value2 (分数:2.00)_浙江计算机二级 VF-试卷 7 答案解析(总分:52.00,做题时间:90 分钟)一、程序阅
11、读选择题(总题数:8,分数:48.00)1.程序阅读选择题阅读下列程序说明并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。_解析:【程序说明】程序功能是计算一个整数的各位数字之和。【程序】SET TALK OFFINPUT“x”TO xs0DO WHILE x!=0 ss+ MOD(x,10) (1) (2)? SSET TALK ON(分数:4.00)A.xINT(x*10)B.xINT(x/10) C.xx-INT(x/10)D.xx-INT(x*10)解析:解析:此程序运行步骤如下:首先等待用户屏幕输入一个数字,由变量 x 保存该数字;将 0 赋值给变量 s,此变量用于计算各
12、位数字和;使用一个 DO WHILE 循环语句,首先判断 x 是否等于 0,如果等于0,退出循环,如果不等于零,则使用 MOD()(取余)函数求出 x 除以 10 的余数(数字的个位数),并累加到变量 s 中。接下来,程序应当将变量 x 除以 10 并取整,使之缩小 10 倍,以便将 x 的 10 位数字变为个位数字,所以在此应当选择选项 B。A.ENDFORB.ENDCASEC.EXITD.ENDDO 解析:解析:DO WHILE ENDDO 的格式: DO WHILE条件表达式 语句序列 EXIT LOOP ENDDO 功能:当条件表达式的值为.T.时,重复执行 DO ENDDO 之间的语
13、句序列,直到条件表达式的值为.F.时,结束循环操作。【程序说明】假设用户名和口令存储在自由表“口令表”中,当用户输入用户名和口令并单击“登录”按钮时,若用户名输入错误,则提示“用户名错误”;若用户名输入正确,而口令输入错误,则提示“口令错误”。命令按钮“登录”的 Click 事件中的代码如下。【程序】USE 口令表 GO TOPflag0DO WHILE (3) IF Alltrim (用户名)= Alltrim(Thisform. Text1. Value) IF Alltrim (口令)Alltrim(Thisform. Text2,Value) WAIT“欢迎使用”WINDOW TTME
14、OUT2 ELSE WATT“口令错误” WINDOW TIMEOUT2 ENDIF flag1 EXIT ENDIF SKIFENDDOIF (4) WAIT“用户名错误”WINDOW TIMEOUT2ENPIF(分数:4.00)A.BOF()BNOT.BOF()C.EOF()DNOT.EOF() 解析:解析:表头测试函数的格式:BOF(工作区号/别名) 功能:当记录指针指向表文件的首记录之前(表头)时,该函数值为.T.,否则返回.F.。输出值类型为逻辑型。工作区号/别名用于指定工作区,缺省为当前工作区。 表尾测试函数的格式:EOF(工作区号/别名) 功能:当记录指针指向表文件的末记录之后(
15、表尾)时,该函数值为.T.,否则返回.F.。输出值类型为逻辑型。工作区号/别名用于指定工作区,缺省为当前工作区。本题 DO WHILE 循环的条件应是当到达表的末尾时,退出 DO WHILE 循环。A.flag1B.flag0 C.flagTRUED.flag=FALSE解析:解析:flag 变量起到了标志位的作用,用于标识用户是否正确地输入了用户名。当用户名被正确输入的时候,会将变量 flag 的值置为 1,否则为 0。系统初始化时,flag 变量的值被设置为 0,表示用户名还没有被正确输入,如果用户输入了正确的用户名,程序将继续判断用户输入的密码是否正确,不管密码输入正确与否,程序都会执行
16、到语句 flag=1,把变量 flag 的值设置为 1,因此程序可以用 flag 的值来判断是否用户名被正确输入。最后对 flag 的值进行判断,如果 flag 的值为 0,就是用户名没有被正确输入的情况。【程序说明】程序功能是若输入的 N 值为 5,则输出结果如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1【程序】SET TALK OFFCLEARINPUT“N”TO NDIME A(N,N)P=NDO WHILE N0 A(N,N)=1 (5) NN-1ENDDOFOR I3 TO (6) FOR J2 TO I-1 A(I,J)= (7) ENDFORENDFORFOR
17、 I1 TO P ? SPACE(3*(P-I+1) FOR J1 TO I ? STR(A(I,J),3) (8)?ENDFORSET TALK ON(分数:8.00)A.A(1,N)=1B.A(1,N-1)1C.A(N,1)=1 D.A(N-1,1)1解析:解析:从输出结果可以看出,每行的第一个数字都为 1,第(5)空的作用是给每行的第一个内容赋初值 1,通过 N 进行循环,即 A(N,1)1。A.P-1B.P C.N-1D.N+1解析:解析:此空对应 FOR 循环的条件是从第三行到最后一行进行循环,所以此空为 D 或 N。A.A(I1,J1)+A(I1,J) B.A(I,J)+A(I1,
18、J1)C.A(I1,J)+A(I1,J)D.A(I1,J1)+A(I1,J1)解析:解析:从输出结果可看出,第 3 行第 2 列的值 2 是第 2 行第 1 列和第 2 列的和。第 4 行第 2 列的值3 是第 3 行第 1 列和第 2 列的和,第 4 行 3 列的值 3 是第 3 行第 2 列和第 3 行的和,依次类推,可知此空应选 A。A.EXITB.ENDCASEC.ENDDOD.ENDFOR 解析:解析:“FOR J=1 TO I ? STR(A(I,J),3) ENDFOR”语句段是输出数组 A 中的元素,FOR ENDFOR 是成对出现的。【程序说明】程序功能是对任意一个表都可以追
19、加、删除记录。【程序】SET TALK OFFACCEPT“请输入文件名:”TO NAMEUSE (9)?“1.追加记录”?“2.删除记录”WAIT“请选择(12):”TO MIF (10) APPEND BLANK EDITELSE INPUT“输入要删除的记录号:”TO N (11) DELETE PACK (12)USESET TALK ONRETURN(分数:8.00)A.&NAME B.NAMEC.表 NAMEDNAME解析:解析:宏代换函数的格式:&字符型内存变量. 功能:用字符型内存变量的“值”去替换内存变量“名”。“.”符号表示变量结束。A.M“12”B.M“2”C.M=“1”
20、 D.M=“追加记录”解析:解析:如果 M“1”表示追加记录,M“2”表示删除记录。A.GOTO 1B.GOTO TOPC.GOTO BOTTD.GOTO N 解析:解析:输入 N 值,查找 N 对应的记录用 GOTO N。A.ENDFORB.ENDIF C.EXITD.LOOP解析:解析:本程序使用了 IFELSE ENDIF 结构。【程序】SET TAIK OFFSTORE 0 TO M,NDO WHILE M30 NN+3 MM+NENDDO? M,NSET TALK ONPETURN(分数:8.00)(1).M 的输出结果为 _。(分数:2.00)A.30 B.45C.18D.9解析:
21、(2).N 的输出结果为 _。(分数:2.00)A.30B.15C.12 D.9解析:解析:当 M0 时,N=3,M=3;当 M3 时,N6,M9;当 M9 时,N9,M18;当 M18 时,N12,M30。当 M=30 时不满足 DO WHILE 循环条件 M20所以结束循环,输出 M 值为 30,N 值为12。(3).若将 DO WHILE 的循环条件 M30 改为 M30,则 M,N 的输出结果为 _。(分数:2.00)A.0 0 B.12 30C.45 15D.无任何输出解析:解析:当循环条件为 M=30 时,而 M 的初值为 0,不满足循环条件,所以不执行循环体,直接输出 M,N 值
22、均为 0。(4).若将 DO WHILE 的循环条件 M30 改为.T.,则 M、N 的输出结果为 _。(分数:2.00)A.30 12B.12 30C.45 15D.死循环 解析:解析:DO WHILE 循环条件恒为真,没有退出循环节的命令,EXIT,所以进入了死循环,一直执行循环,无任何输出。【程序】SET TALK OFFCLEARINPUT“N=”TO NINPUT“M=”TO MX=MIN(N,M)FOR IX TO 1 STEP -1 IF M/IINT(M/I)AND N/I=INT(N/I) Y1=I EXIT ENDIFENDFOR?“Y1=”+ALLTRIM(STR(Y1,
23、19)+“,Y2”+ALLTRIM(STR(M,N)/Y1,19)SET TALK ON(分数:8.00)(1).若输入 N、M 的值分别为 6,8,则 Y1 的输出结果为 _。(分数:2.00)A.0B.1C.2 D.3解析:(2).若输入 N,M 的值分别为 6,8,则 Y2 的输出结果为 _。(分数:2.00)A.16B.24 C.22D.20解析:解析:当输入 N,M 的值分别为 6,8 时,X6,此时 FOR I=6 TO 1 STEP -1,当 I=2 时,满足 IF循环条件,此时 Y12,退出 FOR 循环,输出 Y12,STR(M*N/Y1,19)的结果为 24,所以输出 Y2
24、24。(3).若输入 N,M 的值分别为 3,9,则 Y1 的输出结果为 _。(分数:2.00)A.0B.1C.2D.3 解析:(4).若输入 N,M 的值分别为 3,9,则 Y2 的输出结果为 _。(分数:2.00)A.7B.9 C.12D.3解析:解析:当输入 N,M 的值分别为 3,9 时,X3,此时 FOR I3 T0 1 STEP-1,当 I3 时,满足循环条件,此时 Y13,退出 FOR 循环,输出 Y13,STR(M,N/Y1,19)的结果为 9,所以输出 Y29。【程序】* * MAIN. PRGX11X2=3DO P1 W1TH X1,(X2)? “ X1”+STR(X1,1
25、),“X2”+ STR(X2,1)X12X24DO P1 WITH X1,X1+ X2?“X1”+STR(X1,1),“X2=”+STR(X2,1)RETURN* * P1. PRGPARA W1,W2W1W1 * 2W2W2 * 2RETURN(分数:8.00)(1).当第一次调用 P1 时,X1 的输出结果为 _。(分数:2.00)A.1B.2 C.3D.4解析:解析:主程序中的 X1 是按引用传递给子程序 P1 中的 W1,主程序中 X1 的值随着子程序 P1 中 W1 的变化而变化,W1W1*2=1* 22,所以 X1 也为 2。(2).当第一次调用 P1 时,X2 的输出结果为_。(
26、分数:2.00)A.3 B.4C.5D.6解析:解析:主程序中的 X2 是按值传递给子程序 P1 中的 W2,主程序中 X2 的值不随着子程序 P1 中 W2 的变化而变化,虽然 W2W2*23*26,但主程序中的 X2 仍为 3。(3).当第二次调用 P1 时,X1 的输出结果为_。(分数:2.00)A.1B.2C.3D.4 解析:解析:此时主程序中 X1 是按引用传递给子程序 P1 中的 W1,主程序中 X1 的值将随着子程序 P1 中的 W1 的变化而变化,W1=W1*2=2*24。所以 X1 也为 4。(4).当第二次调用 P1 时,X2 的输出结果为 _。(分数:2.00)A.3B.
27、4 C.5D.6解析:解析:X1+X2 按值传递给子程序中的 W2,按值传递,主程序中的变量不随着子程序中相应参数的变化而变化,所以 P1 结束后 X2 仍为 4。二、编写程序题(总题数:2,分数:4.00)2.编程求 1001000 之间能同时 3 和 7 整除的数的个数。(分数:2.00)_正确答案:(正确答案:CLEAR SET TALK OFF n=0 FOR I= 100 TO 1000 IF 1%3=0 ANDI%7=0 nn+1 ENDIF ENDFOR ? N)解析:3.设计一个表单(如下图所示),判断一个正数是不是素数。 要求:在文本框中输入一个正数,单击“确定”按钮后显示结
28、果,单击“退出”按钮释放表单。控件的主要属性:Labe11. Caption“请输入一个正数:”Labe12.Caption=“判断结果:”Command1. Caption“确定”Command2. Caption=“退出”Text1.Value2 (分数:2.00)_正确答案:(正确答案:(1)编写 Text1 的 GotFocus 事件代码如下: THISFORM. LabeCaption=“判断结果:” (2)编写 Command1 的 Click 事件代码如下: FOR I=2 TO THISFORM. Tcxt1. Value-1 IF THISFORM. Text1. Value %I0 THISFORM. Labe Caption“判断结果:不是素数” RETURN ENDIF ENDFOR T)解析: