1、浙江二级 VISUAL+FOXPRO-7 及答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。本大题的程序一、二使用的“学生”表和“选修课”表如下:“学生”表:学号 姓名 政治面貌 年龄 学分 科目号20001 王 海 团员 25 4 0120002 李 盐 预备党员 20 3 0220003 刘小鹏 团员 22 4 0120004 隋小新 团员 20 6 0320005 李明月 预备党员 24 4 0120006 孙民主 预备党员 21 3 0220007 赵福来 预备
2、党员 22 6 03“选修课”表:科目号 科目名01 日语02 法律03 微积分【程序说明一】 使用 SQL 语句查询每个学生及其选修课程的情况:【程序一】SELECT 学生.*,选修课.*;FROM 学生,选修课;WHERE U(1) /U= U(2) /U【程序说明二】 使用 SQL 语句求选修了法律课程的所有学生的学分总和:【程序二】SELECT U(3) /U(学生分);FROM 学生;WHERE 科目号 IN;(SELECT 科目号;FROM U(4) /U;WHERE 科目号“法律”)【程序说明三】 设有 s(学号,姓名,性别)和 sc(学号,课程号,成绩)两个表,下面 SQL 的
3、SELECT 语句检索选修的每门课程的成绩都高于或等于 85 分的学生的学号、姓名和性别。【程序三】SELECT 学号,姓名,性别 FROM sWHERE U(5) /U (SELECT * FROM sc WHERE sc. 学号s. 学号 AND 成绩85)(分数:15.00)A.科目号B.学生.科目号C.学生.姓名D.选修课.科目号A.科目号B.学生.科目名C.选修课.科目名D.选修课.科目号A.AVGB.MAXC.SUMD.MINA.选修课B.学生C.学生.选修课D.成绩A.NOTB.EXISTSC.NOT EXISTD.NOT EXISTS二、B试题 2/B(总题数:1,分数:6.0
4、0)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 程序功能是仅接受输入 Y 和 N 的程序,否则程序结束。【程序】DO WHILE .T.WAIT“请输入 Y/N” TO ASIF UPPER(AS)“Y”AND UPPER(AS)“N”U (6) /UELSEU (7) /UENDIFENDDO(分数:6.00)A.EXITB.ENDDOC.LOOPD.CONTINUEA.EXITB.ENDDOC.LOOPD.CONTINUE三、B试题 3/B(总题数:1,分数:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序
5、说明】 计算下列算式的值。a,Ai 为正整数,从键盘输入。其小Ai1+2+ Ai,Ai!1 *2*3*Ai(i1,2 a)。(分数:15.00)A.INPUT“A”TO AB.INPUT“I=”TO IC.INPUT“R=”TO STR(D.INPUT“K”TOKA.K1B.K0C.PRIVATE KD.PARA KA.X=KB.S1S1+KC.S1=S2+KD.S1=KA.PUBLIC TB.T0C.T1D.PARA TA.X=TB.S2S1+KC.S2S2+KD.S2T四、B试题 4/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一
6、个正确答案。【程序】SET TALK OFFCLEARSTORE 0 TO X,S1,S2,S3DO WHILE X15XX+1DO CASECASEINT(X/2)=X/2S1=S1+X/2CASE MOD(X,3)0S2S2+X/3CASE INT(X/2)X/2S3=S3+1ENDCASEENDDO? X,S1,S2,S3SET TALK ONRETURN(分数:12.00)(1).X 的输出结果为 _。(分数:3.00)A.0B.14C.15D.16(2).S1 的输出结果为 _。(分数:3.00)A.56B.28C.14D.15(3).S2 的输出结果为 _。(分数:3.00)A.9
7、B.10C.15D.16(4).S3 的输出结果为 _。 A4 B,5 CS D7(分数:3.00)A.B.C.D.五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARSS0FOR X1 TO 10 STEP 3SSSS+XENDFOR? SS(分数:12.00)(1).SS 的输出结果为 _。(分数:3.00)A.22B.18C.12D.19(2).若将 STEP 3 改为 STEP 1,则 SS 的输出结果为 _。(分数:3.00)A.22B.35C.45D.55(3
8、).若将 STEP 3 删除,则 SS 的输出结果为 _。(分数:3.00)A.22B.35C.45D.55(4).若将 STEP 3 改为 STEP -1 时,则 SS 的输出结果为 _。(分数:3.00)A.22B.0C.1D.-1六、B试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* 主程序:AAA. PRGSET TALK OFFCLEARK20Y=30DO BBB?X,YRETURN* 子程序:BBB. PRGPRIVATE YX40Y=50RETURN(分数:12.00)(1).程序执行后的显
9、示结果为 _。(分数:3.00)A.20 30B.40 50C.30 40D.40 30(2).若将 PRIVATE Y 删除,则程序执行后的显示后果为 _。(分数:3.00)A.20 30B.40 50C.30 40D.40 30(3).若将 PRIVATE Y 改为 PRIVATE X,则程序执行后的显示结果为 _。(分数:3.00)A.20 30B.40 50C.20 50D.40 30(4).若在 PRIVATE Y 后加一条 PRIVATE X 语句,则程序执行后的显示结果为 _。(分数:3.00)A.20 30B.40 50C.20 50D.40 30七、B试题 7/B(总题数:1
10、,分数:14.00)1.编写程序,从键盘输入十个数,然后提出其中的最大值和最小值。(分数:14.00)_八、B试题 8/B(总题数:1,分数:14.00)2.设计一个表单,当单击“计算”按钮时,求出连续 N 个不是 7 的倍数的自然数之和,当和是 101 的倍数时,则在列表框中显示所有求出的不是 7 的倍数的数(如下图所示)。试编写“计算”按钮的 Click 事件代码。 (分数:14.00)_浙江二级 VISUAL+FOXPRO-7 答案解析(总分:100.00,做题时间:90 分钟)一、B试题 1/B(总题数:1,分数:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一
11、个正确答案。本大题的程序一、二使用的“学生”表和“选修课”表如下:“学生”表:学号 姓名 政治面貌 年龄 学分 科目号20001 王 海 团员 25 4 0120002 李 盐 预备党员 20 3 0220003 刘小鹏 团员 22 4 0120004 隋小新 团员 20 6 0320005 李明月 预备党员 24 4 0120006 孙民主 预备党员 21 3 0220007 赵福来 预备党员 22 6 03“选修课”表:科目号 科目名01 日语02 法律03 微积分【程序说明一】 使用 SQL 语句查询每个学生及其选修课程的情况:【程序一】SELECT 学生.*,选修课.*;FROM 学生
12、,选修课;WHERE U(1) /U= U(2) /U【程序说明二】 使用 SQL 语句求选修了法律课程的所有学生的学分总和:【程序二】SELECT U(3) /U(学生分);FROM 学生;WHERE 科目号 IN;(SELECT 科目号;FROM U(4) /U;WHERE 科目号“法律”)【程序说明三】 设有 s(学号,姓名,性别)和 sc(学号,课程号,成绩)两个表,下面 SQL 的SELECT 语句检索选修的每门课程的成绩都高于或等于 85 分的学生的学号、姓名和性别。【程序三】SELECT 学号,姓名,性别 FROM sWHERE U(5) /U (SELECT * FROM sc
13、 WHERE sc. 学号s. 学号 AND 成绩85)(分数:15.00)A.科目号B.学生.科目号 C.学生.姓名D.选修课.科目号解析:A.科目号B.学生.科目名C.选修课.科目名D.选修课.科目号 解析:解析 若一个查询同时涉及两个以上的表,则称之为连接查询。其一般格式为: 表名 1列名 1比较运算符表名 2列名 2 学生表和选修课表的连接是通过公共字段“科目号”来建立的。A.AVGB.MAXC.SUM D.MIN解析:解析 AVG:求平均值,MAX:取最大值,SUM:求和,MIN:取最小值。A.选修课 B.学生C.学生.选修课D.成绩解析:解析 一个 SELECTFROMWHERE
14、语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE 子句或 HAVING 短语的条件中的查询称为嵌套查询。SUM()实现了对“学业分”求和。 嵌套查询中,选择条件科目号“法律”的字段在“选修课”表中,所以嵌套查询来自“选修课”表。A.NOTB.EXISTSC.NOT EXISTD.NOT EXISTS 解析:解析 在 SQL 中,括号内 SELECT* FROM sc WHERE sc. 学号s. 学号 AND 成绩 85 表示是每门课成绩都小于 85 分的学生,要检索成绩高于或等于 85 分,NOT EXISTS 是取反即检查不小于 85 分的学生信息。二、B试题 2/B(总题数
15、:1,分数:6.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 程序功能是仅接受输入 Y 和 N 的程序,否则程序结束。【程序】DO WHILE .T.WAIT“请输入 Y/N” TO ASIF UPPER(AS)“Y”AND UPPER(AS)“N”U (6) /UELSEU (7) /UENDIFENDDO(分数:6.00)A.EXIT B.ENDDOC.LOOPD.CONTINUE解析:A.EXITB.ENDDOC.LOOP D.CONTINUE解析:解析 该题是一个条件循环,选用 EXIT 是强制退出循环条件,执行它能够立即跳出循环,执行 E
16、NDDO 后面的语句。选用 LOOP 则是一种强制缩短循环的语句,其功能是终止本次循环体语句的执行,把控制转到循环结构的开始。三、B试题 3/B(总题数:1,分数:15.00)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】 计算下列算式的值。a,Ai 为正整数,从键盘输入。其小Ai1+2+ Ai,Ai!1 *2*3*Ai(i1,2 a)。(分数:15.00)A.INPUT“A”TO A B.INPUT“I=”TO IC.INPUT“R=”TO STR(D.INPUT“K”TOK解析:解析 表达式接收语句的格式;INPUT字符表达式TO内存变量从子过程 SU
17、B1 和 SUB2中可知需接收一个 A 值作为正整数。A.K1B.K0 C.PRIVATE KD.PARA K解析:解析 从语句“K=K+R”可知需定义变量 K 并给变量 K 赋初值 0,目的求Aa 的值。A.X=KB.S1S1+K C.S1=S2+KD.S1=K解析:解析 本语句功能是求分子A1+A2+Aa 的值。A.PUBLIC TB.T0C.T1 D.PARA T解析:解析 从语句“TT*P”可知需定义变量 T 并给变量 T 赋初值 1,目的求 Aa!的值。A.X=TB.S2S1+KC.S2S2+K D.S2T解析:解析 本语句功能是求分母 A1!+A2!+ +Aa!的值。四、B试题 4
18、/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OFFCLEARSTORE 0 TO X,S1,S2,S3DO WHILE X15XX+1DO CASECASEINT(X/2)=X/2S1=S1+X/2CASE MOD(X,3)0S2S2+X/3CASE INT(X/2)X/2S3=S3+1ENDCASEENDDO? X,S1,S2,S3SET TALK ONRETURN(分数:12.00)(1).X 的输出结果为 _。(分数:3.00)A.0B.14C.15 D.16解析:解析 当 X=15 时
19、,不再执行 DO WHILE/ENDDO 循环。(2).S1 的输出结果为 _。(分数:3.00)A.56B.28 C.14D.15解析:解析 DO CASE/ENDCASE 语句,当所给条件满足 CASE 中的任一条件时,不再判断其他的 CASE 分支,而是结束 DO CASE 循环。 能被 2 整除的数是 2,4,6,8,10,12,14,所以S10+2/2+4/2+6/2+8/2+10/2+12/2+14/228。(3).S2 的输出结果为 _。(分数:3.00)A.9 B.10C.15D.16解析:解析 能被 3 整除的数是 3,6,9,12,15。但当 X6,12 时,执行 CASE
20、INT(X/2)X/2 分支,不再执行 CASE MOD (X,3)0 分支。 所以满足第二个分支的条件只有 3,9,15 即S20+3/3+9/3+15/39。(4).S3 的输出结果为 _。 A4 B,5 CS D7(分数:3.00)A.B. C.D.解析:解析 CASE INT(X/2)X/2 S3S3+1 分支的功能是不能被 2 和 3 整除而执行本分支的次数。当 X1,5,7,11,13 时,执行本语句,共执行了 5 次。五、B试题 5/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】SET TALK OF
21、FCLEARSS0FOR X1 TO 10 STEP 3SSSS+XENDFOR? SS(分数:12.00)(1).SS 的输出结果为 _。(分数:3.00)A.22 B.18C.12D.19解析:解析 循环前 SS 的初值为 0,是用来存放累加结果的。第一次开始循环,X 的值为 1,小于 10,满足循环条件,结果 SS 的累加值为 1,第二次开始循环,X 的值变为 4(X 的值自动增加了步长 3),小于10,满足循环条件,结果 SS 的累加值为 5;第三次开始循环,X 的值变为 7,小于 10,满足循环条件,结果 SS 的累加值为 12;第四次开始循环,X 的值变为 10,等于 10(但不大
22、于 10),仍然满足循环条件,结果 SS 的累加值为 22,第五次开始循环,X 的值变为 13,大于 10,不满足循环条件,循环终止。最后 SS的值为 22。该程序也就是求 1+4+7+10 的值。(2).若将 STEP 3 改为 STEP 1,则 SS 的输出结果为 _。(分数:3.00)A.22B.35C.45D.55 解析:解析 当 STEP 3 改为 STEP 1 时,即求 1+2+3+10 的和,其值为 55。(3).若将 STEP 3 删除,则 SS 的输出结果为 _。(分数:3.00)A.22B.35C.45D.55 解析:解析 若省略 STEP 步长,则递增步长为 1。所以本题
23、和第(18)题是一样的。(4).若将 STEP 3 改为 STEP -1 时,则 SS 的输出结果为 _。(分数:3.00)A.22B.0 C.1D.-1解析:解析 语句 For X1 T0 10 STEP -1 是不正确的,所以本题不执行 FOR/ENDFOR 循环。最后 SS 输出初值 0。六、B试题 6/B(总题数:1,分数:12.00)说明:阅读下列程序(段)并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】* 主程序:AAA. PRGSET TALK OFFCLEARK20Y=30DO BBB?X,YRETURN* 子程序:BBB. PRGPRIVATE YX40Y
24、=50RETURN(分数:12.00)(1).程序执行后的显示结果为 _。(分数:3.00)A.20 30B.40 50C.30 40D.40 30 解析:解析 在子程序中,X 被重新赋值为 40,变量 Y 是私有变量,在子程序结束后,主程序中的 Y 值不变。(2).若将 PRIVATE Y 删除,则程序执行后的显示后果为 _。(分数:3.00)A.20 30B.40 50 C.30 40D.40 30解析:解析 X、Y 都是公有变量,执行子程序后,X、Y 被重新赋为 40,50。(3).若将 PRIVATE Y 改为 PRIVATE X,则程序执行后的显示结果为 _。(分数:3.00)A.2
25、0 30B.40 50C.20 50 D.40 30解析:解析 变量 X 是私有变量,在子程序结束后,变量 X 恢复初值 20,Y 是公有变量,被重新赋值50。(4).若在 PRIVATE Y 后加一条 PRIVATE X 语句,则程序执行后的显示结果为 _。(分数:3.00)A.20 30 B.40 50C.20 50D.40 30解析:解析 在子程序中,变量 X 和 Y 都是私有变量,子程序结束,X 和 Y 值都为初值 20 和 30。七、B试题 7/B(总题数:1,分数:14.00)1.编写程序,从键盘输入十个数,然后提出其中的最大值和最小值。(分数:14.00)_正确答案:()解析:程
26、序代码如下: CLEAR INPUT“请输入一个数:” TO a STORE a TO ma,mi FOR i2 TO 10 INPUT“请输入一个数:” TO a IF maa ma=a ENDIF IF mia mia ENDIF ENDFOR ?“最大值:”,ma ?“最小值;”,mi RETURN 解析 程序首先读入一个数,一个数的最大值和最小值就是它本身。然后进入循环语句,读入其他 9 个数。每读一个数,就让该数分别与 ma 和 mi 相比较。ma 和 mi 总是保存着到目前为止已经读入的所有数中的最大值和最小值。八、B试题 8/B(总题数:1,分数:14.00)2.设计一个表单,当
27、单击“计算”按钮时,求出连续 N 个不是 7 的倍数的自然数之和,当和是 101 的倍数时,则在列表框中显示所有求出的不是 7 的倍数的数(如下图所示)。试编写“计算”按钮的 Click 事件代码。 (分数:14.00)_正确答案:()解析:编写 Command1 的 Click 事件代码如下: THISFORM. LIST1. CLEAR STORE 0 TO AA,BB DO WHILE .T. BBBB+1 IF MOD (BB,7)0 THISFORM. LIST1. ADDLISTITEM(STR(BB,5),BB,1) AAAA+BB THISFORM. LIST1. ADDLISTITEM(STR(AA,5),BB,2) IF MOD(AA,101)0 EXIT ENDIF ENDIF ENDDO