1、浙江二级 VISUAL+FOXPRO-试题 15及答案解析(总分:100.00,做题时间:90 分钟)一、试题 1(总题数:1,分数:12.00)程序说明 下面的程序将 16个整数按如下方阵存入数组 X(4,4)中: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 求出主对角线上元素之和存入内存变量 Z1,再求出另一对角线上元素之和存入内存变量 Z2。 程序 SET TALK OFF DIMENSION X(4,4) W=0 J=1 DO WHILE J=4 I=1 DO WHILE I=4 W=W+1 _ I=I+1 ENDDO J=J+1 ENDDO STOR
2、E O TO Z1,Z2 I=1 DO WHILE I=4 J=1 DO WHILE J=4 IF _ Z1=Z1+X(I,J) ENDIF IF _ Z2=Z2+X(I,J) ENDIF J=J+1 ENDDO I=I+1 _ ? “Z1=“,Z1 ? “Z2=“,Z2 SET TALK ON(分数:12.00)A.X(J+I)=I+JB.X(I,J)=I+JC.X(J,I)=WD.X(I,J)=WA.I=J+1B.I=JC.I+J=5D.I+J=4A.J=I+JB.I=JC.I+J=5D.I+J=4A.ENDDOB.ENDFORC.ENDCASED.ENDSELECT二、试题 2(总题数:
3、1,分数:12.00)程序说明一设有自由表 XSB,表的各个字段名均以英文字母开头。要求将 XSB表的各个字段名的开头字母转换成 A。 程序一 CLOSE TABLE ALL USE XSB N= _ FOR T=1 TO N C=FIELD(T) CC=“A“+SUBSTR(C,2) _ TABLE XSB RENAME COLUMN &C TO &CC ENDFOR CLOSE TABLE ALL 程序说明二设有自由表 XSB,要求将 XSB表中的各个字符型字段的字段名显示出来,统计并显示共有多少个字符型的字段。 程序二 CLOSE ALL USE XSB SUM=0 FOR I=1 TO
4、 FCOUNT() IF TYPE(FIELD(I)=“C“ ? _ _ ENDIF ENDFOR ? SUM(分数:12.00)A.FCOUNT()B.RECNO()C.RECCOUNTD.FOUND()A.REPLACEB.PACKC.DELETED.ALTERA.RECNO()B.FIELD(I)C.FCOUNT(I)D.FIELD()A.SUM=SUM+IB.I=I+1C.SUM=FIELD(I)D.SUM=SUM+1三、试题 3(总题数:1,分数:12.00)程序说明 下图为查看学生表(xs.dbf)中记录内容的表单。请根据图示将下列表单上命令按钮组的Click事件代码补充完整。 (
5、分数:12.00)A.GO TOPB.GO BOTTOMC.SKIP-1D.SKIPA.GO TOPB.GO BOTTOMC.SKIP-1D.SKIPA.!BOF()B.BOF()C.EOF()D.!EOP()A.FHISFORM. HIDEB.THISFORM. RELEASEC.THISFORM. REFRESHD.THISFORM. CLS四、试题 4(总题数:1,分数:12.00)程序 CLEAR STORE 0 TO Y1,Y2 INPUT “X=“TO X DO WHILE X1 IF SQRT(X)=3 OR INT(X/2)=X/2 Y1=Y1+X ELSE Y2=Y2+X E
6、NDIF X=X-1 ENDDO ? Y1,Y2(分数:12.00)(1).当输入 X值为 1时,Y1,Y2 的输出结果为_。(分数:3.00)A.0 0B.2 1C.2 0D.1 0(2).当输入 X值为 4时,Y1,Y2 的输出结果为_。(分数:3.00)A.3 2B.4 3C.5 3D.6 3(3).当输入 X值为 7时,Y1,Y2 的输出结果为_。(分数:3.00)A.12 10B.10 10C.12 15D.10 15(4).当输入 X值为 10时,Y1,Y2 的输出结果为_。(分数:3.00)A.35 15B.39 15C.35 13D.13 35五、试题 5(总题数:1,分数:1
7、2.00)程序 SET TALK OFF STORE 0 TO a,b,c,d,n DO WHILE .T. n=n+5 DO CASE CASE n=50 a=a+1 LOOP CASE n=100 b=b+1 EXIT CASE n=80 c=C+1 OTHER d=d+1 ENDCASE n=n+5 ENDDO ? a,b,C,d,n SET TALK ON RETURN(分数:12.00)(1).a的输出结果为_。(分数:3.00)A.8B.9C.11D.10(2).b的输出结果为_。(分数:3.00)A.1B.2C.3D.10(3).c的输出结果为_。(分数:3.00)A.1B.2C
8、.3D.10(4).d,n的输出结果分别为_。(分数:3.00)A.1 100B.2 105C.3 105D.4 100六、试题 6(总题数:1,分数:12.00)程序 *MAIN. PRG SET TALK OFF CLEAR MEMORY DIME X(4,3) i=1 DO WHILE i3 j=i+1 X(i,j)=j DO SUB X(i,i)=i i=i+1 ENDDO X(i,i)=4 ? X(1,1),X(1,2),X(1,3),X(2,1) ? X(6),X(8),X(5),X(7) SET TALK ON RETURN *SUB. PRG IF X(i,j)=3 X(i+j
9、)=X(i,j) ENDIF J=J-1 RETURN(分数:12.00)(1).X(1,1),X(1,2)的输出结果为_。(分数:3.00)A.1 2BF. 2C.1 .F.DF. .F.(2).X(1,3),X(2,1)的输出结果为_。(分数:3.00)A.3 .F.B.1 2C.2 2DF. .F.(3).X(6),X(8)的输出结果为_。(分数:3.00)AF. .F.BF. 4C.4 .F.D.4 .F.(4).X(5),X(7)的输出结果为_。(分数:3.00)A.1 .T.B.2 .F.C.2 .T.D.2 1七、试题 7(总题数:1,分数:14.00)1.编写程序,输入一个数,
10、判断该数是否能被 3或 5整除。 (分数:14.00)_八、试题 8(总题数:1,分数:14.00)2.用表单界面,使用命令按钮和列表框设计一个程序,求 20002100 年之间所有的闰年(如下图所示)。试编写“开始”按钮的 Click事件代码。 (分数:14.00)_浙江二级 VISUAL+FOXPRO-试题 15答案解析(总分:100.00,做题时间:90 分钟)一、试题 1(总题数:1,分数:12.00)程序说明 下面的程序将 16个整数按如下方阵存入数组 X(4,4)中: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 求出主对角线上元素之和存入内存变量
11、Z1,再求出另一对角线上元素之和存入内存变量 Z2。 程序 SET TALK OFF DIMENSION X(4,4) W=0 J=1 DO WHILE J=4 I=1 DO WHILE I=4 W=W+1 _ I=I+1 ENDDO J=J+1 ENDDO STORE O TO Z1,Z2 I=1 DO WHILE I=4 J=1 DO WHILE J=4 IF _ Z1=Z1+X(I,J) ENDIF IF _ Z2=Z2+X(I,J) ENDIF J=J+1 ENDDO I=I+1 _ ? “Z1=“,Z1 ? “Z2=“,Z2 SET TALK ON(分数:12.00)A.X(J+I)
12、=I+JB.X(I,J)=I+JC.X(J,I)=WD.X(I,J)=W 解析:解析 前两个 DO WHILE循环是给数组 X(4,4)赋值。DO WHILE J=4ENDDO 是控制数组的列元素,D0 WHILE I=4ENDDO 是控制数组的行元素,第 1空功能是把变量 W值赋给数组 X(I,J)。A.I=J+1B.I=J C.I+J=5D.I+J=4解析:解析 题意要求把主对角线上元素之和存入内存变量 Z1,主对角线上的行标列标相同,第一个 IF语句判断 I、J 是否相等,若 I=J,则求 X(I,J)元素的和。A.J=I+JB.I=JC.I+J=5 D.I+J=4解析:解析 另一对角线
13、上的行标、列标之和为 5,即 X(1,4)、X(2,3)、X(3,2)、X(4,1)。第二个 IF语句判断足 I+J是否等于 5,若 I+J=5,则把另一对角线上元素之和存入内存变量 Z2。所以第 3空应填I+J=5。A.ENDDO B.ENDFORC.ENDCASED.ENDSELECT解析:解析 此处用了“DO WHILEENDDO“的循环结构。二、试题 2(总题数:1,分数:12.00)程序说明一设有自由表 XSB,表的各个字段名均以英文字母开头。要求将 XSB表的各个字段名的开头字母转换成 A。 程序一 CLOSE TABLE ALL USE XSB N= _ FOR T=1 TO N
14、 C=FIELD(T) CC=“A“+SUBSTR(C,2) _ TABLE XSB RENAME COLUMN &C TO &CC ENDFOR CLOSE TABLE ALL 程序说明二设有自由表 XSB,要求将 XSB表中的各个字符型字段的字段名显示出来,统计并显示共有多少个字符型的字段。 程序二 CLOSE ALL USE XSB SUM=0 FOR I=1 TO FCOUNT() IF TYPE(FIELD(I)=“C“ ? _ _ ENDIF ENDFOR ? SUM(分数:12.00)A.FCOUNT() B.RECNO()C.RECCOUNTD.FOUND()解析:A.REPL
15、ACEB.PACKC.DELETED.ALTER 解析:解析 要修改表中每个字段的名,首先要知道字段数目,可通过 FCOUNT()函数返回字段数目,故第 1空应填“FCOUNT()”。本题 FOR循环的作用是依次取出表中的每一个字段,然后通过修改表结构命令给原来的每个字段名前加上一个“A”,修改表结构的命令是 AITER TABLE,所以第 2空应填“ALTER”。A.RECNO()B.FIELD(I) C.FCOUNT(I)D.FIELD()解析:解析 字段名函数的格式:FIELDS(数值表达式,工作区号|别名)。功能:返回指定工作区中第数值表达式个字段名称。输出为字符型。题中要求显示字段的
16、名称。所以此空填FIELD(I)。A.SUM=SUM+IB.I=I+1C.SUM=FIELD(I)D.SUM=SUM+1 解析:解析 本题要求统计并显示共有多少个字符型的字段,而在程序的最后一行是“? SUM”,由此可见,SUM 中存放的是字符型字段的个数。本程序的功能是扫描所有的字段,如果字段的类型为字符型(TYPE(FIELD(i)=“C“),则 SUM中的值加 1。最后显示 SUM中的值。三、试题 3(总题数:1,分数:12.00)程序说明 下图为查看学生表(xs.dbf)中记录内容的表单。请根据图示将下列表单上命令按钮组的Click事件代码补充完整。 (分数:12.00)A.GO TO
17、P B.GO BOTTOMC.SKIP-1D.SKIP解析:解析 GO TOP:指向首记录,GO BOTTOM:指向末记录,SKIP-1:向下移动一条记录,SKIP:向上移动一条记录。判断用户单击了哪个按钮,命令按钮组通过属性 Value来测试,第一个 CASE中 THIS. Value=1所以第 1空应指向首记录。A.GO TOPB.GO BOTTOMC.SKIP-1 D.SKIP解析:A.!BOF()B.BOF()C.EOF()D.!EOP() 解析:解析 第 3空是当记录指针未指向末记录时,下移指针。!BOF():末指向表头记录函数,BOF():指向表头记录函数,EOF():指向表尾记录
18、函数,!EOF():末指向表尾记录函数。A.FHISFORM. HIDEB.THISFORM. RELEASE C.THISFORM. REFRESHD.THISFORM. CLS解析:解析 在 Visual FoxPro中,释放表单,关闭表单,结束操作用 THISFORM. RELEASE。THISFORM. HIDE隐藏表单,THISFORM. REFRESH:刷新表单,THISFORM. CLS:清除表单。四、试题 4(总题数:1,分数:12.00)程序 CLEAR STORE 0 TO Y1,Y2 INPUT “X=“TO X DO WHILE X1 IF SQRT(X)=3 OR I
19、NT(X/2)=X/2 Y1=Y1+X ELSE Y2=Y2+X ENDIF X=X-1 ENDDO ? Y1,Y2(分数:12.00)(1).当输入 X值为 1时,Y1,Y2 的输出结果为_。(分数:3.00)A.0 0 B.2 1C.2 0D.1 0解析:解析 当 X=1时,不满足 DO WHILE的循环条件 X1,所以不执行 DO WHILE循环,直接输出Y1,Y2的值均为 0。(2).当输入 X值为 4时,Y1,Y2 的输出结果为_。(分数:3.00)A.3 2B.4 3C.5 3D.6 3 解析:解析 当 X=4时,满足循环条件,进入循环,执行 IF的 Y1=Y1+X=0+4=4,接
20、着执行 X=X-1=4-1=3,当 X=3时,执行 Y2=Y2+X=0+3=3,接着执行 X=X-1=3-1=2,当 X=2时,执行 Y1=Y1+X=4+2=6,接着执行 X=X-1=2-1=1。当 X=1时不满足循环条件 X1,所以退出循环,输出 Y1,Y2的值分别为 6,3。(3).当输入 X值为 7时,Y1,Y2 的输出结果为_。(分数:3.00)A.12 10B.10 10C.12 15 D.10 15解析:解析 当 X=7时,执行 Y2=Y2+X=0+7=7,接着执行 X=X-1=7-1=6;当 X=6时,执行 Y1=Y1+X=6,接着执行 X=X-1=6-1=5,当 X=5时,执行
21、 Y2=Y2+X=7+5=12,接着执行 X=X-1=5-1=4,当 X=4时,执行Y1=Y1+X=6+4=10,接着执行 X=X-1=3,当 X=3时,执行 Y2=Y2+X=12+3=15,接着执行 X=X-1=3-1=2,当 X=2时,执行 Y1=Y1+X=10+2=12,接着执行 X=X-1=2-1=1,退出循环,所以输出 Y1,Y2的值分别为 12,15。(4).当输入 X值为 10时,Y1,Y2 的输出结果为_。(分数:3.00)A.35 15B.39 15 C.35 13D.13 35解析:解析 当 X=10时,执行 Y1=Y1+X=10,接着执行 X=X-1=9,当 X=9时,执
22、行 Y1=Y1+X=10+9=19,接着执行 X=X-1=9-1=8,当 X=9时,执行 Y1=Y1+X=19+8=27,接着执行 X=X-1=8-1=7,当 X=7时,执行Y2=Y2+X=0+7=7,接着执行 X=X-1=7-1=6,当 X=6时,执行 Y1=Y1+X=27+6=33,接着执行 X=X-1=6-1=5,当X=5时,执行 Y2=Y2+X=7=12,接着执行 X=X-1=5-1=4,当 X=4时,执行 Y1=Y1+X=33+4=37,接着执行 X=X-1=4-1=3,当 X=3时,执行 Y2=Y2+3=12+3=15,接着执行 X=X-1=3-1=2,当 X=2时,执行Y1=Y1
23、+X=37+2=39,接着执行 X=X-1=2-1=1,退出循环,所以输出 Y1,Y2的值分别为 39,15。五、试题 5(总题数:1,分数:12.00)程序 SET TALK OFF STORE 0 TO a,b,c,d,n DO WHILE .T. n=n+5 DO CASE CASE n=50 a=a+1 LOOP CASE n=100 b=b+1 EXIT CASE n=80 c=C+1 OTHER d=d+1 ENDCASE n=n+5 ENDDO ? a,b,C,d,n SET TALK ON RETURN(分数:12.00)(1).a的输出结果为_。(分数:3.00)A.8B.9
24、C.11D.10 解析:(2).b的输出结果为_。(分数:3.00)A.1 B.2C.3D.10解析:(3).c的输出结果为_。(分数:3.00)A.1B.2 C.3D.10解析:(4).d,n的输出结果分别为_。(分数:3.00)A.1 100B.2 105C.3 105 D.4 100解析:解析 首先进行 DO WHILE循环,执行 n=n+5=0+5=5,当 n=5时,执行 a=a+1=1,继续循环n=10,当 n=50,a=a+1=a+1=10,继续循环 n=n+1=55,执行 OTHER分支的 d=d+1=1,执行 n=n+5=60,进行循环 n=n+5=65,执行 OTHER分支的
25、 d=d+1=1+1=2,当 n=75时,又执行 d=d+1=3,执行 n=n+5=80,进入循环 n=n+5=85,执行 c=c+1=0+1=1,执行 n=n+5=90,又进入循环,n=n+5=95,执行 c=c+1=2。接着执行n=n+5=100,又进入循环,n=n+5=105,执行 b=b+1=1,接着执行 EXIT,退出 DO WHILE循环,所以输出 a值为 10,b 值为 1,c 值为 2,d 值为 3,n 值为 105。六、试题 6(总题数:1,分数:12.00)程序 *MAIN. PRG SET TALK OFF CLEAR MEMORY DIME X(4,3) i=1 DO
26、WHILE i3 j=i+1 X(i,j)=j DO SUB X(i,i)=i i=i+1 ENDDO X(i,i)=4 ? X(1,1),X(1,2),X(1,3),X(2,1) ? X(6),X(8),X(5),X(7) SET TALK ON RETURN *SUB. PRG IF X(i,j)=3 X(i+j)=X(i,j) ENDIF J=J-1 RETURN(分数:12.00)(1).X(1,1),X(1,2)的输出结果为_。(分数:3.00)A.1 2 BF. 2C.1 .F.DF. .F.解析:(2).X(1,3),X(2,1)的输出结果为_。(分数:3.00)A.3 .F.B
27、.1 2C.2 2DF. .F. 解析:(3).X(6),X(8)的输出结果为_。(分数:3.00)AF. .F.BF. 4C.4 .F. D.4 .F.解析:(4).X(5),X(7)的输出结果为_。(分数:3.00)A.1 .T.B.2 .F. C.2 .T.D.2 1解析:解析 当 i=1时,进入循环,j=i+1=1+1=2,X(1,2)=2,调用 SUB过程,不执行 IF语句,执行j=j-1=2-1=1,返回主程序,X(1,1)=1,i=i+1=1+1=2,第二次进入 DO WHILE循环,j=i+1=2+1=3,X(2,3)=3,调用 SUB过程,执行 IF语句,X(2+3)=X(2
28、,3)=3,j=j-1=3-1=2,返回主程序,X(2,2)=2,i=i+1=2+1=3,不满足 DO WHILE循环条件 i3,所以退出循环,此时 j=2,i=3,执行 X(j,i)=4语句即 X(2,3)=4。 定义数组后,系统自动给每个元素定义为逻辑型,其值为逻辑假.F.。 可以用一维数组的形式访问二维数组,按行顺序访问。本程序中数组为 4行 3列,共 12个元素,所以X(6)与 X(2,3)是同一变量,X(8)与 X(3,2)是同一变量,X(5)与 X(2,2)是同一变量,X(7)与 X(3,1)是同一变量。 综上分析:X(1,1)=1,x(1,2)=2,X(1,3)=.F.,X(2,
29、1)=.F.,X(6)=4,X(8)=.F.,X(5)=2,X(7)=.F.。七、试题 7(总题数:1,分数:14.00)1.编写程序,输入一个数,判断该数是否能被 3或 5整除。 (分数:14.00)_正确答案:()解析:程序代码如下: SET TALK OFF CLEAR INPUT“请输入一个数:“TO NUM3 ? NUM3 IF MOD(NUM3,3)=0 IF MOD(NUM3,5)=0 ?“即被 3整除,也被 5整除“ ELSE ?“被 3整除“ ENDIF ELSE IF MOD(NUM3,5)=0 ?“被 5整除“ ELSE ?“即不被 3整除,也不被 5整除“ ENDIF
30、ENDIF八、试题 8(总题数:1,分数:14.00)2.用表单界面,使用命令按钮和列表框设计一个程序,求 20002100 年之间所有的闰年(如下图所示)。试编写“开始”按钮的 Click事件代码。 (分数:14.00)_正确答案:()解析:编写“开始”按钮的 Click事件代码如下: THISFORM, LIST1, CLEAR FOR N=2000 TO 2100 IF N%4=0 IF N%1000 OR N%400=0 Y=1 ELSE Y=0 ENDIF ELSE Y=0 ENDIF IF Y=1 THISFORM. LIST1. ADDITEM(ALLTRIM(STR(N) ENDIF ENDFOR