重庆VF练习题.docx
《重庆VF练习题.docx》由会员分享,可在线阅读,更多相关《重庆VF练习题.docx(57页珍藏版)》请在冰豆网上搜索。
重庆VF练习题
VFP程序设计练习题第一套
一、单项选择题()
1RDBS的意思是()
A数据库管理系统B关系数据库管理系统C对象-关系型数据库文件D结构化查询语言
2一个数据表的全部“MEMO”字段的内容存储在()
A不同的备注文件B同一个文本文件C同一个备注文件D同一个数据库文件
3结构化程序的主要优点是()
A程序体积小,节省内存空间B程序效率高,节省运行时间C程序结构清晰,可读性好,易修改维护,可靠性高D容易实现巧妙的算法
4在FOXPRO中要删除结构复合索引标识“BMJG1”使用的命令是()
Adelecdxbmjg1Bdeleidxbmjg1Cdeletagbmjg1Ddelefilebmjg1
5英文缩写SQL指的是()
A数据库管理系统B关系型数据库系统C对象-关系型数据库系统D结构化查询语言
6函数ROUND(156.765,2)返回的结果是()
A160.00B156.79C156.77D200.00
7使用REPLACE命令时,其范围子句为ALL和REST,则执行该命令后,记录指针指向()
A首记录B末记录C首记录的前面D末记录的后面
8设已打开数据表文件,现在要为它建立一个结构复合索引文件标识INDSC,使其先按总分的升序,总分相同时再按英语成绩升序索引。
使用的正确命令是|()
AINDEXON总分+英语tagindsc
Bindexonstr(总分,3),str(英语,3)tagindsc
Cindexonstr(总分,3)+str(英语,3)tagindsc
Dindexon总分,英语tagindsc
9建立一个新数据表文件结构命令可以是()
AmodifystructureBcopytoCjoinwithDcreate
10假设X=5,执行命令:
?
X=X+3后,其结果是()
A8B3C.T.D.F.
11设当前记录号为15,现欲将记录指针指向11的操作是()(注:
未建索引)
Askip-4BgotopCgo10Dgobottom
12vf中打开菜单生成器的命令是()
AmodifystructureBmenutoCmodifyreportDmodimenu
13下列叙述中不正确的是()
A子程序通常是以return命令结尾B子程序可以嵌套调用C没有用publ或priv命令说明的变量,默认为全局变量D局部就量只在定义它的局部范围内有效
14total命令使用的条件是()
A不需要任何条件B要有数据值型字段的数据表C任何已打开的数据表D当前数据表必须是按指定关键字或索引排序的
15设已打开表文件ABC.DBF,执行copystructuretost.dbf的作用是()
A仅将当前一条记录拷贝到ST.DBFB将ABC.DBF的全部记录拷贝到ST.DBF中C将ABC.DBF和ST.DBF的内容连接后再存入ST.DBFD仅将表文件ABC.DBF的结构复制到新建立的ST.DBF中
16执行了语句N=10,M=20和S=”N+M”之后,再执行:
?
10+&S的输出结果是()
A10+N+MB40C10+SD出错信息
17打开过程文件SR.PRG的命令是()
AUSESR.PRGBSETPROCEDURETOSR.PRGCDOSR.PRGDSETFORMATTOSR.PRG
18()字段的宽度是由用户自己定义的.
A逻辑型B日期型C备注型D字符型
19设有一数据表,其中有逻辑型字段”团员”和日期型”出生日期”.现欲显示库中所有1980年以后出生的团员的记录,可选择()
Alistfor团员=.t.andyear(出生日期)<1980
Blistfor团员andyear(出生日期)>1980
Clistfor团员oryear(出生日期)>1980
Dlistfornot(团员=.F.andyear(出生日期)<=1998)
20数组的定义命令和下标的下界值分别为()
Adime和0Bdecl和1Cdime和2Ddime和任意的数值
二多项选择题
1索引的更新方式有()
A重建数据表B删除原有的索引C自动更新D重建索引E改变表的记录
2下列VF表达式中,结果为数值型的是()
A8-3=5Bdate()-ctod(“98/09/09”)C[8]+[3]Dat(“ad”,”xyadvancad”)Elen(“ABCDE”)
3下列属于逻辑型常量的数据有()
A“.T.”B.F.C.Y.D.K.E.N.
4下列使用正确的函数有()
Amax(30,20.50)Bmin({98/05/20},{99/12/01})Cmod(25.3,5.0)Dchr(65+3)Eint(12.657,2)
5在数据表操作中,要修改记录可使用的命令是()
AappendBchangeCbrowseDrepaceEedit
6关闭一个数据库表的命令有()
AuseBclearCclosdataDcleaallEreturn
7可进行索引查询的命令有()
AlocateBlistCdisplayDfindEseek
8下列叙述中正确的是()
AVF中,刚定义的数组各元素的默认值是.F.
B调用过程文件的过程之前,必须先打开过程文件
C数据库文件的扩展名不能由系统自动生成
D建立索引的目的是将数据库排序后,形成一个新的数据库
E同一时刻只能打开一个过程文件
9可以通过键盘输入数据的命令有()
AinputBacceptCwaitDcancelE@...get…read
10设当前库中[婚否]是L型字段,检索年龄在30岁以上的(包含30岁)的未婚大龄青年的命令是()
Alistfornot婚否and(not年龄<30)
Blistfornot婚否and年龄>=30
Clistfor未婚and年龄>=30
Dlistfor婚否=.f.and年龄>=30
Elistfor婚否and年龄>=30
三是非判断题
1同一记录的不相同字段值不允许相同
2如果scatterto<数组名>命令中的数组不存在,则该命令会自动生成所需大小的数组
3某数据库中有工资字段,如果要对当前记录中的工资字段增加30元,可用命令:
工资=工资+30完成
4两个数据表间建立关联的目的是为了找出两个表中的相同关键字段.
5用DELETE命令删除记录,将无法恢复
6复合索引文件可分为结构和非结构两种,若定义复合索引文件与表文件取名不同,则其为非结构的,否则为结构的.
7appendfrom命令允许在相同或不同文件结构的库文件之间添加记录
8在操作数据库过程中用命令:
gobottom后,eof()的值为.F.
9VF中字段变量名不允许与内存变量名相同
10一个工作区可以同时打开多个表文件
四填空题
1执行以下命令的输出结果是()
Store5totest
?
type(“test”)
2数据库文件grade.dbf中包括学号、姓名、成绩等字段,下列程序是输出最高成绩记录的学号、姓名、成绩,请填空完善此程序。
Settalkoff
Clear
Usegrade
记录号=1
最高成绩=成绩
Scan
If_最高成绩<成绩____
最高成绩=成绩
记录号=recno()
Endif
Endscan
Go_记录号___
?
”最高成绩:
学号=”+学号+”姓名=”+姓名+”成绩=”
?
?
___成绩_______
Use
Return
3设数据库name.dbf中有”姓名”字段,并以此字段建索引文件名为NSY.idx.因该库中有一些重复记录需要删除,请填空完善此程序.
Settalkoff
Usenameindexnsy
Gotop
Dowhile_____
Xm=姓名
Skip
If_____
Dele
Endif
enddo
______
Use
Return
4设有数据库book.dbf,现需要向该库中添加记录,请完善此程序.
Settalkoff
Clear
Usebook
An=”Y”
Dowhiluppe(an)=’Y’
________
@4,10say“书号:
”GET书号
@4,40SAY“书名:
”GET书名
@6,10say“单价:
”get单价
@6,40say“册数:
”get册数
______
Wait“继续(y/n)?
”toan
Clear
_______
Use
Return
5读程序写出运行结果
1设有如下主程序和子程序段,请写出N=2,A分别为2和5时的输出结果
*主程序
Settalkoff
Publy
Clear
I=1
S=0
Input“n=”ton
Dowhili<=n
Input“a=”toa
Dosqwitha
S=s+y
?
a,y
I=i+1
Enddo
?
”s=”+str(s,5)
Return
*子程序sq.prg
Parax
Y=(x+1)*(x+1)
Return
2设有数据库student.dbf的结构和内容如下:
记录号编号(N)姓名(C)性别(C)出生日期(D)总分(N)
1970102王五男06/08/80586.00
2970201李四女08/09/82532.00
3970202张三男05/06/81618.00
4970101赵六女07/08/82609.00
5970103孙九女06/23/80589.00
阅读下列程序,写出运行结果
Settalkoff
Clear
Usestudent
Scan
If性别=”女”
Skip
Else
?
总分
Endif
Endscan
Use
Return
3有一程序如下,请写出运行结果
Settalkoff
X=0
Y=1
B=”1234”
N=len(b)
K=1
DowhilekC=val(substr(b,k,1))
Ifint(c/2)=c/2
Sf=”*”
Else
Sf=”+”
Endif
Ss=”X”+”&”+”SF”+”Y”
?
”输出:
”+str(&ss,4)
X=x+2+k
Y=y+k
K=k+1
Enddo
Settalkon
Return
4设有数据库与本大题2小题中的student.dbf相同,设变量REC分别输入1、4、0三个数据,请写出运行程序后,屏幕显示结果
Settalkoff
Usestudent
Scan
Input”记录号=”torec
Ifrec=0
Exit
Endif
Gorec
Scattertoab
Delete
Appeblank
Gatherfromab
Endscan
Pack
List姓名,总分
Use
Return
六编写程序
某公司有一材料数据表文件CL.DBF,其结构包括:
编号(C)、名称(C)、型号(C)、进货单价(N)、售出单价(N)、数量(N)、进货总价(N)、售出总价(N)、利润(N);有若干条记录,前6个字段已有值。
另有一材料销售数据表文件CLXS.DBF,其结构包括:
编号(C)、销售量(N)、销售额(N)、销售利润(N);有若干条记录(编号有重复值),前两个字段有值。
要求:
编程序PAI.PRG,完成以下功能:
1计算CL.DBF库文件的进货总价、售出单价、利润三个字段的值,其中:
进货总价=进货单价*数量
售出总价=售出单价*数量
利润=售出单价-进货单价
2计算CLXS.DBF表文件的销售额和销售利润两个字段的值。
其中:
销售额=销售量*售出单价
销售利润=销售额-销售量*进货单价
3汇总CLXS.DBF库文件中各种材料的销售量、销售额、销售利润并按以下格式输出:
各种材料销售情况
编号名称型号销售量销售额销售利润
………………………………
………………………………
总计XXXXXX.XXXXXX.X
VFP程序设计练习题第二套
一单项选择题(每小题1分,共30分)
1下列叙述正确的是()
A在关系数据库中,数据查询不需要通过关系运算就可以实现
B一个关系允许有完全相同的2个元组
C关系就是一个二维表
D关系数据库中的数据表都是自由表
2“商品”与“顾客”两个实体集之间的联系一般是()
A一对一B一对多C多对一D多对多
3在一个数据表中,有一个或若干个字段,它们的值可以唯一的标识一条记录,这样的字段称为()
A主题字B标题C关键字D记录名
4在VFP中以下叙述错误的是()
A关系也被称作表B数据库文件不存储用户数据
C表文件的扩展名是.DBFD多个表存储在一个物理文件中
5设数据表文件在当前工作区已经打开,命令LISTFOR<条件>完成的工作相当于关系运算()
A选择B连接C自然连接D投影
6DBMS的中文意思是()
A对象-关系型数据库系统B数据库管理系统C关系数据库系统D结构化查询语言
7在命令窗口输入并执行如下4条命令,屏幕上将显示()
setcenturyon
setmarkto“/”
setdatetodmy
?
{^2006-09-03}
A03/09/2006B03/09/06C2006-09-03D09/03/2006
8下列数据中不属于常量的是()
A12B.Y.C[ABCDEF]DHello
9使用dimenson命令定义数组后,各数组元素在没有赋值之前的值是()
A“”B.F.C0D空值(NULL)
10执行int(val(“-10.72”))命令后,结果是()
A-11B11C-10D10
11函数MOD(26,-10)的值是()
A-6B-4C4D6
12已知日期显示格式设置为:
setdatetomdy,则下列合法的表达式是()
A8-3=[5]Bctod(“06/06/06”)-5C[8]+[3]>10Dat(“ad”,”xyadvancea”)+”Mynameis”
13设M=“15”,执行命令:
?
“&M”+”25”后,屏幕显示()
A1525B20CM25D出错信息
14可以存储链接或嵌入OLE对象的字段类型是()
A任意类型B备注型C通用型D通用型和备注型
15在VFP中以下叙述正确的是()
A利用视图可以修改数据B利用查询可以修改数据C查询和视图具有相同的作用D视图可以定义输出去向
16SQL的数据操作语句不包括()
AinsertBupdateCdeleteDchange
17要将数组DG中的内容作为一个新纪录追加到当前表的末尾,应执行的命令组为()
AappendblankscattertoDGBgobottomscattertodg
CgobottomgatherfromdgDappendblankgatherfromdg
18以下每两组表达式中,其运算结果完全相同的是()
A假定A=“visual“,B=”foxpro”,则A-B与A+B
Byear(date())与substr(dtoc(date()),7,2)
C“40-4*5”与40-4*5
Dleft(“VFP“,3)与SUBstr(“vfp“,2,3)
19当前数据表中有商品名(C,8),单价(N,6,1)等字段,直接显示当前记录的商品名及单价,不能使用命令()
Adisp商品名,单价B?
商品名+单价C?
商品名+STR(单价,6,1)D?
商品名,单价
20学生成绩表有字段(计算机/N),该表已打开,要将所有学生的计算机成绩增加5分,应该使用命令()
Achange+计算机with计算机+5Breplaceall计算机with计算机+5
Creplace计算机with计算机+5Dchangeall计算机with计算机+5
21有成绩数据表,其中有学号(C),班级(C),成绩1(N),成绩2(N),成绩3(N)等字段,现已按“班级”建立了索引,则按班级分类汇总各科成绩的命令是()
Atotalon班级intohzBtotalon成绩1intohzCtotalto班级onhzDtotalon班级tohz
22在职工表zg.dbf中按工资(N,6,2)升序,工资相同者按参加工作日期(D)早晚顺序建立结构化复合索引,正确的命令是()
Aindexon工资/A,工作日期/DtaggeBsetindexon工资-工作日期tagge
Cindexonstr(工资,6,2)+dtoc(工作日期,1)tagge
Dindexonstr(工资+year(工作日期))tagge
23“图书”表中有字符型字段“图书号”。
要求用SQLDELETE命令将图书号以字母A开头的图书记录全部打上删除标记,正确的命令是()
Adeletefrom图书for图书号like“A%”
Bdeletefrom图书while图书号like“A%”
Cdeletefrom图书where图书号=”A*”
Ddeletefrom图书where图书号like“A%”
24SQL语言中修改表结构的命令是()
AaltertableBmodifytableCalterstructureDmodifystructure
25假设“订单”表中有订单号、职员号、客户号和金额字段,正确的SQL语句只能是()
Aselect职员号from订单groupby职员号havingcount(*)>3andavg_金额>200
Bselect职员号from订单groupby职员号havingcount(*)>3andavg(金额)>200
Cselect职员号from订单groupby职员号havingcount(*)>3whereavg(金额)>200
Dselect职员号from订单groupby职员号wherecount(*)>3andavg_金额>200
26要使“产品”表中所有产品的单价上浮8%,正确的SQL命令是()
Aupdate产品set单价=单价+单价*8%forall
Bupdate产品set单价=单价*1.08forall
Cupdate产品set单价=单价*1.08
Dupdate产品set单价=单价+单价*8%
27设同一名称的产品有不同的型号和产地,则计算每种产品平均单价的SQL语句是()
Aselect产品名称,avg(单价)from产品groupby单价
Bselect产品名称,avg(单价)from产品orderby单价
Cselect产品名称,avg(单价)from产品groupby产品名称
Dselect产品名称,avg(单价)from产品orderby产品名称
28执行如下命令序列后,最后一条命令的显示结果是()
dimensionm(2,2)
m(1,1)=10
m(1,2)=20
m(2,1)=30
m(2,2)=40
?
m
(2)
A变量未定义的提示B10C20D.F.
29执行下列命令序列:
x=6
?
iif(-x>0,-6,iif(x=0,0,6))
屏幕显示为()
A0B6C-6D错误信息
30下列几组控件中,均为容器类的是()
A表单、列、组合框B页框、表单、表格
C列表框、表单、下拉列表框D表单、命令按钮组、文本框
二判断分析题(每小题1分,共10分)
1在打开一个含有记录的数据表后,执行GOBOTTOM,则EOF()为.T.
2VisualFoxPro系统中用属性描述对象的状态,用方法描述对象的行为
3在VisualFoxPro中,LISTFOR姓名=“李”和LISTWHILE姓名=“李”这两条命令是等价的
4在VisualFoxPro中,可以用.Y.表示逻辑真,用.N.表示逻辑假
5使用TOTAL命令时,要求必须对当前数据表进行排序或索引
6打开数据库的命令是OPEN<数据库名>
7DELETEALL与PACK两条命令联合执行的功能等价于ZAP命令执行的功能
8数据表复制命令COPY可以对复制后的数据表自动排序
9SQL的查询语句可以为输出的字段标题重新命名
10事件是一种预先定义好的特定动作,由用户或系统激活
三填空题(每空2分,共20分)
1下列程序判断一个自然数n是否为素数,其方法是用2到
之间的数逐个去除,若余数都不为0,则n为素数,否则不是素数,请填空完成
input“请输入一个大于1的自然数:
”ton
y=1
x=int(sqrt(n))
i=2
dowhilei<=x
ifn%i!
=0
i=i+1
loop
else
y=0
exit
endif
enddo
ify=1
?
alltrim(str(n))+”是素数”
else
?
n,”不是素数”
endif
return
2有课程表kcb.dbf,包含课程号(c)、课程名(c)、学分(n)等字段。
以下程序的功能是:
输出第一学期的最低学分和第二学期的最高学分,其中课程号的第3、4位表示学期,一门课程的最高学分是10。
假设“01”表示第一学期,“02”表示第二学期。
请完善程序
usekcb
x1=10
x2=0
dowhile.not.eof()
docase
casesubs(课程号,3,2)=”01”
ifx1>学分
x1=学分
endif