二级Visual FoxPro语言笔试试题(B)
(共100分)
注意事项:1. 请将一,二题的答案填涂到答题卡。
2. 请将三、四、五题的答案做在答题纸上。
一、单项选择题(每小题1分,共30分)
1.
达式LEN('ABC'-'DE')的值是( C )。
(A) 1 (B) 3 (C) 5 (D) 7
2. 数据表中逻辑型、日期型、备注型字段的宽度分别为( D )。
(A) 2,8,8 (B) 2,4,10 (C) 1,8,任意 (D) 1,8,4
3. 查询设计器中“筛选”选项卡对应的SQL短语是(D )
(A) ORDER BY (B) JOIN (C) INTO (D)WHERE
4. 打开数据库的命令是( A )
(A) modify database (B) open database
(C) create database (D) delete database
5. 下列命令中,不能求出当前表中所有记录中正确的是( D )
(A) COUNT all to x (B) RECCOUNT ()
(C) CALCULATE CNT() to x (D) SUM TO COUNT
6. 关于Visual FoxPro的数组,下面说法中正确的是( B )
(A) 使用数组之前都要先声明或定义
(B) 数组中各数组元素的数据类型可以不同
(C) 定义数组后,系统为数组的每个数组元素赋以数值0
(D) 数组元素的下标下限是0
7. 已知st=“畅通森林宜居重庆”,以下表达式运行结果为字符串“森林重庆”的是( D )
(A) ‘森林’$st and len(st) (B) left(st,5,4)+space(4)
(C) At(‘森林’,st)+left(st,4) (D) Substr(st,5,4)+right(st,4)
8. 在Visual FoxPro中,利用zap命令对当前数据表的记录作了删除操作,则当前数据表的recno(),eof(),bof()的值为( A )
(A)1 .T. .T. (B)0 .T. .T. (C)1 .T. .F. (D)0 .T. .F.
9. 表单文件的扩展名是(D )
(A)frx (B)cdx (C)mpr (D)scx
10. 已知D="04/25/2009",问表达式LEN(SPACE(5))+&D的计算结果是(A )。
(A) 数值型 (B)字符型 (C) 日期型 (D)数据类型不匹配
11. 已知a=date(),以下正确的表达式是( D )
(A) vartype(a)+7 (B) vartype(ab)-90
(C) vartype(ab)+a (D) vartype(a)- '9'
12. 函数STR(-345.6.3)的返回值是( D )
(A)-345 (B)-34 (C)345 (D)***
13.语句Release All Like X?能够删除的内存变量是( C )
(A) _X (B) X_007 (C)xx (D)x123
14.Viaual FoxPro数组变量的维数有( B )
(A)只有一维 (B)一维和二维 (C)只有二维 (D) 一维、二维、三维
15.将数据库表从数据库移出后,该表( A )
(A)成为自由表 (B)被删除 (C)放入回收站 (D)
被清空
16. 使用USE命令打开一个数据表后,若要显示其中的记录,可使用的命令是( A )。
(A)BROWSE (B)SHOW (C)VIEW (D)OPEN
17. 在已打开的表文件中有“学号”字段,此外又定义了一个内存变量“学号”,要把内存变量的“学号”的值传送给当前记录的学号字段,应用使用命令( B )
(A) 学号=M->学号 (B) REPLACE 学号 WITH M->学号
(C) STORE M->学号 TO 姓名 (D) GATHER FROM M->学号 FILESDS 学号
18. 在Visual FoxPro中,使用SQL命令将职工表ZG.DBF中的职工年龄AGE字段的值增加1岁,应该使用的命令是 (D)
(A)REPLACE AGE WITH AGE+1 (B)UPDATE AG AGE WITH AGE+1
(C)UPDATE SET AGE WITH AGE+1 (D)UPDATE ZG SET AGE=AGE+1
19.从学生档案表XSDA.DBF中查询所有姓赵的学生信息,可使用SQL语句是( A )
(A) SELECT * FROM ZGXX WHERE LEFT(姓名,2)="赵"
(B) SELECT * FROM ZGXX WHERE RIGHT(姓名,2)="赵"
(C) SELECT * FROM ZGXX WHERE SUBSTR(姓名,2)="赵"
(D) SELECT * FROM ZGXX WHERE STR (姓名,2)="赵"
20. 从学生表中查询所有年龄大于22岁的学生并显示其姓名,其SQL命令是( C )
(A) SELECT 年龄FROM 学生表 WHERE 姓名>22
(B) SELECT 年龄FROM 学生表 WHERE max(姓名)
(C) SELECT 姓名FROM 学生表 WHERE 年龄>22
(D) SELECT 姓名FROM 学生表 WHERE between(年龄,22,20)
21. 下列选项中,不属于SQL数据定义功能的是( A )
(A) SELECT (B) CREATE (C) ALTER (D) DROP
22. SQL查询语句中ORDER BY子句的功能是( A )
(A) 对查询结果进行排序 (B)分组统计查询结果
(C) 限定分组检索结果 (D) 限定查询条件
23. 下面是关于表单数据环境的叙述,其中错误的是( B )
(A)可以在数据环境中加入与表单操作有关的表
(B)数据环境是表单的容器
(C)可以在数据环境中建立表之间的联系
(D)表单自动打开其数据环境中的表
24.执行下列命令后,屏幕显示结果是( C )
a="加强逻辑思维训练好"
b=lem(a)/2
?substr(a,iif(mod(b,-2)=-1,b,b+1),4)
(A)加强 (B)逻辑 (C)思维 (D)训练
25.下列程序的运行结果是( A )
Dimension x(6)
Store l to x(1),(x)2
For i=3 to 5
X(i)=2*x(i-1)
Endfor
?x(6)
(A).F. (B).T. (C)16 (D)32
26.在Visual Foxpro 中,为了将表单从内存中释放(清除),可将表单中退出命令按钮的Click事件代码设置为( D )
(A)ThisForm.Refresh (B)ThisForm.Delete
(C) ThisForm.Hide (D)ThisForm.Release
27.创建对象时发生的事件是( C )
(A)LostFocus (B)InteractiveChange
(C) Init (D)load
28.用二维表来表示数据实体之间的联系的数据模型是( A )
(A)关系型 (B)结构型 (C)层次型 (D)网状型
29.以下程序段执行后,数据记录指针指向(B)
dimension a(3)
a(1)='top'
a(2)='bottom'
a(3)='skip'
go &a(2)
(A)表头 (B)表的末记录 (C)第5条记录 (D)第2条记录
30.在Visual foxpro中,下列各项的数据类型所占空间的字节数相等的是( D )
(A)日期型和逻辑型 (B)日期型和通用型
(C)逻辑型和备注型 (D)备注型和通用型
二.判断分析题(每小题1分,共10分。本题答案请填涂在答题卡第三题处)
1.命令 ?a=1 和命令 STORE 1 toa,b,c 都可以给内存变量 a 斌 1 值( F )
2.只有数据库表才能建立主索引( T )
3.一个表可在多个工作区中打开( F )
4.命令 WAIT TO M的作用是等待输入一个字符到变量M中( T )
5.在SQL查询中,不允许重新指定列的顺序 F
6.在SQL查询语句中,TOP短语不需要与ORDER BY 短语配对使用( F )
7.可以通过查询来更新源表中的数据。(F)
8.投影运算就是在一个关系中选出满足指定条件的那些记录( F )
9.逻辑删除记录,形式上就是在记录的前面加上删除标记“*” T
10.LOCATE 命令既可以在已打索引的数据表中查询,也可以在关闭索引(或无索引)的数据表中查询( T )
三.程序填空题(每空2分,共20分)
1.利用文本框、标签控件和命令按钮控件设计如图1所示表单,表单界面及command1控件的click事件代码如下所示。执行该表单时,当向Text1,Text2中分别输入字符:32,48后单击command1,则label2,处显示的内容是16,请完善程序。
command1控件的click事件代码:
ma=va1(THISFORM.Text1.Value)
mi=va1(THISFORM.Text2.Value)
DO WHILE___①________
Tempmin=mi
Mi=ma%mi
Ma=tempmin
ENDDO
THISFORM.Labe12.Caption=____②_______
2.设图书管理数据库中有一个图书表,其结果如下:
图书表(总编号/C,分类号/C,书名/C,作者/C,出版单位/C,单价/N)
试对实现以下功能的SQL语句填空。
1 查询出版单位包括:“重庆”和“教育”的图书。
SELECT书名,作者,出版单位 FROM 图书表 WHERE__③_____ “重庆%”and 出版单位1ike “%教育%”
2 查询各个出版单位的图书的最高单价和册数。
SELECT出版单位 __④_____ count(*) FROM 图书表___⑤____
3.一数据表RZ.DBF中有两个日期型字段D1、D2和一个数值型的字段X,每一条记录都包含两个日期(存放在字段D1和D2中)。以下程序功能是:计算每条记录的D1,D2两个日期的相差的天数,即两个日期相差的绝对值,并将结果存放在该记录的字段X中。请填空完成。
*主程序main.prg *子程序 SUB.PRG
___⑥______ PROC SUB
T=0 PARPMETERS R1,R2,TS
SCAN TS=ABS(__⑧_____)
DO SUB__⑦_____ RETURN
REPLACE X WITH T
ENDSCAN
USE
4.有一学生表(学号/C/8、姓名/C/10、生日/D、 ……)。以下程序的功能是显示所有奇数月出生的学生名单,并统计出七月和九月的学生人数。请填空完成。
Use 学生表
S=0
Scan for month(生日)%2#0
?学号,姓名
IF ___⑨______
S=S+1
Endif
____⑩_____
?S
Return
四、读程序写出运行结果(每小题5分,共20分)
1.如图2所示一表单。已知标签label1(左)、label2(右)的初值均为1,请写出当第三次单击“计算”按钮时,表单上的两个标签显示的数值是什么?
“计算”按钮的Click事件代码
x=val(thisform.label1.caption)
y=val(thisform.label2.caption)
x=x+y
y=y+x
if x>1000 or y>1000
x=1
y=1
endif
thisform.label1.caption=str(x,3)
thisform.label2.caption=str(y,3)
2. 有如下程序,请写出运行结果:
store 0 to n,s
do while .t.
n=n+1
s=s+n
if n<5
loop
else
exit
endif
enddo
?s,n
3. 有如下程序,请写出运行结果:
clear all
public a,b
a=1
b=1
do test1
??a,b
return
procedure test1
private a
a=2
local b
do test2
?a,b
b=5
return
procedure test2
a="建国"
b="60年大庆"
return
4. 已知数据表xs.dbf内容为:
姓名 性别 专业
周淘 女 计算机
章紫逸 女 环境
赵维 女 艺术
李奎 男 机械
季石雨 女 自动化
王保墙 男 管理
设计如图3所示表单,将xs.dbf添加到表单的数据环境中,表单运行后,单击命令按钮“Command1”,标签Label1将显示什么?
command1控件的click事件代码:
SELECT XS
X=""
THISFORM.LABEL1.CAPTION=X
SCAN
IF 性别="男"
EXIT
ENDIF
IF 专业<>"计算机"
X=X+姓名+space(2)
ENDIF
SKIP
ENDSCAN
THISFORM.LABEL1.CAPTION=X
五、程序设计题(每小题10分,共20分)
1. 设计有如图4所示表单,其功能是表单运行后在文本框text1中输入任意ASCII字符串,单击“筛选字母串”按钮,找出其中的字母串,在标签label2的位置显示出来。请编写命令按钮“筛选字母串”的Click事件代码。
图4 表单设计界面
参考代码:
x=alltrim(thisform.text1.value)
y=""
for i=1 to len(x)
x1=substr(x,i,1)
if asc(x1)>=asc("a") and asc(x1)<=asc("z") or asc(x1)>=asc("A") and asc(x1)<=asc("Z")
y=y+x1
endif
endfor
thisform.label2.caption=y
2.有两个学生数据表文件,其结构如下:
学生档案表stu.dbf:学号/C、姓名/C、性别/C。
学生成绩表scj.dbf:学号/C、数学/N、英语/N、语文/N、总分/N、奖学金/C。
按如下要求编写程序:
1 计算SCJ.DBF中的“总分”,并根据总分填写“奖学金”字段(总分>=360, 奖学金字段值为“一等”;360>总分>=340, 奖学金字段值为“二等”;其余奖学金字段值为“三等”)。
2 统计获一等奖学金的人数,并按如下格式输出:
获一等奖学金的学生名单
************************
学号 姓名 总分
—— —— ——
—— —— ——
总计:———人
参考程序:
VFP命令:
SELECT 1
USE STU
INDEX ON 学号 TAG XH
SELECT 2
USE SCJ
REPL ALL 总分 WITH 数学+英语+语文
SCAN
DO CASE
CASE 总分>=360
REPL 奖学金 WITH "一等"
CASE 总分>=340
REPL 奖学金 WITH "二等"
OTHERWISE
REPL 奖学金 WITH "三等"
ENDCASE
ENDSCAN
SET RELA TO 学号 INTO A
?" 获一等奖学金的学生名单"
? "*************************"
? " 学号 姓名 总分 "
X=0
SCAN FOR 奖学金="一等"
? A.学号,A.姓名,总分
X=X+1
ENDSCAN
? "总计:",X, "人"
CLOSE ALL
RETURN
SQL命令:
UPDATE SCJ SET 总分=数学+英语+语文
UPDATE SCJ SET 奖学金="一等" WHERE总分>=360
UPDATE SCJ SET 奖学金="二等" WHERE总分<360 AND 总分>=340
UPDATE SCJ SET 奖学金="三等" WHERE总分<340
?” 获一等奖学金的学生名单”
?”************************”
SELECT STU.学号,姓名,总分 FROM STU,SCJ WHERE STU.学号=SCJ.学号 AND奖学金="一等" TO SCREEN
SELECT COUNT(*) FROM SCJ WHERE 奖学金="一等" INTO ARRAY X
?”总计:”,X(1), ”人”
图1 设计界面
三、1.
①mi<>0
②STR(ma,2)
三、2.
③出版单位 like
④MAX(单价)
⑤group by 出版单位
三、3.
⑥ USE RZ
⑦With D1,D2,T
⑧R1-R2
三、2.
⑨ month(生日)=7 or month(生日)=9
⑩ endscan
图2 表单设计界面
四、1.
13 21
四、2.
15 5
四、3.
建国 . F. 1 60年大庆
四、4.
赵维 季石雨
图3 表单设计界面