VisualFoxPro程序设计实习教程与习题集(参考答案).doc_第1页
VisualFoxPro程序设计实习教程与习题集(参考答案).doc_第2页
VisualFoxPro程序设计实习教程与习题集(参考答案).doc_第3页
VisualFoxPro程序设计实习教程与习题集(参考答案).doc_第4页
VisualFoxPro程序设计实习教程与习题集(参考答案).doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visual FoxPro程序设计实习教程与习题集(第2版)实习教程第1单元 Visual FoxPro基本操作 (参考答案) 1利用对其赋值的方法,判定下列字符串是否为合法的内存变量名。 1)X1,X(1),X*,X,X_1,1X 执行赋值命令:X1=3,或 STORE 3 TO X1,系统没有任何错误显示,知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(2X,X2) 显示: 26.2646 3) 设:a=1,b=4,c=3,计算一元二次方程:aX2+bX+c=0的两个根。 命令: a=1 b=4 c=3 ? (-b+SQRT(b2-4*a*c)/(2*a) 显示: -1.0000 ? (-b-SQRT(b2-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)求出从今天起,万天之后的日期。 命令:? DATE() + 10000 显示: 09/06/36 (与当天日期有关) 8)求到今天为止,香港回归祖国的天数。 命令:? DATE() 1997/07/01 显示: 4312 (与当天日期有关) 9)写出如下表达式的值,然后利用计算机验证自己的答案。 X+YX*Y OR XY ,其中:X=1,Y=2 命令:X=1 Y=2 ? X+YX*Y OR XY 显示: .T. 94 AND 4#2 OR NOT 2*3=SQRT(16) 命令:? 9400 5显示ZGGZ2.DBF的结构。 use zggz2list structure6浏览ZGGZ2.DBF的记录。 use zggz2 browse 实习教程第4单元 数据表记录的指针移位 (参考答案)1. 顺序执行下面有关记录指针移位的命令,并解释得到的结果。 USE ZGGZ ? BOF() 显示结果:.F.(表示此时记录指针不在表顶) GO 5 ? RECNO() 5 (表示此时记录指针指在第5条记录上) SKIP -2 ? RECNO() 3 (表示此时记录指针指在第3条记录上) GO TOP ? BOF() .F.(表示此时记录指针不在表顶) ? RECCOUNT() 8 (表示此表共有8条记录) 实习教程第5单元 数据表记录的追加 (参考答案)1. 将数据表ZGGZ.DBF的结构复制到新的数据表TEMP.DBF,并显示新表的结构。 USE ZGGZ COPY STRUCTURE TO TEMP USE TEMP LIST STRUCTURE 2. 向TEMP.DBF随意追加2条记录,要求输入备注信息。 USE TEMP APPEND 在弹出的追加记录窗口中,向除“memo”以外的字段随意输入数据。然后,双击“memo”, 在打开的窗口中,随意输入文字。最后,单击窗口的“关闭”按钮。 3. 将ZGGZ.DBF中所有职务为“科长”的记录追加到TEMP.DBF中,并浏览结果。 APPEND FROM ZGGZ FOR 职务=科长 BROWSE实习教程第6单元 数据表记录的显示和修改 (参考答案)1. 分别用LIST和DISPLAY显示ZGGZ.DBF中所有未婚职工的姓名、婚否和基本工资字段。 use zggzlist 姓名,婚否,基本工资 for 婚否=.F.display 姓名,婚否,基本工资 for .NOT. 婚否 2显示ZGGZ.DBF中, 1960年1月1日 之后出生且基本工资超过400元的职工信息。 list for出生日期 1960/1/1 AND 基本工资400 3显示ZGGZ.DBF中第4到第8号记录中“王”姓的职工信息。 (提示:先将记录指针移到第4号记录上,再在命令中指定范围。) go 4 list next 5 for substr(姓名,1,2)=王 4. 在ZGGZ.DBF的编辑窗口中,利用键盘输入对所有女职工的“实发工资”字段进行修改,使得:实发工资 = 基本工资奖金扣款。 (略) 5. 利用REPLACE命令对所有男职工的记录完成上述操作。 replace 实发工资 with 基本工资+奖金-扣款 for 性别=男 6. 利用REPLACE命令为所有职务为科长的奖金增加20元。 replace 奖金 with 奖金+20 for 职务=科长 7. 利用REPLACE命令为所有职工的基本工资增加10%。 replace all 基本工资 with 基本工资*1.1 8. 利用BROWSE命令,查看上述的替换的结果。 browse 实习教程第7单元 数据表记录的删除 (参考答案)准备:将数据表ZGGZ.DBF复制成TEMP.DBF,并打开TEMP.DBF。 use zggz copy to temp use temp1对所有的未婚科员记录加删除标记。 DELETE FOR 职务=科员 AND 婚否=.F. 2对基本工资少于400元的记录加删除标记。 DELETE FOR 基本工资400 3分别在取消遮盖和遮盖带删除标记记录的环境下,显示数据表的记录。 SET DELETE OFF LIST SET DELETE ON LIST 4打开BROWSE窗口,利用鼠标单击的方法,练习为记录添加和取消删除标记的操作。 (需在取消遮盖带删除标记记录的环境下操作) (略) 5利用命令取消所有记录的删除标记。 RECALL ALL 6物理删除最后一条记录。 GO BOTTOM DELETE PACK 7物理删除1969年及以前出生的职工记录。 DELETE FOR YEAR(出生日期)=400 display continue 2. 利用SEEK进行如下的快速查询。 1)查找并显示姓名为“苏平”的职工记录。 set order to xm seek 苏平 display2)查找并显示出所有职务为“科长”的职工记录。 set order to zw seek 科长 display skip display 3)查找并显示男科长的记录。(提示:利用第8单元中按“性别”和“职务”建立的索引。) set order to xbzw seek 男科长 display 实习教程第10单元 数据表的统计 (参考答案) 1分别统计数据表中已婚的男职工和未婚的女职工人数。 use zggz count for 性别=男 and 婚否=.t. count for 性别=女 and 婚否=.f. 2求出所有男职工的人数和基本工资总额,并分别赋值给CN和SN,利用上述两个内存变量计算出男职工的平均工资。 count for 性别=男 to cn sum 基本工资for 性别=男 to sn ? sn/cn 3计算所有职务为科长的平均年龄。 average year(date()-year(出生日期) for 职务=科长 4计算所有职工的基本工资和奖金的总金额。 sum 基本工资+奖金实习教程第11单元 程序设计初步 (参考答案)1. 编写一程序,计算一元二次方程aX2+bX+c=0的根。其中系数a,b,c由INPUT语句读入。运行该程序时,分别为a,b,c输入3,4,1。 SET TALK OFF INPUT A= TO A INPUT B= TO B INPUT C= TO C X1=(-B+SQRT(B*B-4*A*C)/(2*A) X2=(-B-SQRT(B*B-4*A*C)/(2*A) ? X1=,X1 ? X2=,X2 RETURN2. 编写一程序,读入圆柱体的高(H)和底面半径(R),计算并显示圆柱体的体积(V)。 SET TALK OFF INPUT H: TO H INPUT R: TO R V=3.1416*R2*H ? V=,V RETURN3. 编写一程序,首先由用户输入一个职务,如:“科长”,“处长”等,然后显示数据表 ZGGZ.DBF中所有该职务的职工记录。(提示:利用LIST命令。) SET TALK OFFUSE ZGGZACCEPT 职务: TO ZWLIST FOR 职务=ZWRETURN实习教程第12单元 分支结构的程序设计 (参考答案)1. 编写一程序,输入一个英文字母,若为大写,则显示它的小写字母;若为小写,则显示它的大写字母。 set talk offaccept 输入一个字符: to chif upper(ch)=ch ? lower(ch)else ? upper(ch)endifreturn2. 编写一程序,输入X、Y的值,计算分段函数: 的值。 执行程序,分别计算X=3, Y=5和X=1500, Y=1200时Z的值。 set talk offinput x= to xinput y= to yif xy z=x*x+2*x*y+y*yelse if x=y z=x+y else z=x-y endifendif? z=,zreturn3. 编写一程序,输入某人的收入额,计算其个人所得税。 个人所得税的计算方法为:不超过500元的税率为5,500元到2000元部分的税率为10,超过2000元部分的税率为 15。 set talk off input x= to x if x=500 t=x*0.05 else if x=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) return4. 用DO CASE语句编写第3题的程序,并重复上面的计算。 set talk off input x= to x do case case x=500 t=x*0.05 case x=0 ? X1=,(-B+SQRT(D)/(2*A) ? X2=,(-B-SQRT(D)/(2*A) ELSE ? 方程无实数根! ENDIF RETURN实习教程第13单元 循环结构的程序设计 (参考答案)1. 编写一程序,计算 S1/2+1/22+1/23+1/2N,其中N由用户输入。(保留小数点后5位) 利用程序分别计算N=5,10和20时,S的值。 提示:对S赋初值为0.00000,可达到保留小数点后5位的目的。 set talk offs=0.00000i=1input n= to ndo while i=n s=s+1/2i i=i+1enddo? s=,sreturn2. 在数据表ZGGZ.DBF中,循环查找和显示所有1970年以前出生的职工记录。 set talk off use zggz locate for year(出生日期)1970 do while found() display continue enddo return3利用循环编程计算ZGGZ.DBF中男职工的平均工资。 set talk off use zggz s=0 n=0 do while not eof() if 性别=男 s=s+基本工资 n=n+1 endif skip enddo ? 男职工平均工资为: ,str(s/n,6,2) return4.利用SCAN语句编写第2题的程序。 set talk off use zggz scan for year(出生日期)1970 display endscan return5.利用SCAN语句编写第3题的程序。set talk offuse zggzs=0n=0scan for 性别=男 s=s+基本工资 n=n+1endscan? 男职工平均工资为: ,str(s/n,6,2)return 6. 设一个班有10名学生,循环输入每个学生的分数(百计分),统计并显示各分数段的人数。其中分数段的划分如下:90分以上,8089分,7079分,6069分,60分以下。 set talk off store 0 to n1,n2,n3,n4,n5 i=1 do while i=90 n1=n1+1 case x=80 n2=n2+1 case x=70 n3=n3+1 case x=60 n4=n4+1 otherwise n5=n5+1 endcase i=i+1 enddo ? 90分以上人数 :,n1 ? 80-89分人数 :,n2 ? 70-79分人数 :,n3 ? 60-69分人数 :,n4 ? 60分以下人数 :,n5 return7. 编写一个程序,求解猴子吃桃问题。猴子第一天摘了若干桃子,当即吃了一半,又多吃了一个;第二天早上又将剩下的桃子吃了一半,又多吃了一个;以后每天早上都是如此。到了第10天早上想吃时,就剩下一个桃子。问第一天共摘了多少桃子。 SET TALK OFF D=10 N=1 DO WHILE D=1 ? 第+str(D,2)+天有+str(N,4)+个桃子。 N=2*(N+1) D=D-1 ENDDO RETURN8. 编写一程序,显示如下图形,其中星号之间有一个空格: * * * * * * * * * * * * * * * * SET TALK OFF I=1 DO WHILE I=4 ? SPACE(2*I-1) J=1 DO WHILE J=9-2*I ? * J=J+1 ENDDO I=I+1 ENDDO RETURN9. 编写一个二重循环程序,显示如下的乘法口诀表。 set talk off i=1 do while i=9 j=1 do while j=i ? str(i,2)+*+str(j,1)+=+str(i*j,2) j=j+1 enddo ? i=i+1 enddo return 习题集参考答案 第 1 部分 VFP基础知识 一、选择题1D11C21A31D41B51AB2C12B22D32B42C52A3A13D23A33C43C53B4B14D24C34C44D54B5D15D25A35D45B55A6D16D26D36A46B7D17D27D37C47D8C18A28C38A48D9A19B29B39C49A10A20A30B40D50D 二、填空题1数据库管理系统26N2关系模型27C3关系28.F.4二维表29EFG5属性(或字段)30.F. (2009-4-2修改) 6元组(或记录)3117选择3258连接33.T.9元组34.T.10属性35D11QUIT36数值型12交互37.F.13字段38数值型14年月日39315CENTURY40a16C41逻辑型 (2009-4-2修改)172008/10/0842.T. (2009-4-2修改)18CLEAR43or (2009-4-2修改)19?20?21STORE 3 TO X,Y,Z22-16231524123456258习题集参考答案 第 2 部分 数据表 一、选择题1A*11D21D31A41A51D2C12C22C32D42B52D3A13B23D33C43D53C4C14A24B34D44D54B5A15A25A35A45C6A16A26A36A46A7C17D27A37D47B8A18A28D38A48B9D19B29D39D49B10D20B30C40C50C* :第1题题干中应删除“日期型、”几个字。 二、填空题1通用26REPLACE2DBF27RECALL3128PACK4929SET DELETE ON5FPT30DELETE REST6DEFAULT31INDEX ON 职称 TAG ZC7CREATE32结构复合8USE BOOKS33唯一9REST34普通10COPY STRUCTURE35CDX11表设计器36SET ORDER TO 索引名12L37SET ORDER TO13.F.38CONTINUE14.F.39.F.1510140COUNT FOR 年龄=3024REPLACE 工资 WITH 工资*1.1 FOR 职称=工程师25笔试=60 AND 上机=60习题集参考答案 第 3 部分 程序设计 一、选择题1A6B2C7A3A8A4B9A5A10C 二、填空题1INPUT11嵌套循环2*3SET TALK OFF4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论