《Visual Foxpro 实用教程课本及辅导教材参考答案第三版.doc》由会员分享,可在线阅读,更多相关《Visual Foxpro 实用教程课本及辅导教材参考答案第三版.doc(15页珍藏版)》请在三一办公上搜索。
1、Visual Foxpro 实用教程课本(第三版)及实验教材部分课后题答案说明:1 。本材料仅供学习参考,不代表任何考试题目意向; 2 。所给定的题目答案只是常规解法,不一定是最佳答案。第一章: 课本习题一 P10一. 单选题 1. B 2. A 3. C 4. D 5. C 6. B 7. A 实验教程补充习题 P11. 选择题(1)A (2)B(3)B(4)D(5)C(6)D(7)D(8)C(9)B(10)B(11)D(12)B2. 填空题(1)数据内容 数据形式(2)人工管理阶段 文件系统管理阶段 数据库系统管理阶段(3)计算机系统 数据库 数据库管理系统 有关人员(4)实体型(5)事物
2、之间的联系(6)关系模型(7)属性 记录(8)关系(9)选择 投影 连接(10)多对多第二章: 课本习题二 P42一. 单选题 1. B 2. D 3. B 4.D 5. B 6. D 7. D 8. C 9. B 10. B 11. A 12. C 13.B 14. A二.计算题1 (1) .T. (2) .F. (3) .T.2 (1) age=1.8(2) zhch=”教授” .and. age40 .or. age算术运算关系运算逻辑运算(10)N(11).T.(12)337.201(13)15(14)字符型(15)-1第三章: 课本习题三 P88:二.单选题1. B 2. 无答案 3
3、. C 4. B 5. D 6. C 7. C 8. D 9. C 10. C 11. B实验教程补充习题P21 1. 选择题(1)C(2)A(3)A(4)B(5)C(6)B(7)B(8)B(9)A(10)D(11)D(12)C(13)B(14)B(15)A(16)D(17)C(18)C(19)C(20)D(21)D(22)B(23)B(24)D(25)B(26)C(27)A(28)C(29)C(30)D2. 填空题(1)LIST连续不分屏显示信息 DISPLAY采用分屏显示信息(2)各字段宽度 存放逻辑删除标记(3)已经打开并且正在使用的数据表(4)第5条记录 最后一条记录后面(此时EOF(
4、)函数的值为.T.)(5)DELETE PACK(6)单入口索引文件 结构化复合索引文件 非结构化(独立)复合索引文件(7)自由表 数据库表 (8)新数据表 (9)Memo (10)6位(11)按索引顺序排列(12)DELETE FOR SUBSTR(分类号,1,1)=I(13)GO 8DELETE NEXT 8PACK(14)数据表名 (15)主索引 (16)LIST FOR 婚否=.T.(17)数据库 (18)CONTINUE (19)默认值 (20).dbf第四章: 课本习题四 P129二.选择题 1. D 2. A 3. C 4. A三填空题 1 union 2 .NULL. 3 逻辑
5、 AVG、SUM 5 INTO CURSOR实验教程补充习题 P361. 选择题(1)B(2)B(3)B(4)C(5)B(6)D(7)D(8)A(9)C(10)B(11)D(12)B(13)C(14)B(15)C(16)C(17)B(18)B(19)D(20)B(21)A(22)B(23)D(24)A(25)C(26)A(27)C(28)B(29)D(30)C(31)B(32)B(33)C(34)B(35)B(36)A(37)C(38)D(39)C(40)D(41)A(42)B(43)B(44)C(45)A(46)D(47)C(48)D(49)A (50)B(51)D(52)D(53)B2.
6、填空题(1)条件(2)视图(3)符合条件(4)INSERT SELECT UPDATE ALTER TABLE(5)降序 升序(6)UPDATE GZB SET补贴=补贴+800 WHERE 职称=副教授(7)SELECT * FROM RSGL INNER JOIN RSGZ ON RSGL.编号=RSGZ.编号(8)AVG(工资) GROUP BY职称(9)UNION (10)NULL (11)逻辑 (12)AVG SUM(13)INTO ARRAY14. ORDER BY15. 更新(16)本地视图 远程视图17. 字段 筛选(18) SELECT *FROM STUD1 WHERE获奖
7、次数5 AND性别=男 SET 获奖次数=5 INTO STUD2 VALUES(991201,VFP程序设计) SELECT 学号,姓名,总成绩 FROM stud1 WHERE 总成绩 =(SELECT MAX(总成绩)FROM stud1) SELECT 学号,姓名,总成绩 FROM stud1 WHERE 学号 IN(SELECT 学号FROM stud2 WHERE 选课=操作系统) SELECT * TOP 3 FROM STUD1 ORDER BY 总成绩 DESC(19)Order By(20)职称 IS NULL(21)WHERE 实发工资 BETWEEN 800 AND 1
8、000 或者WHERE 实发工资=800 AND实发工资=1000(22)%(23)GROUP BY(24)DISTINCT(25)数据查询第五章 课本习题五 P171注意:171页最后一行中,DO a.prg 改为DO main.prg二.单选题 1. A 2. A 3. A 4. D 5.A三.填空 1. 1101 C 或字符型 2. 上海市南京市济南市青岛市四填空 “0”,s substr(s,1,n-1)+substr(s,n+1)五 根据要求设计程序1. 用两种语句格式实现l 用IF 实现:SET TALK OFFCLEA ALLCLEAINPUT “INPUT A NUMBER T
9、O X :” TO XINPUT “INPUT A NUMBER TO Y :” TO YINPUT “INPUT A NUMBER TO Z :” TO ZIF XY IF YZ ?X,Y,Z ELSE IF XZ ?X,Z,YELSE ?Z,X,Y ENDIF ENDIFELSE & XY IF YZ ?Y,X,ZELSE ?Y,Z,X ENDIF ENDIFENDIFSET TALK ON RETUl 用CASE 实现(此种要求有若干种实现方式,只给出一种):SET TALK OFFCLEA ALL &清自定义变量,关闭和本程序不相关的其他文件CLEA &清屏INPUT “INPUT A
10、 NUMBER TO X :” TO XINPUT “INPUT A NUMBER TO Y :” TO YINPUT “INPUT A NUMBER TO Z :” TO ZDO CASE CASE XY DO CASE CASE YZ ?X,Y,ZCASE XZ ?X,Z,YOTHER ?Z,X,YENDCASEOTHER &XZ ?Y,X,ZCASE YZ ?Y,Z,XOTHER ?Z,Y,XENDCASEENDCASE SET TALK ON RETU2. 求0-999的水仙花数SET TALK OFFCLEA CLEA ALLFOR I=0 TO 999A=VAL(LEFT(STR(
11、I,3),1)B= VAL(SUBSTR(STR(I,3),2,1)C=VAL(RIGHT(STR(I,3),1)IF A3+B3+C3=I ?IENDIFENDFORSET TALK ON RETU3. 利用循环和CASE语句实现SET TALK OFFCLEA CLEA ALLDO WHILE .T. INPUT INPUT A NUMBER TO X: TO X IF X=0 EXIT ENDIF DO CASE CASE X=1 ?壹 CASE X=2 ?贰 CASE X=3 ?叁 CASE X=4 ?肆 CASE X=5 ?五 CASE X=6 ?陆 CASE X=7 ?柒 CASE
12、 X=8 ?捌 CASE X=9 ?玖 ENDCASEENDDOSET TALK ON RETU4. 注意ASC码的判别SET TALK OFFCLEA CLEA ALLACCE INPUT A SERIAL OF CHARACTERS TO S: TO SNZM=0 &字母个数NSZ=0 &数字个数NKG=0 &空格个数FOR I=1 TO LEN(S) C=UPPER(SUBSTR(S,I,1) IF ASC(C)64 NZM=NZM+1 ENDIF IF ASC(C)47 NSZ=NSZ+1 ENDIF IF ASC(C)=32 NKG=NKG+1 ENDIF ENDFOR?字母个数为:
13、,NZM?数字个数为:,NSZ?空格个数为:,NKG?其他字符个数为:,LEN(S)-NZM-NSZ-NKGSET TALK ON RETU5. 本题使用依附自定义函数实现 依附自定义函数方式SET TALK OFFCLEA CLEA ALLINPUT INPUT A NUMBER TO TO R: TO XINPUT INPUT A NUMBER TO TO r: TO y?AREA(X)-AREA(Y)SET TALK ON RETUFUNCTION AREAPARA RRETU PI()*R*RENDFUNC子程序方式*主程序MAIN.PRGSET TALK OFFCLEA CLEA A
14、LLINPUT INPUT A NUMBER TO TO R: TO XINPUT INPUT A NUMBER TO TO r: TO y?AREA(X)-AREA(Y)SET TALK ON RETU*子程序AREA.PRGPARA RRETU PI()*R*RRETU6 平行四边形打印(本程序有若干种不同的实现方式,行列数可以自己改动) SET TALK OFFCLEA CLEA ALL?SPACE(7)FOR I=1 TO 12 ?*ENDFORFOR I=1 TO 6 ?SPACE(7-I)+*+SPACE(10)+* ENDFOR?FOR I=1 TO 11 ?*ENDFORSET
15、 TALK ONRETU7. 假设表已经存在。SET TALK OFFCLEA CLEA ALLUSE N_LISTFOR I=1 TO 20 INPUT A NUMBER TO X: TO X APPE BLAN REPL DATA WITH XENDFORINDEX ON DATA TAG DATA DESCGO TOP ?The MAX NUMBER IS :,DATAGO BOTT?The MIN NUMBER IS :,DATAUSE SET TALK ON RETU程序部分课外补充题目:1. 已知数列前两项分别为1,1,从第三项起,每项的值为其紧邻前两项的和,求第40项的值。此题实
16、际是求非波纳契数列的第40项。方法一: 数组实现SET TALK OFFCLEA CLEA ALLDIME A(40)A(1)=1A(2)=1FOR I=3 TO 40 A(I)= A(I-1) + A(I-2)ENDFOR? A(40)SET TALK ONRETU方法二: 变量倒换法SET TALK OFFCLEA CLEA ALLS1=1S2=1FOR I=3 TO 40 S3=S1+S2 S1=S2 S2=S3 ENDFOR?S3SET TALK ONRETU2. 求1!+2!+3!+。+10! 基本方法SET TALK OFFCLEA CLEA ALLS=0FOR I=1 TO 10
17、 JC=1 FOR J=1 TO I JC=JC*J ENDFOR S=S+JC ENDFOR ?S SET TALK ONRETU改进方法SET TALK OFFCLEA CLEA ALLS=0 JC=1FOR I=1 TO 10 JC=JC*I S=S+JC ENDFOR ?S SET TALK ONRETU3. 从键盘任意输入正数负数或零,分别求出所有正数个数,负数个数,全部数的和,输入0则结束。 利用循环实现。SET TALK OFFCLEA CLEA ALLNZS=0NFS=0L_SUM=0DO WHILE .T. INPUT INPUT A NUMBER TO X: TO X IF
18、 X=0 EXIT ENDIF L_SUM=L_SUM+X IF X0 NZS=NZS+1 ELSE NFS=NFS+1 ENDIF ENDDO?L_SUM,NZS,NFSSET TALK ONRETU4. 从键盘输入一个正数,求小于该数的所有奇数和。 SET TALK OFFCLEA CLEA ALLDO WHIL .T. &控制必须输入整数,否则循环输入 INPUT INPUT A NUMBER TO X: TO X IF X=0 EXIT ENDIF L_SUM=0 FOR I=1 TO X STEP 2 L_SUM=L_SUM+I ENDF?L_SUMENDDOSET TALK ONR
19、ETU5. 从键盘任意输入10个数,求最大和最小,不用数组。SET TALK OFFCLEA CLEA ALLINPUT INPUT A NUMBER TO X: TO XMAXNUM=XMINNUM=XFOR I=1 TO 9 INPUT INPUT A NUMBER TO X: TO X IF XMAXNUM MAXNUM=X ENDIF IF XMINNUM MINNUM=X ENDIFENDF?MAXNUM,MINNUMSET TALK ONRETU6. 从键盘人数输入20个数,放在数组中,输入完毕,求出最小数的下标。 思路:在输入数据的同时即进行最小判断,输入结束,最小的数的位置号存
20、放的K中。SET TALK OFFCLEA CLEA ALLDIME NUM(20)INPUT A NUMBER TO X: TO NUM(1)K=1 &最小数的序号,起初假设第一个最小FOR I=2 TO 20 INPUT INPUT A NUMBER : TO NUM(I) IF NUM(I)A(I,K) K=J ENDIF ENDFOR &以上循环结束后,A(I,K)为第I行上的最大元素 B=.T. FOR R=1 TO 3 IF (A(R,K)A(I,K) AND RI B=.F. EXIT ENDIF ENDFOR IF B ?第+STR(I)+行第+STR(K)+列的元素+STR(
21、A(I,K)+符合要求 ENDIFENDFORSET TALK ONRETU8. 从键盘输入密码,不在屏幕上显示输入的密码。 判断正确与否,最多3次机会。利用SET CONSOLE OFF/ON实现SET TALK OFFCLEA CLEA ALLZQKL=1234 &THE RIGHT PASSWORD FOR I=1 TO 3 ?请输入正确口令: SET CONSOLE OFF ACCE TO PASSWORD SET CONSOLE ON IF PASSWORD=ZQKL ?恭喜您,答对了! EXIT ELSE IF I3 ?您还有+STR(3-I)+次机会,再试一次吧! ELSE ?抱
22、歉,您没有机会了。 EXIT ENDIF ENDIFENDFORSET TALK ONRETU9. 数据表中有”成绩”和”评估”字段,根据成绩决定评估等第。 小于60分不及格; 60分到70分及格;70分到80分中等;80分到90分良好;90分以上优秀。利用CASE语句实现SET TALK OFFCLEACLEA ALLUSE COMPUTERDO WHILE NOT EOF()DO CASE CASE成绩60REPLACE 评估 WITH 不及格CASE成绩70REPLACE 评估 WITH 及格CASE成绩80REPLACE 评估 WITH 中等CASE成绩90REPLACE 评估 WIT
23、H 良好CASE成绩=100REPLACE 评估 WITH 优秀ENDCASESKIPENDDOCLSOE ALLSET TALK ON RETU10. 某中学招收高中一年级新生12个班,学生入学成绩已登记在STUDENT.DBF自由表中,表中含姓名(C型,已输入数据)、总分(N型,已输入数据)、班级(N型,未输入数据)字段。编程,根据总分将学生均匀搭配到12个班中,并把该学生的班级字段填写其班级序号,最后再将同班的记录分别拷贝到CLASS1.DBF ,CLASS2.DBF, ,CLASS12.DBF中。 分配班级时,按照巡回折转的顺序进行(如, 总分第一名给1班,第二名给2班, 第12名给1
24、2班,第13名给12班,第14名给11班,.依次类推)。SET TALK OFFCLEA CLEA ALLUSE STUDENTSINDEX ON 总分TAG 总分(或 INDEX ON 总分TAG 总分 DESC)GO TOP DO WHILE NOT EOF()FOR I=1 TO 12REPL 班级 WITH ISKIPIF EOF() EXITENDIFENDFORFOR I=1 TO 12 STEP 1REPL 班级 WITH ISKIPIF EOF() EXITENDIFENDFORENDDOFOR I=1 TO 12T=ALLTRIM(STR(I,2)COPY TO CLASS&
25、T FOR 班级=IENDFORCLEA ALLSET TALK ONRETU11. 已知某单位有一个工资票额数据表GZPM.DBF,表中包括的字段为:工号,姓名,实发工资(N,7,2), 一百元(N,2), 五十元(N,2),二十元(N,2),十元(N,2), 五元(N,2), 二元(N,2), 一元(N,2)等。并假设工号、姓名和实发工资字段都已经输入了数据,且实发工资中不含角分值。 编程工资分票程序,计算并显示该单位发放工资时所需要的各种票面张数(也就是计算实际发放工资时每人需要的各种面额人名币张数)。利用自程序实现(本程序票面优先发大额票面,如60元分成一个50和一个10元,而不是三个
26、20元或6个10)SET TALK OFFCLEA CLEA ALLUSE GZPMDO WHILE NOT EOF()F100=INT(实发工资/100) &100的票面张数B=实发工资%10 &工资中个位数的值C=INT(实发工资F100*100-B)/10) &工资中十位数的值F50=0 &50的票面张数F20=0 &20的票面张数F10=0 &10的票面张数F5=0 &5的票面张数F2=0 &2的票面张数F1=0 &1的票面张数DO P WITH C,F50,F20,F10DO P WITH B,F5,F2,F1REPL 壹百元 WITH F100,伍拾元 WITH F50, 贰拾元
27、WITH F20, 拾元 WITH F10, 伍元 WITH F5,贰元 WITH F2, 壹元 WITH F1SKIPENDDOCLOSE ALLSET TALK ON RETUPROCEDURE PPARA K,X,Y,ZX=INT(K/5)Y=INT(K-X*5)/2)Z=K-X*5-Y*2ENDPROC第五章 实验教程补充习题1.选择题(1)C(2)B(3)D(4)A(5)A(6)C(7)C(8)D(9)A(10)A(11)B(12)C(13)D(14)A(15)A(16)D(17)D(18)B(19)C(20)D2. 填空题(1)试考级等机算计(2)EXIT(3)循环(4)PROCE
28、DURE或FUNCTION(5)P=P*I, S=S=9(6)NOT EOF()、 SKIP(7)0, 1, j, 1/mul(8) 子程序中输出的结果: i= 2 j= 3 k= 4 主程序的输出结果: i= 2 j= 1 k= 1(9)对象(10)封装、继承、多态 以下几章仅提供辅导教材部分题目答案。第6章1. 选择题(1)D(2)B(3)缺答案(4)C(5)A(6)C(7)A(8)C(9)C(10)D2. 填空题(1)Thisform.Optiongroup1.Option1.Caption=浏览(2)Caption(3)按钮锁定(4)Text1 Text1(5)不可见(6)数据源(7)
29、生成器(8)wordwrap(9)编辑(10)Modify Form 表单文件名第7章1. 选择题(1)(2)B(3)D(4)C(5)D(6)C(7)A(8)A(9)C(10)C(11)C(12)C(13)本题无答案(14)D(15)A(16)C(17)B(18)B(19)B 2. 填空题(1)TO FILE EXER.TXT(2)页面设置(3)组标头 组注脚(4)数据源 布局(5)组标头(6)RANGE (7)数据环境(8)CREATE REPORT(9)Shift(10)报表向导 一对多报表向导(11)分组关键字(12)报表设计器(13)指定数据源(14)允许(15)标签第8章1. 选择题(1)D(2)D(3)A(4)C(5)D(6)A(7)A(8)A(9)C(10)D2. 填空题(1)Ctrl或Alt(2)打开菜单设计器 生成MPR文件(3)(4)-(5)弹出式(6)set sysmenu to default(7)lnit(8)项目管理器(9)其他(10)重新连编项目或连编应用程序第9章填空题(1)文件服务器 (2) SQL Pass Through(简称SPT)(3)自动加锁 人工加锁 (4)LOCK RLOCK