VisualFoxpro实用教程课本及辅导教材参考答案第三版新.docx
《VisualFoxpro实用教程课本及辅导教材参考答案第三版新.docx》由会员分享,可在线阅读,更多相关《VisualFoxpro实用教程课本及辅导教材参考答案第三版新.docx(25页珍藏版)》请在冰点文库上搜索。
VisualFoxpro实用教程课本及辅导教材参考答案第三版新
VisualFoxpro实用教程课本(第三版)及实验教材部分课后题答案
说明:
1。
本材料仅供学习参考,不代表任何考试题目意向;
2。
所给定的题目答案只是常规解法,不一定是最佳答案。
刘乃文
第一章:
课本习题一P10
一.单选题1.B2.A3.C4.D5.C6.B7.A
实验教程补充习题P1
1.选择题
(1)A
(2)B(3)B(4)D(5)C(6)D(7)D(8)C(9)B(10)B(11)D(12)B
2.填空题
(1)数据内容数据形式
(2)人工管理阶段文件系统管理阶段数据库系统管理阶段
(3)计算机系统数据库数据库管理系统有关人员
(4)实体型(5)事物之间的联系(6)关系模型
(7)属性记录(8)关系(9)选择投影连接(10)多对多
第二章:
课本习题二P42
一.单选题1.B2.D3.B4.D5.B6.D7.D8.C9.B10.B11.A12.C13.B14.A
二.计算题
1.
(1).T.
(2).F.(3).T.
2.
(1)age<15.and.height>=1.8
(2)zhch=”教授”.and.age<40.or.age<35.and.zhch=”副教授”
3.
(1).T.
(2).F.(3)353.00(4).F.(5).F.(6)223.2232
4.
(1)2000.01.18
(2)D(3)3(4)C(5)8(6)8(7)71(8)52
5.
(1).F.
(2).T.(3).F.(4)7(5)_管理_87计算中心管理
实验教程补充习题P3
1.选择题
(1)B
(2)C(3)D(4)A(5)A(6)C(7)A(8)D(9)B(10)D(11)C(12)A(13)C(14)A(15)D
2.填空题
(1)32
(2)Enter(3)选项
(4)菜单命令程序(5);(6).pjx
(7)代码(8)从项目管理器中移去从磁盘上删除
(9)函数>算术运算>关系运算>逻辑运算
(10)N(11).T.(12)337.201
(13)15(14)字符型(15)-1
第三章:
课本习题三P88:
二.单选题1.B2.无答案3.C4.B5.D6.C7.C8.D9.C10.C11.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)D
2.填空题
(1)LIST连续不分屏显示信息DISPLAY采用分屏显示信息
(2)各字段宽度存放逻辑删除标记
(3)已经打开并且正在使用的数据表
(4)第5条记录最后一条记录后面(此时EOF()函数的值为.T.)
(5)DELETEPACK
(6)单入口索引文件结构化复合索引文件非结构化(独立)复合索引文件
(7)自由表数据库表(8)新数据表(9)Memo(10)6位
(11)按索引顺序排列
(12)DELETEFORSUBSTR(分类号,1,1)="I"
(13)GO8
DELETENEXT8
PACK
(14)数据表名(15)主索引(16)LISTFOR婚否=.T.
(17)数据库(18)CONTINUE(19)默认值(20).dbf
第四章:
课本习题四P129
二.选择题1.D2.A3.C4.A
三.填空题1union2.NULL.3逻辑AVG、SUM5INTOCURSOR
实验教程补充习题P36
1.选择题
(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)B
2.填空题
(1)条件
(2)视图(3)符合条件
(4)INSERTSELECTUPDATEALTERTABLE
(5)降序升序
(6)UPDATEGZBSET补贴=补贴+800WHERE职称="副教授"
(7)SELECT*FROMRSGLINNERJOINRSGZONRSGL.编号=RSGZ.编号
(8)AVG(工资)GROUPBY职称
(9)UNION(10)NULL(11)逻辑(12)AVGSUM
(13)INTOARRAY14.ORDERBY15.更新
(16)本地视图远程视图17.字段筛选
(18)
①SELECT*FROMSTUD1WHERE获奖次数>5AND性别="男"
②SET获奖次数>=5
③INTOSTUD2VALUES("991201","VFP程序设计")
④SELECT学号,姓名,总成绩FROMstud1WHERE总成绩=(SELECTMAX(总成绩)FROMstud1)
⑤SELECT学号,姓名,总成绩FROMstud1WHERE学号IN(SELECT学号FROMstud2WHERE选课="操作系统")
⑥SELECT*TOP3FROMSTUD1ORDERBY总成绩DESC
(19)OrderBy
(20)职称ISNULL
(21)WHERE实发工资BETWEEN800AND1000或者
WHERE实发工资>=800AND实发工资<=1000
(22)%
(23)GROUPBY
(24)DISTINCT
(25)数据查询
第五章
课本习题五P171
注意:
171页最后一行中,DOa.prg改为DOmain.prg
二.单选题1.A2.A3.A4.D5.A
三.填空
1.1101C或字符型
2.上海市
南京市
济南市
青岛市
四.填空
“0”,ssubstr(s,1,n-1)+substr(s,n+1)
五.根据要求设计程序
1.用两种语句格式实现
●用IF实现:
SETTALKOFF
CLEAALL
CLEA
INPUT“INPUTANUMBERTOX:
”TOX
INPUT“INPUTANUMBERTOY:
”TOY
INPUT“INPUTANUMBERTOZ:
”TOZ
IFX>Y
IFY>Z
?
X,Y,Z
ELSE
IFX>Z
?
X,Z,Y
ELSE
?
Z,X,Y
ENDIF
ENDIF
ELSE&&XIFY?
Z,Y,X
ELSE
IFX>Z
?
Y,X,Z
ELSE
?
Y,Z,X
ENDIF
ENDIF
ENDIF
SETTALKON
RETU
●用CASE实现(此种要求有若干种实现方式,只给出一种):
SETTALKOFF
CLEAALL&&清自定义变量,关闭和本程序不相关的其他文件
CLEA&&清屏
INPUT“INPUTANUMBERTOX:
”TOX
INPUT“INPUTANUMBERTOY:
”TOY
INPUT“INPUTANUMBERTOZ:
”TOZ
DOCASE
CASEX>Y
DOCASE
CASEY>Z
?
X,Y,Z
CASEX>Z
?
X,Z,Y
OTHER
?
Z,X,Y
ENDCASE
OTHER&&XDOCASE
CASEX>Z
?
Y,X,Z
CASEY>Z
?
Y,Z,X
OTHER
?
Z,Y,X
ENDCASE
ENDCASE
SETTALKON
RETU
2.求0-999的水仙花数
SETTALKOFF
CLEA
CLEAALL
FORI=0TO999
A=VAL(LEFT(STR(I,3),1))
B=VAL(SUBSTR(STR(I,3),2,1))
C=VAL(RIGHT(STR(I,3),1))
IFA^3+B^3+C^3=I
?
I
ENDIF
ENDFOR
SETTALKON
RETU
3.利用循环和CASE语句实现
SETTALKOFF
CLEA
CLEAALL
DOWHILE.T.
INPUT"INPUTANUMBERTOX:
"TOX
IFX=0
EXIT
ENDIF
DOCASE
CASEX=1
?
'壹'
CASEX=2
?
'贰'
CASEX=3
?
'叁'
CASEX=4
?
'肆'
CASEX=5
?
'五'
CASEX=6
?
'陆'
CASEX=7
?
'柒'
CASEX=8
?
'捌'
CASEX=9
?
'玖'
ENDCASE
ENDDO
SETTALKON
RETU
4.注意ASC码的判别
SETTALKOFF
CLEA
CLEAALL
ACCE'INPUTASERIALOFCHARACTERSTOS:
'TOS
NZM=0&&字母个数
NSZ=0&&数字个数
NKG=0&&空格个数
FORI=1TOLEN(S)
C=UPPER(SUBSTR(S,I,1))
IFASC(C)<91ANDASC(C)>64
NZM=NZM+1
ENDIF
IFASC(C)<58ANDASC(C)>47
NSZ=NSZ+1
ENDIF
IFASC(C)=32
NKG=NKG+1
ENDIF
ENDFOR
?
'字母个数为:
',NZM
?
'数字个数为:
',NSZ
?
'空格个数为:
',NKG
?
'其他字符个数为:
',LEN(S)-NZM-NSZ-NKG
SETTALKON
RETU
5.本题使用依附自定义函数实现
依附自定义函数方式
SETTALKOFF
CLEA
CLEAALL
INPUT'INPUTANUMBERTOTOR:
'TOX
INPUT'INPUTANUMBERTOTOr:
'TOy
?
AREA(X)-AREA(Y)
SETTALKON
RETU
FUNCTIONAREA
PARAR
RETUPI()*R*R
ENDFUNC
子程序方式
*主程序MAIN.PRG
SETTALKOFF
CLEA
CLEAALL
INPUT'INPUTANUMBERTOTOR:
'TOX
INPUT'INPUTANUMBERTOTOr:
'TOy
?
AREA(X)-AREA(Y)
SETTALKON
RETU
*子程序AREA.PRG
PARAR
RETUPI()*R*R
RETU
6平行四边形打印(本程序有若干种不同的实现方式,行列数可以自己改动)
SETTALKOFF
CLEA
CLEAALL
?
SPACE(7)
FORI=1TO12
?
?
"*"
ENDFOR
FORI=1TO6
?
SPACE(7-I)+"*"+SPACE(10)+"*"
ENDFOR
?
FORI=1TO11
?
?
"*"
ENDFOR
SETTALKON
RETU
7.假设表已经存在。
SETTALKOFF
CLEA
CLEAALL
USEN_LIST
FORI=1TO20
INPUT'ANUMBERTOX:
'TOX
APPEBLAN
REPLDATAWITHX
ENDFOR
INDEXONDATATAGDATADESC
GOTOP
?
'TheMAXNUMBERIS:
',DATA
GOBOTT
?
'TheMINNUMBERIS:
',DATA
USE
SETTALKON
RETU
程序部分课外补充题目:
1.已知数列前两项分别为1,1,从第三项起,每项的值为其紧邻前两项的和,求第40项的值。
此题实际是求非波纳契数列的第40项。
方法一:
数组实现
SETTALKOFF
CLEA
CLEAALL
DIMEA(40)
A
(1)=1
A
(2)=1
FORI=3TO40
A(I)=A(I-1)+A(I-2)
ENDFOR
?
A(40)
SETTALKON
RETU
方法二:
变量倒换法
SETTALKOFF
CLEA
CLEAALL
S1=1
S2=1
FORI=3TO40
S3=S1+S2
S1=S2
S2=S3
ENDFOR
?
S3
SETTALKON
RETU
2.求1!
+2!
+3!
+。
。
。
+10!
基本方法
SETTALKOFF
CLEA
CLEAALL
S=0
FORI=1TO10
JC=1
FORJ=1TOI
JC=JC*J
ENDFOR
S=S+JC
ENDFOR
?
S
SETTALKON
RETU
改进方法
SETTALKOFF
CLEA
CLEAALL
S=0
JC=1
FORI=1TO10
JC=JC*I
S=S+JC
ENDFOR
?
S
SETTALKON
RETU
3.从键盘任意输入正数负数或零,分别求出所有正数个数,负数个数,全部数的和,输入0则结束。
利用循环实现。
SETTALKOFF
CLEA
CLEAALL
NZS=0
NFS=0
L_SUM=0
DOWHILE.T.
INPUT'INPUTANUMBERTOX:
'TOX
IFX=0
EXIT
ENDIF
L_SUM=L_SUM+X
IFX>0
NZS=NZS+1
ELSE
NFS=NFS+1
ENDIF
ENDDO
?
L_SUM,NZS,NFS
SETTALKON
RETU
4.从键盘输入一个正数,求小于该数的所有奇数和。
SETTALKOFF
CLEA
CLEAALL
DOWHIL.T.&&控制必须输入整数,否则循环输入
INPUT'INPUTANUMBERTOX:
'TOX
IFX=0
EXIT
ENDIF
L_SUM=0
FORI=1TOXSTEP2
L_SUM=L_SUM+I
ENDF
?
L_SUM
ENDDO
SETTALKON
RETU
5.从键盘任意输入10个数,求最大和最小,不用数组。
SETTALKOFF
CLEA
CLEAALL
INPUT'INPUTANUMBERTOX:
'TOX
MAXNUM=X
MINNUM=X
FORI=1TO9
INPUT'INPUTANUMBERTOX:
'TOX
IFX>MAXNUM
MAXNUM=X
ENDIF
IFXMINNUM=X
ENDIF
ENDF
?
MAXNUM,MINNUM
SETTALKON
RETU
6.从键盘人数输入20个数,放在数组中,输入完毕,求出最小数的下标。
思路:
在输入数据的同时即进行最小判断,输入结束,最小的数的位置号存放的K中。
SETTALKOFF
CLEA
CLEAALL
DIMENUM(20)
INPUT'ANUMBERTOX:
'TONUM
(1)
K=1&&最小数的序号,起初假设第一个最小
FORI=2TO20
INPUT'INPUTANUMBER:
'TONUM(I)
IFNUM(I)(1)
K=I
ENDIF
ENDF
?
K,NUM(K)
SETTALKON
RETU
7.求二维数组中行上最大、列上最小的数(本题以3行3列数组为例)
SETTALKOFF
CLEA
CLEAALL
DIMEA(3,3)
FORI=1TO9
INPUT'INPUTANUMBERTOARRAY:
'TOA(I)
ENDFOR
FORI=1TO9
?
?
STR(A(I))
IFI%3=0
?
ENDIF
ENDFOR
FORI=1TO3
K=1&&假设每一行的第一个最大
FORJ=2TO3&&求每一行上的最大
IFA(I,J)>A(I,K)
K=J
ENDIF
ENDFOR
&&以上循环结束后,A(I,K)为第I行上的最大元素
B=.T.
FORR=1TO3
IF(A(R,K)I
B=.F.
EXIT
ENDIF
ENDFOR
IFB
?
'第'+STR(I)+'行第'+STR(K)+'列的元素'+STR(A(I,K))+'符合要求'
ENDIF
ENDFOR
SETTALKON
RETU
8.从键盘输入密码,不在屏幕上显示输入的密码。
判断正确与否,最多3次机会。
利用SETCONSOLEOFF/ON实现
SETTALKOFF
CLEA
CLEAALL
ZQKL='1234'&&THERIGHTPASSWORD
FORI=1TO3
?
'请输入正确口令:
'
SETCONSOLEOFF
ACCETOPASSWORD
SETCONSOLEON
IFPASSWORD==ZQKL
?
'恭喜您,答对了!
'
EXIT
ELSE
IFI<3
?
'您还有'+STR(3-I)+'次机会,再试一次吧!
'
ELSE
?
'抱歉,您没有机会了。
。
。
'
EXIT
ENDIF
ENDIF
ENDFOR
SETTALKON
RETU
9.数据表中有”成绩”和”评估”字段,根据成绩决定评估等第。
小于60分不及格;60分到70分及格;70分到80分中等;80分到90分良好;90分以上优秀。
利用CASE语句实现
SETTALKOFF
CLEA
CLEAALL
USECOMPUTER
DOWHILENOTEOF()
DOCASE
CASE成绩<60
REPLACE评估WITH‘不及格’
CASE成绩<70
REPLACE评估WITH‘及格’
CASE成绩<80
REPLACE评估WITH‘中等’
CASE成绩<90
REPLACE评估WITH‘良好’
CASE成绩<=100
REPLACE评估WITH‘优秀’
ENDCASE
SKIP
ENDDO
CLSOEALL
SETTALKON
RETU
10.某中学招收高中一年级新生12个班,学生入学成绩已登记在STUDENT.DBF自由表中,表中含姓名(C型,已输入数据)、总分(N型,已输入数据)、班级(N型,未输入数据)字段。
编程,根据总分将学生均匀搭配到12个班中,并把该学生的班级字段填写其班级序号,最后再将同班的记录分别拷贝到CLASS1.DBF,CLASS2.DBF,……,CLASS12.DBF中。
分配班级时,按照巡回折转的顺序进行(如,总分第一名给1班,第二名给2班,…………,第12名给12班,第13名给12班,第14名给11班,…………….依次类推)。
SETTALKOFF
CLEA
CLEAALL
USESTUDENTS
INDEXON-总分 TAG总分(或INDEXON总分 TAG总分DESC)
GOTOP
DOWHILENOTEOF()
FORI=1TO12
REPL班级WITHI
SKIP
IFEOF()
EXIT
ENDIF
ENDFOR
FORI=1TO12STEP—1
REPL班级WITHI
SKIP
IFEOF()
EXIT
ENDIF
ENDFOR
ENDDO
FORI=1TO12
T=ALLTRIM(STR(I,2))
COPYTOCLASS&TFOR班级=I
ENDFOR
CLEAALL
SETTALKON
RETU
11.已知某单位有一个工资票额数据表GZPM.DBF,表中包括的字段为:
工号,姓名,实发工资(N,7,2),一百元(N,2),五十元(N,2),二十元(N,2),十元(N,2),五元(N,2),二元(N,2),一元(N,2)等。
并假设工号、姓名和实发工资字段都已经输入了数据,且实发工资中不含角分值。
编程工资分票程序,计算并显示该单位发放工资时所需要的各种票面张数(也就是计算实际发放工资时每人需要的各种面额人名币张数)。
利用自程序实现(本程序票面优先发大额票面,如60元分成一个50和一个10元,而不是三个20元或6个10)
SETTALKOFF
CLEA
CLEAALL
USEGZPM
DOWHILENOTEOF()
F100=INT(实发工资/100)&&100的票面张数
B=实发工资%10&&工资中个位数的值
C=INT((实发工资F100*100-B)/10)&&工资中十位数的