一.单选题(36分 每小题1分)1.在VISUAL FOXPRO常用的基类中,运营时不可见的是( ) (A) 计时器 (B)复选框 (C) 列表框 (D) 选项按钮组2.设职工数据表文献已经打开,其中有工资字段,要把指针定位在第一个工资字段的值大于2200元的记录上,应使用命令( )A)LOCATE FOR 工资>2200 (B)SEEK FOR 工资>2200 (C)SEEK 工资>2200 (D)FIND 工资>22003. 在Visual FoxPro中,用zap命令对当前数据表的记录作了删除操作,则当前数据表的eof(),bof()的值为( )A) .T. .F. (B) .F. .F. (C) .F. .T. (D) .T. .T.4.设D1和D2为日期型数据,N为整数,不能进行的运算是( )A) D2-N (B) D1+D2 (C) D1+N (D) D1-D2 5. 在Visual FoxPro中建立查询后,可以从表中提取符合指定条件的一组记录,( )。
(A)但不能修改记录(B)同时又能更新数据(C)但不能设定输出字段 (D)同时可以修改数据,但不能将修改的内容写回原表6. 以下关于“视图”的描述对的的是( )A)视图就是一种查询 (B)视图保存在数据库中 (C)视图只能从一个表派生出来 (D)视图是一个预先定义好的SQL SELECT语句文献7. Visual FoxPro 不支持的数据类型有( )A)通用型 (B)货币型 (C)备注型 (D)变量型8. 下列哪组语句可以将变量X、Y的值互换?( ) (A)X=Y (B)X=(X+Y)/2 (C)X=X+Y (D)C=X Y=X Y=(X-Y)/2 Y=X-Y X=Y X=Y-X Y=C9. 参照完整性规则的更新规则中“限制”的含义是( )A)更新父表中连接字段值时,用新的连接字段自动修改子表中的所有相关记录(B)若子表中有与父表相关的记录,则严禁修改父表中连接字段值(C)父表中的连接字段值可以随意更新,不会影响子表中的记录(D)父表中的连接字段值在任何情况下都不允许更新10. 设A,B,C为三角形的三条边,且A,B,C均大于0。
在以下构成三角形的条件中对的的是( )A) A+B>C,B+C>A,A+C>B (B) A+B>C AND B+C>A AND A+C>B(C) A+B>C AND (B+C>A OR A+C>B) (D) A+B>C OR (B+C>A AND A+C>B)11. 如图所示命令按钮组:,当选择“暂停”时,命令按钮组的值为( )A)0 (B)1 (C)2 (D) 暂停12.下列哪个表达式是非法的( )A) 8 < 4*3 (B) .T.= .F. (C) $32 <> 32 (D) "1" > 013.数据库表的字段或记录可以定义有效性规则,规则可以是( )A)逻辑表达式 (B)字符表达式 (C)数值表达式 (D)前3种都也许14.表达式20+INT(RAND()*100)的取值范围是( ) (A)(0,0) (B)(0,20) (C)(20,120) (D)(20,100)15.表单Form1中有一标签Label1,当如下代码执行后,Label1中显示的内容为( )。
X=-5Y=IIF(X>0,"该数为正数",IIF(X=0,"该数为零","该数为负数"))thisform.label1.caption=Y (A)0 (B)-5 (C)该数为负数 (D)该数为-516.输入一个数X,判断其为正整数的对的表达式为( ) (A) X>0 OR X=INT(X) (B)X>0 AND X=INT(X) (C) X>0 OR X/2=INT(X/2) (D) X>0 AND X/2=INT(X/2) 17.数据表中有字段∶姓名(C)、出生日期(D)、工资(N),设计一表单,表单中添加一个标签label1,要在标签label1中显示表当前记录的姓名、出生日期和工资,可用的命令是( )A) thisform.label1.caption=姓名+出生日期+工资 (B) thisform.label1.caption=姓名+ DTOC(出生日期)+STR(工资,4,1)(C) thisform.label1.caption=VAL(姓名)+VAL(出生日期)+工资(D)thisform.label1.caption= 姓名+出生日期+STR(工资,4)18. 数据库表的主索引字段( )(A)能出现反复值 (B)不能出现反复值或空值(C) 能出现空值 (D)不能出现反复值,但能出现空值19. 可以将表单的活动对象刷新的方法是( )(A) Hide (B) Refresh (C) Release (D) SetFocus20. Visual FoxPro的命令窗口中,使用SET RELATION命令可以建立两个表之间的关系,这种关系是( )。
A)永久性关系 (B)索引关系 (C)临时性关系 (D)都不是21. 扩展名为SCX的文献是( )(A)表单文献 (B) 数据表文献 (C) 数据库文献 (D) 项目文献22. 使用DIMENSION命令定义数组后,各数组元素在没赋值之前数据类型是( ) (A)字符型 (B)数值型 (C)逻辑型 (D)未定义23. 有以下命令序列: X=64-28Y=X=36则变量Y的值为( ) (A)36 (B) 23 (C) .T. (D) .F.24. TIMER控件中用来设定计时器间隔时间长短的属性是( )A) TIMER (B) CLICK (C) INTERVAL (D) SETFOCUS25.对于表单上的某文本框控件来说,下列事件中一定会发生的事件是( )A)Init (B)Click (C)GotFocus (D)Valid26.表单Form1中有一标签Label1,当如下代码执行后,Label1中显示的内容为( )。
k1="*"k2="/"a=15b=7c=3thisform.label1.caption=str(a&k1.b&k2.c) (A)15 (B)35 (C)2.84 (D)15*7/3727~36题用vfp-sql实现,基于如下数据表:图书(书号,书名,作者,出版社,定价)图书销售记录(书号,售书日期,数量,售价,付款方式)其中:定价、售价、数量是数值型,售书日期是日期型,其他是字符型27. 查询图书表中书名包含“计算机”的所有图书信息,对的的SQL语句是( )A) SELECT ALL FROM 图书 WHERE 书名="计算机"(B) SELECT 所有信息 FROM 图书 WHERE 书名="计算机"(C) SELECT ALL FROM 图书 WHERE 书名 not like "计算机"(D) SELECT * FROM 图书 WHERE 书名 like "%计算机%"28. 查询图书定价在80~150(含)范围内的图书名、出版社、定价,对的的SQL语句是( )A) SELECT * FROM 图书 WHERE 80<定价 or定价<150(B) SELECT * FROM 图书 WHERE 80≤定价≤150(C) SELECT 图书名,出版社,定价 FROM 图书 WHERE between 80 and 150(D) SELECT 图书名,出版社,定价 FROM 图书 WHERE not between 80 and 15029. 查询2023年9月图书销售信息(书名、数量和售书日期),对的的SQL语句是( )。
A)SELECT 图书.书名,数量,售书日期 FROM图书,图书销售记录WHERE;图书.书号=图书销售记录.书号 AND售书日期=ctod("2023-9-*") (B)SELECT 图书.书名,数量,售书日期 FROM图书,图书销售记录; WHERE 图书.书号=图书销售记录.书号 AND;YEAR(售书日期)=2023 AND MONTH(售书日期)=9(C)SELECT 图书.书名,数量,售书日期 FROM图书,图书销售记录; WHERE 图书.书号=图书销售记录.书号 AND;YEAR(售书日期)=2023 OR MONTH(售书日期)=9 (D)SELECT 图书.书名,数量,售书日期 FROM图书,图书销售记录WHERE; 图书.书号=图书销售记录.书号 AND售书日期=2023-930. 查询“人民文学出版社”图书的销售数量,对的的SQL语句是( )A)SELECT 出版社,sum(数量) FROM图书,图书销售记录; WHERE 图书.书号=图书销售记录.书号 AND;出版社="人民文学出版社"(B)SELECT 出版社,sum(数量) FROM图书,图书销售记录; WHERE 出版社="人民文学出版社" (C)SELECT 出版社,count(数量) FROM图书,图书销售记录; WHERE 图书.书号=图书销售记录.书号 AND;出版社="人民文学出版社" (D)SELECT 出版社,count(数量) FROM图书,图书销售记录; WHERE 出版社="人民文学出版社"31. 查询不同“付款方式”图书的销售总量(含数量与售价),对的的SQL语句是( )。
A)SELECT付款方式,AVG(数量),SUM(售价) FROM图书销售记录 GROUP BY 付款方式(B)SELECT付款方式,SUM(数量),SUM(售价) FROM图书销售记录 GROUP BY 付款方式(C)SELECT付款方式,SUM(数量),AVG(售价) FROM图书销售记录 GROUP BY 付款方式(D)SELECT付款方式,CNT(数量),CNT(售价) FROM图书销售记录 GROUP BY 付款方式32. 查询单笔图书售价最高的前10名的图书名、定价、售价,对的的SQL语句是( )A)SELECT 书名,定价,售价 FROM 图书INNER JOIN 图书销售记录 ; ON 图书.书号=图书销售记录.书号 ORDER BY 售价 (B)SELECT TOP 10 书名,定价,售价 FROM 图书INNER JOIN 图书销售记录 ; ON 图书.书号=图书销售记录.书号 ORDER BY 售价 (C)SELECT 书名,定价,售价 FROM 图书INNER JOIN 图书销售记录 ; ON 图书.书号=图书销售记录.书号 ORDER BY 售价 DESC(D)SELECT TOP 10 书名,定价,售价 FROM 图书INNER JOIN 图书销售记录 ; ON 图书.书号=图书销售记录.书号 ORDER BY 售价 DESC33. 删除图书定价低于30(不含)的销售记录,对的的SQL语句是( )。
A)DELETE FROM 图书销售记录 WHERE 书号 IN ;(SELECT 书号 FROM 图书 WHERE 定价<30)(B)DELETE FROM 图书销售记录 WHERE 书号= ;(SELECT 书号 FROM 图书 WHERE 定价<30) (C)DROP FROM 图书销售记录 WHERE 书号 IN ;(SELECT 书号 FROM 图书 WHERE 定价<30) (D)DROP FROM 图书销售记录 WHERE 书号= ;(SELECT 书号 FROM 图书 WHERE 定价<30)34. 将作者为“金庸”的图书定价提高15%,对的的SQL语句是( )A)UPDATE 图书 SET 定价=定价*(1+15%) WHERE 作者 like "金庸"(B)UPDATE 图书 SET 定价=定价*1.15 WHERE 作者 like "金庸"(C)UPDATE 图书 SET 定价=定价*1.15 WHERE 作者$"金庸"(D)UPDATE 图书 SET 定价=定价*(1+15%) WHERE 作者==金庸35. 将图书中字段“出版社”的类型和长度修改为C/40,对的的SQL语句是( )(A) RENAME 出版社 C(40) FOR 图书(B) ALTER 图书 RENAME 出版社 C 40(C) ALTER TABLE 图书 ALTER 出版社 C(40)(D) ALTER TABLE图书CHANG 出版社C(40)36. 在图书中添加一个字段“版次/C/30”,对的的SQL语句是( )(A) INSERT LIST 图书 ADD 版次 C(30)(B) INSERT TABLE 图书 ADD 版次 C(30)(C) ALTER LIST 图书 ADD 版次 C(30)(D) ALTER TABLE 图书 ADD 版次 C(30)二、判断题(对打√,错打Χ;每小题1分,共10分)1.vfp数组必须先定义后使用,允许定义三维数组。
)2.定义VFP全局变量ss(如:PUBLIC ss),则ss的初值是.f. )3.主索引只能在数据库表中指定,而候选索引在数据库表和自由表中都可使用 )4.用户可以自己新建事件和方法 )5.宏替换函数&后的变量可以是任意类型的变量 )6.列表框的AddListItem(4,2,3)方法表达把在列表框的第4行第2列显示3这个数字 )7.命令copy stru to 既能复制表文献的结构又能复制表文献的记录 )8.表达式ROUND(155.125,-2)+MOD(35,-4)的结果是199 )9.在默认状态下,关系表达式"An"<"apple"的结果为.T. )10.对某个关系进行投影或联接运算后,运算的结果还是二维表 )三、填空题(20分,每空2分)1.如图1所示,表单运营后,在文本框中输入考号,单击查询按钮,假如成绩表中有此人,则显示此人的听力和口语成绩假如成绩表中无此人,则显示“查无此人”成绩表(文献名:yy.DBF)考号听力口语1001808510029095 图1“查询”按钮的Click事件代码如下:use yy kh=_______①______ locate for 考号=alltrim(kh) if __②__ thisform.label4.caption=str(听力,3) thisform.label5.caption=str(口语,3) else thisform.label4.caption=_______③______ thisform.label5.caption=""endifuse2.设计如图所示的表单,表单由编辑框和命令按钮组成。
表单运营后,单击“显示”按钮,可以在编辑框中输出3~100之间的所有素数显示”按钮的“Click”事件代码如下,请填空Y=0FOR m=3 TO 100 FOR n= 2 To m-1 IF MOD(m,n)=0 _______④________ ENDIF ENDFOR IF n>m-1 y=y+1 ThisForm.Edit1.Value= ThisForm.Edit1.Value+_______⑤______ IF ______⑥_____ ThisForm.Edit1.Value= ThisForm.Edit1.Value +CHR(13) ENDIF ENDIF ENDFOR3、有一教师管理数据库中有3个表:其表名和结构分别如下:基本情况(工号C(6),姓名 C(8),性别 C(8),出生年月(D), 工资 N(5))授课情况(工号C(6),班级编号 C(8),课程名称C(20))查询授课班级在3个以上的教师姓名和班级数,并按班级数降序排列:SELECT 姓名,COUNT(*) AS班级数 FROM 基本情况,授课情况 ;WHERE基本情况.工号=授课情况.工号;GROUP BY 授课情况.工号HAVING ______ ⑦_____ ;ORDER BY _______ ⑧______ 4.有3个数据表:读者.dbf(读者编号/C,读者姓名/C);图书.dbf(书号/C,书名/C);借阅.dbf(书号/C,读者编号/C,借阅日期/D), 创建如图所示表单, 将组合框与读者表的读者编号字段绑定,表单运营时,在组合框combo1中选择读者编号则在标签中label3中输出读者姓名,在列表框中输出该读者借阅的图书的书名和借阅日期。
图 组合框“combo1”的“interactivechange”事件代码:thisform.list1.clearbh=alltrim(this.value)select 读者姓名 from 读者 where 读者编号=bh into _______⑨________thisform.label3.caption=aa(1)sele 书名,借阅日期 from 图书 a,借阅 b ; where a.书号=b.书号 and 读者编号=bh into dbf xxuse xxthisform.list1.additem("书名 借阅日期")scan thisform.list1.additem(书名+____⑩________)endscan③表单“form1”的“unload”事件代码:close all四、读程序写出运营结果(24分)1. 设计如图5所示表单,表单运营后,单击命令按钮“Command1”,标签Label1将显示什么?图5 Command1控件的Click事件代码:I=3DO WHILE I<6 J=2 DO WHILE J<=I-1 IF INT(I/J)=I/J EXIT ENDIF J=J+1 ENDDO I=I+1ENDDOX="i="+ALLTRIM(STR(I))+" "+"j="+alltrim(str(J))Thisform.Label1.Caption=X2.某表单程序设计界面如图3所示,文本框text1和text2初值为0。
当在文本框text1,text2中输入3和2 后,按“计算”按钮,问文本框text3~6中显示的内容分别是什么? 图3“计算”按钮单击事件代码如下:x=thisform.text1.valuey=thisform.text2.valuefor n=3 to 6 a='thisform.text'+str(n,1)+'.value=x+y' &a z=x+y x=y y=zendfor3.有一个数据表,其文献名为ZG.DBF,其数据如表1所示 表1 学生表XS.DBF姓名生日职称章三1980-01-20工人黎四1962-07-09工程师汪五1972-05-26工程师张小山1981-02-11工人李小四1977-09-29技术员王小五1965-04-23工程师有如图所示表单,将ZG.DBF添加到表单的数据环境中,表单运营后,单击命令按钮Command1,请写出Label1中显示的内容(假定系统当前的日期为2023年9月17日)在Command1的Click事件中有如下代码: 图 select zgx=""thisform.label1.caption=xscan if year(生日)>1980 exit endif if 职称="工程师" x=x+姓名+str(year(date())-year(生日),6) endif skipendscanthisform.label1.caption=x4. 设计如图所示表单,运营表单后,在文本框text1和text2中都输入1,单击“command1”按钮,文本框text3~6中分别会显示什么? 图 Form1的load事件代码:public x,yCommand1的click事件代码:x=thisform.text1.valuey=thisform.text2.value thisform.st1() thisform.text5.value=x thisform.text6.value=y 自定义方法程序st1:private x x=5 local y thisform.st2()thisform.text3.value=xthisform.text4.value=y y="5" 自定义方法程序st2:x="钓鱼岛"y=x+"是中国的领土" 五.表单程序设计(10分)“角谷猜想”的内容是:输入一个自然数,若为偶数除以2,若为奇数乘3加1,得到一个新数后继续以以上法则演算,通过若干次循环,该数一定会变为1。
编写如图(a)所示的表单程序验证“角谷猜想”,文本框text1的初值为0,表单运营后,在文本框text1中输入一个自然数(正整数),在编辑框中输出演算过程,同时记录循环次数,在文本框text2中输出如图(b)所示请编写文本框text1的valid事件代码a) (b)图4。