Visual FoxPro程序设计实习教程与习题集参考答案.docx
- 文档编号:10874502
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:33
- 大小:29.76KB
Visual FoxPro程序设计实习教程与习题集参考答案.docx
《Visual FoxPro程序设计实习教程与习题集参考答案.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro程序设计实习教程与习题集参考答案.docx(33页珍藏版)》请在冰豆网上搜索。
VisualFoxPro程序设计实习教程与习题集参考答案
《VisualFoxPro程序设计实习教程与习题集》(第2版)
《实习教程》第1单元VisualFoxPro基本操作(参考答案)
1.利用对其赋值的方法,判定下列字符串是否为合法的内存变量名。
1)X1,X
(1),X*,X’,X_1,1X
执行赋值命令:
X1=3,或STORE3TOX1,系统没有任何错误显示,知X1为合法的内存变量名。
类似地,X_1也为合法的内存变量名,其余为不合法。
2)变量,变量,变量X,变量1,变量_1
利用上面的方法可以判定:
变量,变量X,变量1,变量_1为合法内存变量名,其余不合法。
2.计算并显示下面各题的结果。
1)分别利用函数(MOD)和运算(%),求出987654321除以123456789的余数。
利用函数:
?
MOD(987654321,123456789)显示:
9
利用运算:
?
987654321%123456789显示:
9
2)若X=5.1249,求2X与X2的最小值。
命令:
X=5.1249
?
MIN(2^X,X^2)显示:
26.2646
3)设:
a=1,b=4,c=3,计算一元二次方程:
aX2+bX+c=0的两个根。
命令:
a=1
b=4
c=3
?
(-b+SQRT(b^2-4*a*c))/(2*a)显示:
-1.0000
?
(-b-SQRT(b^2-4*a*c))/(2*a)显示:
-3.0000
4)设C1=’AB’,C2=SPACE
(2),C3=str(3.14,5,2),且A1=C1+C2+C3,A2=trim(C1+C2-C3)
求A1和A2的长度。
命令:
C1=’AB’
C2=SPACE
(2)
C3=STR(3.14,5,2)
A1=C1+C2+C3
A2=TRIM(C1+C2-C3)
?
LEN(A1)显示:
9
?
LEN(A2)显示:
7
5)设C1=SPACE
(2),C2=”ABC”,C3=SPACE(3),且A1=C1+C2+C3,A2=trim(C1+C2+C3),
A3=ltrim(C1+C2+C3),A4=alltrim(C1+C2+C3)
求A1、A2、A3、A4的长度。
命令:
C1=SPACE
(2)
C2=”ABC”
C3=SPACE(3)
A1=C1+C2+C3
A2=trim(C1+C2+C3)
A3=ltrim(C1+C2+C3)
A4=alltrim(C1+C2+C3)
?
LEN(A1)显示:
8
?
LEN(A2)显示:
5
?
LEN(A3)显示:
6
?
LEN(A4)显示:
3
6)设A=’微型计算机’,利用函数SUBSTR和A表示字符串’微机’。
命令:
A=’微型计算机’
?
SUBSTR(A,1,2)+SUBSTR(A,9,2)显示:
微机
7)求出从今天起,1万天之后的日期。
命令:
?
DATE()+10000显示:
09/06/36(与当天日期有关)
8)求到今天为止,香港回归祖国的天数。
命令:
?
DATE()–{^1997/07/01}显示:
4312(与当天日期有关)
9)写出如下表达式的值,然后利用计算机验证自己的答案。
①X+Y>X*YORX>Y,其中:
X=1,Y=2
命令:
X=1
Y=2
?
X+Y>X*YORX>Y显示:
.T.
②9<4AND4#2ORNOT2**3=SQRT(16)
命令:
?
9<4AND4#2ORNOT2**3=SQRT(16)显示:
.T.
3.通过实例体会以下函数的使用。
1)函数ROUND的第二个参数为负的情形。
ROUND(12345.6789,1)=12345.7
ROUND(12345.6789,0)=12346
ROUND(12345.6789,-1)=12350
ROUND(12345.6789,-2)=12300
2)函数STR的第二、三个参数确省的情形。
STR(3.1415926,4,1)=”3.1”
STR(3.1415926,4)=” 3”
STR(3.1415926)=” 3”
《实习教程》第2单元数据表的创建及浏览(参考答案)
1.建立如下名称、结构和记录的数据表文件。
(1)CREATEZGGZ
(2)在表结构设计器中完成创建表结构的操作
(3)输入数据
2.利用命令浏览该表的内容,然后关闭该表。
USEZGGZ
BROWSE
USE
3.显示当前文件夹中所有数据表文件的信息。
DIR
4.打开“数据工作期”对话框,再先后实施:
打开、浏览和关闭该表的操作。
选择“窗口/数据工作期”菜单,在弹出的对话框中完成打开、浏览和关闭表的操作。
5.利用资源管理器,将数据表ZGGZ.DBF及其备注文件复制到移动存储器保存。
(略)
《实习教程》第3单元数据表的结构操作(参考答案)
1.将数据表ZGGZ.DBF的结构复制到新表ZGGZ1.DBF,且含有编号、姓名和婚否三个字段。
usezggz
copystructuretozggz1fields编号,姓名,婚否
2.利用菜单打开“表设计器”对话框,并对数据表ZGGZ1.DBF的结构作如下修改:
1)在“婚否”字段前插入“性别”字段(C,2);
2)在“婚否”字段后插入“基本工资”字段(N,6,2);
3)删除“编号”字段。
(略)
3.显示修改后的数据表结构。
usezggz1
liststructure
4.将数据表ZGGZ.DBF的前6个记录中基本工资大于400元的记录复制到新表ZGGZ2.DBF,且仅保留:
编号、姓名、基本工资等3个字段。
usezggz
copytozggz2next6fields编号,姓名,基本工资for基本工资>400
5.显示ZGGZ2.DBF的结构。
usezggz2
liststructure
6.浏览ZGGZ2.DBF的记录。
usezggz2
browse
《实习教程》第4单元数据表记录的指针移位(参考答案)
1.顺序执行下面有关记录指针移位的命令,并解释得到的结果。
USEZGGZ
?
BOF()显示结果:
.F.(表示此时记录指针不在表顶)
GO5
?
RECNO()5(表示此时记录指针指在第5条记录上)
SKIP-2
?
RECNO()3(表示此时记录指针指在第3条记录上)
GOTOP
?
BOF().F.(表示此时记录指针不在表顶)
?
RECCOUNT()8(表示此表共有8条记录)
《实习教程》第5单元数据表记录的追加(参考答案)
1.将数据表ZGGZ.DBF的结构复制到新的数据表TEMP.DBF,并显示新表的结构。
USEZGGZ
COPYSTRUCTURETOTEMP
USETEMP
LISTSTRUCTURE
2.向TEMP.DBF随意追加2条记录,要求输入备注信息。
USETEMP
APPEND
在弹出的追加记录窗口中,向除“memo”以外的字段随意输入数据。
然后,双击“memo”,在打开的窗口中,随意输入文字。
最后,单击窗口的“关闭”按钮。
3.将ZGGZ.DBF中所有职务为“科长”的记录追加到TEMP.DBF中,并浏览结果。
APPENDFROMZGGZFOR职务=’科长’
BROWSE
《实习教程》第6单元数据表记录的显示和修改(参考答案)
1.分别用LIST和DISPLAY显示ZGGZ.DBF中所有未婚职工的姓名、婚否和基本工资字段。
usezggz
list姓名,婚否,基本工资for婚否=.F.
display姓名,婚否,基本工资for.NOT.婚否
2.显示ZGGZ.DBF中,1960年1月1日之后出生且基本工资超过400元的职工信息。
listfor出生日期>{^1960/1/1}AND基本工资>400
3.显示ZGGZ.DBF中第4到第8号记录中“王”姓的职工信息。
(提示:
先将记录指针移到第4号记录上,再在命令中指定范围。
)
go4
listnext5forsubstr(姓名,1,2)=’王’
4.在ZGGZ.DBF的编辑窗口中,利用键盘输入对所有女职工的“实发工资”字段进行修改,使得:
实发工资=基本工资+奖金-扣款。
(略)
5.利用REPLACE命令对所有男职工的记录完成上述操作。
replace实发工资with基本工资+奖金-扣款for性别=’男’
6.利用REPLACE命令为所有职务为科长的奖金增加20元。
replace奖金with奖金+20for职务=’科长’
7.利用REPLACE命令为所有职工的基本工资增加10%。
replaceall基本工资with基本工资*1.1
8.利用BROWSE命令,查看上述的替换的结果。
browse
《实习教程》第7单元数据表记录的删除(参考答案)
准备:
将数据表ZGGZ.DBF复制成TEMP.DBF,并打开TEMP.DBF。
usezggz
copytotemp
usetemp
1.对所有的未婚科员记录加删除标记。
DELETEFOR职务=’科员’AND婚否=.F.
2.对基本工资少于400元的记录加删除标记。
DELETEFOR基本工资<400
3.分别在取消遮盖和遮盖带删除标记记录的环境下,显示数据表的记录。
SETDELETEOFF
LIST
SETDELETEON
LIST
4.打开BROWSE窗口,利用鼠标单击的方法,练习为记录添加和取消删除标记的操作。
(需在取消遮盖带删除标记记录的环境下操作)
(略)
5.利用命令取消所有记录的删除标记。
RECALLALL
6.物理删除最后一条记录。
GOBOTTOM
DELETE
PACK
7.物理删除1969年及以前出生的职工记录。
DELETEFORYEAR(出生日期)<=1969
PACK
8.物理删除数据表的所有记录。
ZAP
《实习教程》第8单元数据表的索引(参考答案)
1.在ZGGZ.DBF的结构复合索引文件中,利用“表设计器”建立如下的索引项:
1)按“姓名”索引,且索引标记为XM。
2)按“出生日期”的降序索引,且索引标记为CSRQ。
3)按“性别”和“职务”索引,且索引标记为XBZW。
4)保存修改后,再显示数据表的当前顺序。
(1)选“显示/表设计器”菜单命令,在“表设计器”对话框中选“索引”选项卡,在“索引名”中输入“XM”,“索引表达式”中输入“姓名”;
(2)“排序”选“降序”,“索引名”中输入“CSRQ”,索引表达式中输入“出生日期”;
(3)“索引名”中输入“XBZW”,“索引表达式”中输入“性别+职务”;
(4)单击“确定”保存修改,在命令窗口中执行LIST命令,查看当前顺序。
2.在数据表ZGGZ.DBF的结构复合索引文件中,利用命令建立如下的索引项:
1)按“职务”索引,且索引标记为ZW,并显示结果。
USEZGGZ
INDEXON职务TAGZW
LIST
2)按“职务”和“出生日期”索引,且索引标记为ZWCS,并显示结果。
USEZGGZ
INDEXON职务+DTOC(出生日期,1)TAGZWCS
LIST
3)按“基本工资”和“奖金”索引,且索引标记为GZJJ,并显示结果。
USEZGGZ
INDEXONSTR(基本工资)+STR(奖金)TAGGZJJ
LIST
3.设置索引标记为ZWCS的索引项为主控索引,并显示结果。
SETORDERTOZWCS
LIST
《实习教程》第9单元数据表的查找(参考答案)
1.在数据表ZGGZ.DBF中,利用LOCATE命令进行如下顺序查找。
1)查找编号为“004”的记录,并显示其编号、姓名和基本工资。
usezggz
locate编号,姓名,基本工资for编号=”004”
display
2)在第4~8号记录中,查找并显示姓‘郭’的职工记录。
(提示:
可以利用范围,也可以使用记录号函数。
)
go4
locatednext5forleft(姓名,2)=’郭’
display
3)顺序查找并显示所有职务为‘科员’的男职工记录。
locatefor职务=’科员’and性别=’男’
display
continue
display
4)顺序查找并显示所有生日为8号的职工记录。
locateforday(出生日期)=8
display
continue
display
5)查找并显示职务为科员且基本工资大于400元的职工记录。
locatefor职务=’科员’and工资>=400
display
continue
2.利用SEEK进行如下的快速查询。
1)查找并显示姓名为“苏平”的职工记录。
setordertoxm
seek‘苏平’
display
2)查找并显示出所有职务为“科长”的职工记录。
setordertozw
seek‘科长’
display
skip
display
3)查找并显示男科长的记录。
(提示:
利用第8单元中按“性别”和“职务”建立的索引。
)
setordertoxbzw
seek‘男科长’
display
《实习教程》第10单元数据表的统计(参考答案)
1.分别统计数据表中已婚的男职工和未婚的女职工人数。
usezggz
countfor性别=’男’and婚否=.t.
countfor性别=’女’and婚否=.f.
2.求出所有男职工的人数和基本工资总额,并分别赋值给CN和SN,利用上述两个内存变量计算出男职工的平均工资。
countfor性别=’男’tocn
sum基本工资for性别=’男’tosn
?
sn/cn
3.计算所有职务为科长的平均年龄。
averageyear(date())-year(出生日期)for职务=’科长’
4.计算所有职工的基本工资和奖金的总金额。
sum基本工资+奖金
《实习教程》第11单元程序设计初步(参考答案)
1.编写一程序,计算一元二次方程aX2+bX+c=0的根。
其中系数a,b,c由INPUT语句读入。
运行该程序时,分别为a,b,c输入3,4,1。
SETTALKOFF
INPUT"A="TOA
INPUT"B="TOB
INPUT"C="TOC
X1=(-B+SQRT(B*B-4*A*C))/(2*A)
X2=(-B-SQRT(B*B-4*A*C))/(2*A)
?
"X1=",X1
?
"X2=",X2
RETURN
2.编写一程序,读入圆柱体的高(H)和底面半径(R),计算并显示圆柱体的体积(V)。
SETTALKOFF
INPUT'H:
'TOH
INPUT'R:
'TOR
V=3.1416*R^2*H
?
'V=',V
RETURN
3.编写一程序,首先由用户输入一个职务,如:
“科长”,“处长”等,然后显示数据表ZGGZ
.DBF中所有该职务的职工记录。
(提示:
利用LIST命令。
)
SETTALKOFF
USEZGGZ
ACCEPT'职务:
'TOZW
LISTFOR职务=ZW
RETURN
《实习教程》第12单元分支结构的程序设计(参考答案)
1.编写一程序,输入一个英文字母,若为大写,则显示它的小写字母;若为小写,则显示它的大写字母。
settalkoff
accept'输入一个字符:
'toch
ifupper(ch)=ch
?
lower(ch)
else
?
upper(ch)
endif
return
2.编写一程序,输入X、Y的值,计算分段函数:
的值。
执行程序,分别计算X=3,Y=5和X=1500,Y=1200时Z的值。
settalkoff
input'x='tox
input'y='toy
ifx z=x*x+2*x*y+y*y else ifx=y z=x+y else z=x-y endif endif ? 'z=',z return 3.编写一程序,输入某人的收入额,计算其个人所得税。 个人所得税的计算方法为: 不超过500元的税率为5%,500元到2000元部分的税率为10%,超过2000元部分的税率为15%。 settalkoff input'x='tox ifx<=500 t=x*0.05 else ifx<=2000 t=500*0.05+(x-500)*0.1 else t=500*0.05+1500*0.1+(x-2000)*0.15 endif endif ? '税金为: ',str(t,6,2) return 4.用DOCASE语句编写第3题的程序,并重复上面的计算。 settalkoff input'x='tox docase casex<=500 t=x*0.05 casex<=2000 t=500*0.05+(x-500)*0.1 otherwise t=500*0.05+1500*0.1+(x-2000)*0.15 endcase ? '税金为: ',str(t,6,2) return 5.在第11单元实习内容第1题中采用IF语句,当该方程无实数根时显示“方程无实数根! ”。 运行该程序时,分别为a,b,c输入3,4,1和3,1,4。 提示: 方程有实数根的条件是: b2-4ac≥0。 SETTALKOFF INPUT"A="TOA INPUT"B="TOB INPUT"C="TOC D=B*B-4*A*C IFD>=0 ? "X1=",(-B+SQRT(D))/(2*A) ? "X2=",(-B-SQRT(D))/(2*A) ELSE ? "方程无实数根! " ENDIF RETURN 《实习教程》第13单元循环结构的程序设计(参考答案) 1.编写一程序,计算S=1/2+1/22+1/23+…+1/2N,其中N由用户输入。 (保留小数点后5位) 利用程序分别计算N=5,10和20时,S的值。 提示: 对S赋初值为0.00000,可达到保留小数点后5位的目的。 settalkoff s=0.00000 i=1 input'n='ton dowhilei<=n s=s+1/2^i i=i+1 enddo ? 's=',s return 2.在数据表ZGGZ.DBF中,循环查找和显示所有1970年以前出生的职工记录。 settalkoff usezggz locateforyear(出生日期)<1970 dowhilefound() display continue enddo return 3.利用循环编程计算ZGGZ.DBF中男职工的平均工资。 settalkoff usezggz s=0 n=0 dowhilenoteof() if性别='男' s=s+基本工资 n=n+1 endif skip enddo ? '男职工平均工资为: ',str(s/n,6,2) return 4.利用SCAN语句编写第2题的程序。 settalkoff usezggz scanforyear(出生日期)<1970 display endscan return 5.利用SCAN语句编写第3题的程序。 settalkoff usezggz s=0 n=0 scanfor性别='男' s=s+基本工资 n=n+1 endscan ? '男职工平均工资为: ',str(s/n,6,2) return 6.设一个班有10名学生,循环输入每个学生的分数(百计分),统计并显示各分数段的人数。 其中分数段的划分如下: 90分以上,80~89分,70~79分,60~69分,60分以下。 settalkoff store0ton1,n2,n3,n4,n5 i=1 dowhilei<=10 input'输入分数: 'tox docase casex>=90 n1=n1+1 casex>=80 n2=n2+1 casex>=70 n3=n3+1 casex>=60 n4=n4+1 otherwise n5=n5+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual FoxPro程序设计实习教程与习题集参考答案 FoxPro 程序设计 实习 教程 习题集 参考答案