1、浙江计算机二级 VF模拟试卷 8及答案与解析 一、程序阅读选择题 阅读下列程序说明并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 0 【程序说明】 程序功能是判断一个自然数是否为质数。 【程序】 SET TALK OFF INPUT“请输入一个大于 1的自然数: ” (1) K=0 &K值为 0表示所输入的数是质数,为 1表示不是质数 J=2 DO WHILE J N IF MOD(N, J) (2) (3) LOOP ELSE K 1 EXIT ENDIF ENDDO IF K 0 ? (4) +“是质数 ” ELSE ? “NO!” ENDIF SET TALK ON RET
2、URN ( A) ON N ( B) TO N ( C) GO N ( D) INTO N ( A) 0 ( B) 0 ( C) =0 ( D) 0 ( A) J ( B) J=J1 ( C) J=J+1 ( D) J J+2 ( A) STR(N) ( B) VAL(N) ( C) UPPER(N) ( D) REPLICATE(N) 4 【程序说明】 程序功能是用两种循环步长值来求 1+2+3+50 的值。 【程序一】 S 0 FOR (5) (6) ENDFOR ? S RETURN 【程序二】 S 0 FOR (7) S=S+N ENDFOR (8) RETURN ( A) N=50
3、TO 1 ( B) N 1 TO 50 STEP-1 ( C) N=1 TO 50 ( D) S 1 TO 50 ( A) S N ( B) S S+N ( C) N S+N ( D) S 1+N ( A) N=50 TO 1 ( B) N 50 TO 1 STEP-1 ( C) N 1 TO 50 STEP-1 ( D) N=1 TO 50 STEP ( A) PRINT S ( B) WRITE S ( C) #S ( D) ? S 8 【程序说明】 设有图书表 TSH,包括字段 (总编号、分类号、书名、作者、出版单位、单价 );读者表 DZH(借书证号、姓名、性别、单位、职称、地址 );
4、借阅表JY(借书证号、总编号、借阅日期 、备注 )。下面程序的功能是打印已借书读者的借书证号、姓名、单位以及借阅图书的书名、单价、借阅日期。 【程序】 SET TALK OFF SELECT 1 USE DZH (9) TO DSHH SELECT 2 USE TSH INDEX ON 总编号 TO SHH SELECT 3 USE JY SET RELATION TO 借书证号 INTO A (10) LIST (11) TO PRINT CLOSE ALL SET TALK ON RETURN ( A) INDEX ON 借书证号 ( B) INDEX ON 分类号 ( C) INDEX
5、ON 书名 ( D) INDEX ON 姓名 ( A) SET RELATION OFF A ( B) SET RELATION OFF B ( C) SET RELATION TO 总编号 INTO BADDI ( D) SET RELATION TO 总编号 INTO A ADDI ( A)借书证号, B.姓名, B.单位, A.书名, A.单价,借阅日期 ( B)借书证号, A.姓名, A.单位, B.书名, B.单价,借阅日期 ( C) B.姓名 , B.单位, A.书名, A.单价 ( D) A.姓名, A.单位, B.书名, B.单价 11 【程序】 SET TALK OFF CL
6、EAR STORE 10 TO A STORE 20 TO B SET UDFPARMS TO REFERENCE DO SWAP W1TU A, (B) ? A, B PROCEDURE SWAP PARAMETERS X1, X2 TEMP X1 X1 X2 X2 TEMP ENDPROC SET TALK ON RETURN 12 A的输出结果为 _。 ( A) 10 ( B) 20 ( C) 30 ( D) 5 13 B的输出结果为 _。 ( A) 10 ( B) 20 ( C) 30 ( D) 5 14 若将 “DO SWAP WITH A, (B)”改为 “DO SWAP WITH
7、 A, B”,则 A, B的输出结果为 _。 ( A) 10 20 ( B) 20 20 ( C) 20 10 ( D) 10 10 15 若将 “DO SWAP WITH A, (B)”改为 “D()SWAP WITH (A), B”,则 A, B的输出结果为 _。 ( A) 10 20 ( B) 20 20 ( C) 20 10 ( D) 10 10 15 【程序说明】 如果在命令窗口输入并执行命令 “LIST名称 ”后在主窗口中显示: 记录号 名称 1 电视机 2 计算机 3 电话线 4 电冰箱 5 电 线 假定名称字段为字符型、宽度为 6。 【程序】 GO 2 SCAN NEXT 4
8、FOR LEFT (名称, 2) “电 ” IF RIGHT (名称, 2) “线 ” LOOP ENDIF ? 名称 ENDSCAN 16 程序段的输出结果为 _。 ( A)电话线 ( B)电冰箱 ( C)电冰箱电线 ( D)电视机电冰箱 17 若将 “LOOP”改为 “EXIT”,则程序段的输出结果为 _。 ( A)电话线 ( B)电线 ( C)电冰箱 ( D)无任何显示 18 若将 “LOOP”改为 “EXIT”,且 “? 名称 ”放在 “ENDSCAN”的下方 ,则程序段的输出结果为 _。 ( A)电话线 ( B)电线 ( C)电冰箱 ( D)电视机 19 若将 “LOOP”删除, “
9、? 名称 ”放在 IF ENDIF 语句中,即取代 “LOOP”的位置,则程序的输出结果为 _ 。 ( A)电话线 ( B)电线 ( C)电话线电线 ( D)无任何显示 19 【程序说明】 使用如下表的数据:20 SQL语句 SELECT部门号, MAX(单价 *数量 )FROM商品表 GROUP BY 部门号 查询结果有几条记录 ? ( A) 1 ( B) 4 ( C) 3 ( D) 10 21 SQL语句 SELECT 产地, COUNT(*)提供的商品种类数; FROM 商品表; WHERE 单价 200; GROUP BY 产地 HAVING COUNT(*) 2; ORDER BY
10、2 DESC 查询结果的第一条记录的产地和提供的商品种类数为 _。 ( A)北京, 1 ( B)上海, 2 ( C)广东, 5 ( D)广东, 7 22 SQL语句 SELECT 部门表 .部门号,部门名称, SUM(单价 *数量 ), FROM 部门表,商品表; WHERE 部门表,部门号商品表 .部门号; GROUP BY 部门表 . 部门号 查询结果为 _。 ( A)各部门商品数量合计 ( B)各部门商品金额合计 ( C)所有商品金额合计 ( D)各部门商品金额平均值 23 SQL语句 SELECT 部门表 .部门号,部门名称,商品号,商品名称,单价; FROM 部门 表,商品表; WH
11、ERE部门表 .部门号商品表 .部门号; ORDER BY 部门表 .部门号 DESC,单价 查询结果的第一条记录的商品号为 _。 ( A) 101 ( B) 202 ( C) 110 ( D) 112 24 SQL语句 SELECT 部门名称 FROM 部门表 WHERE 部门号 IN (SELECT 部门号, FROM 商品表 WHERE 单价 BETWEEN 420 AND 1000) 查询结果为 ( A)家 用电器部、电话手机部 ( B)家用电器部、计算机部 ( C)电话手机部、电视机摄像机部 ( D)家电电器部、电视机摄像机部 二、编写程序题 25 编写一个用户自定义函数 SGN()
12、,当自变量为正数时,返回 1;当自变量为负数时,返回 -1;当自变量为零时,返回 0。 26 设计一个简单的表单 (如下图所示 )。其中 3个控件分别是:标签 Label1、命令按钮 Com mand1、复选框 Check1。为 Command 1编写 Click事件,当单击该命令按钮时释放该表单;为 Check 1编写 Interactive Change事件,当选中该复选框时在Label1上显示 “身体健康 !”字样,否则在 Label1上不显示任何信息,其中,Command1. Caption “关闭 ”, Check1. Caption=“合格 ”。浙江计算机二级 VF模拟试卷 8答案
13、与解析 一、程序阅读选择题 阅读下列程序说明并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 1 【正确答案】 B 【试题解析】 INPUT命令格式: INPUT字符表达式 TO内存变量。 2 【正确答案】 D 【试题解析】 质数只能被 1和本身整除的数。所以质数不能被除 1或本身的数整除,即本题取模后值不为 0。 3 【正确答案】 C 【试题解析】 变量 J依次指向 2到 N-1之间的整数,所以需向后移动 J的值,即J J+1。 4 【正确答案】 A 【试题解析】 STR()是数值型转 换成字符型函数, VAL()是字符串转换成数值型函数, UPPER()是字母小写转换成大写函数
14、, REPLICATE()是字符重复函数。 5 【正确答案】 C 【试题解析】 FOR ENDFOR 格式 1: FOR循环变量 =初值 TO终值 STEP 步长 语句序列 EXIT LOOP ENDFOR/NEXT 功能:当循环变量的值不大于终值时,执行循环操作。每循环一次,循环变量的值自动递增一个步长值。 循环变量为任意一个内存变量,不需要事先定义。 初值、终值、步长均为一个数值表 达式,其值可为正或负或小数。 若不选 STEP步长 选项,递增步长为 1。 LOOP选项实现循环短路操作, EXIT选项实现结束当前循环操作。 格式 2: FOREACH变量 IN数组变量 /集合 语句系列 E
15、XIT LOOP ENDFOR/NEXT变量 功能:对数组变量或集合中的每个元素执行循环操作。 6 【正确答案】 B 【试题解析】 本语句的功能是求 1+2+3+ +50 的值。 7 【正确答案】 B 【试题解析】 FOR E NDFOR 循环中,当循环变量初值大于终值时, STEP步长为负值。本题是 1 50的自然数依次相加,所以步长为 -1。 8 【正确答案】 D 【试题解析】 语句的功能是显示 1+2+3+ +50 的结果,在 Visual FoxPro中,换行输出语句的命令用 ?。同行输出语句用 ?。 9 【正确答案】 A 【试题解析】 读者表 DZH的主键是借书证号字段,为了提高查找
16、速度,需建立索引,读者表 DZH的借书证号应为主索引。 10 【正确答案】 C 【试题解析】 三表之间通过总编号和借书证号建立 联系。因程序中已通过借书证号建立了表 DZH和 JY的联系。还需通过关键字总编号建立表 TSH和 JY的联系。 建立关联的格式: SET RELATION TO关系表达式 1 INTO工作区 /表别名 1, 关系表达式 2 INTO工作区 2 /表别名 2 IN工作区 /表别名 ADDITIVE 删除关联的格式: SET RELATION OFF INTO工作区 /表别名 11 【正确答案】 B 【试题解析】 此空所属语句的功能是打印已借书读者的借书证号、姓名、单位以
17、及借阅 图书的书名、单价、借阅日期书名和单价是图书表 TSH中的字段,姓名和单位是读者表 DZH中的字段,所以选项 B正确。 12 【正确答案】 B 13 【正确答案】 B 【试题解析】 命令 SET UDFPARAMS TO REFERENCE 用来设置参数传递方式为按引用传递。也就是说,当形参变量值改变时,实参变量也是随之改变。但是由于本题采用的调用方式是: DO WITH,所以调用方式不受参数 UDFPARAMS的影响。调用过程中变量 A是按引用传递,变量 B用括号括起来,因此 B始终是按值传递。模块 SWAP的 功能是将两个变量交换。程序开始时变量 A和 B的值分别为 10和 20,执
18、行模块 SWAP之后将 A和 B交换,由于变量 A是按引用传递,因此交换后变量 A指向 B的地址,因此返回主程序后 A的值为 20,变量 B为按值传递,模块结束后,其值仍为 20,因此返回主程序后,变量 A和 B指向同一个地址,其值均为 20。 14 【正确答案】 C 【试题解析】 变量 A、 B都是按引用传递,因此,交换后变量 A指向 B的地址, B指向 A的地址,所以返回主程序后, A、 B值分别为 20、 10。 15 【正确答案】 D 【试题解析】 变量 A是 按值传递,模块结束后,其值仍为 10。 B是按引用传递,交换后变量 B指向 A的地址。所以返回主程序后, A值为 10, B值
19、也为 10。 16 【正确答案】 C 【试题解析】 本程序考查对 SCAN语句的掌握和理解。 GO 2是指指针移动到第二条记录, SCAN语句接下来扫描下面的四条记录,根据 SCAN语句的循环条件LEFT(名称, 2) “电 ”可知,只要是名称字段中第一个字是 “电 ”就执行循环语句;在 SCAN循环语句内部 IF RIGHT (名称, 2)=“线 ” LOOP ENDIF 表示如果记录的最后一个字是 “线 ”就跳到 循环的开始。也就是说程序从第二条记录开始查找第一个字是 “电 ”并且最后一个字不是 “线 ”的记录来显示,符合显示条件的只有 “电冰箱 ”和 “电线 ”两条记录;这道题容易出错的
20、是误以为 “电线 ”最后一个字是 “线 ”,因为字段宽度是 6,所以从右边开始两个字节是空格。 17 【正确答案】 D 【试题解析】 当扫描第三条记录时,进入 IF语句后,碰到 EXIT就直接结束SCAN ENDSCAN 循环,不执行 “?名称 ”语句,所以结果无任何显示。 18 【正确答案】 A 【试题解析】 本题与第 (17)题的不同之处, 在于 “?名称 ”语句的位置不同,当扫描到第三条记录时,结束 SCAN ENDSCAN 循环后,还要执行 “? 名称 ”语句,所以结果显示电话线。 19 【正确答案】 C 【试题解析】 经分析第三条记录和第五条记录满足条件,所以显示结果是电话线电线。
21、20 【正确答案】 C 【试题解析】 本小题中 SQL语句的功能是:在商品表中按部门号进行分组,分组后从每个组中查询出单价和数量乘积最大的记录,从原始表中可以看出,表中有 3个部门号,所以该 SQL执行后应该有 3条记录。 21 【正确答案】 C 【试题解析】 本小题中所写出的 SQL语句的功能是:在商品表中查询那些提供的商品单价大于 200元,并且提供两种以上商品的产地,并按照提供的商品种类数降序排列,从原始数据表中可以计算出,满足条件的记录为产地为广东,商品种类个数为 5。 22 【正确答案】 B 【试题解析】 该语句利用 SUM()函数在商品表中查询各部门商品的金额合计,该题涉及多表查询
22、,其执行过程是,从部门表中选取部门号和部门名称以及单价和数量字段,乘积后求和,查询出的记录同时要满足部门号字段和商品表中的部门号相等。 GROUP BY 后的分组字段是部门号,因此它计算的是,各个部门商品金额的合计。 23 【正确答案】 A 【试题解析】 该 SELECT语句的功能是在部门表和商品表两个表中查询,利用SUM()函数在商品表中查询各部门商品金额合计,并将结果按照部门表中的部门号降序排列,单价字段作为排序的次关键字。因此,所选出记录的商品号应该是0101。 24 【正确答案】 A 【试题解析】 该语句的执行过程是,首先在内层查询中查找哪个部门的商品单价在 420元和 1000元之间
23、,并检索出部门号,然后,在外层查询在部门表中,查找出与之对应的部门名称。 二、编写程序题 25 【正确答案】 程序代码如下: FUNCTION SGN PARAMETERS x DO CASE CASE x 0 y=1 CASE x 0 y 0 OTHERWISE y -1 ENDCASE RETURN y 26 【正确答案】 编写 Command1的 Click事件代码如下: ThisForm. Release 编写 Check1的 InteractiveChange事件代码如下: IF This. Value 1 ThisForm. Label1 Caption “身体健康 !” ELSE ThisForm. Label1, Caption “” ENDIF 【试题解析】 InteractiveChange是一个当用户使用键盘或鼠标更改控制的值时发生的事件。当复选框处于选中状态时,其 Value值为 1,否则为 0。