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

下载本文档

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

文档简介

1、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)分别利用函

2、数(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、 -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) 求

4、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 显示:

5、 09/06/36 (与当天日期有关) 8)求到今天为止,香港回归祖国的天数。 命令:? date() 1997/07/01 显示: 4312 (与当天日期有关) 9)写出如下表达式的值,然后利用计算机验证自己的答案。 x+y>x*y or x>y ,其中:x=1,y=2 命令:x=1 y=2 ? x+y>x*y or x>y 显示: .t. 9<4 and 4#2 or not 2*3=sqrt(16) 命令:? 9<4 and 4#2 or not 2*3=sqrt(16)显示: .t. 3通过实例体会以下函数的使用。 1)函数round的第二个参数为负

6、的情形。 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单元 数据表的创建及浏览 (参考答

7、案)1. 建立如下名称、结构和记录的数据表文件。 (1) create zggz (2) 在表结构设计器中完成创建表结构的操作 (3) 输入数据 2利用命令浏览该表的内容,然后关闭该表。 use zggz browse use 3. 显示当前文件夹中所有数据表文件的信息。 dir 4打开“数据工作期”对话框,再先后实施:打开、浏览和关闭该表的操作。 选择“窗口/数据工作期”菜单,在弹出的对话框中完成打开、浏览和关闭表的操作。 5. 利用资源管理器,将数据表zggz.dbf及其备注文件复制到移动存储器保存。 (略)  实习教程第3单元 数据表的结构操作 (参考答案)1. 将数据表zgg

8、z.dbf的结构复制到新表zggz1.dbf,且含有编号、姓名和婚否三个字段。 use zggz copy structure to zggz1 fields 编号,姓名,婚否 2. 利用菜单打开“表设计器”对话框,并对数据表zggz1.dbf的结构作如下修改: 1)在“婚否”字段前插入“性别”字段(c,2); 2)在“婚否”字段后插入“基本工资”字段(n,6,2); 3)删除“编号”字段。 (略) 3. 显示修改后的数据表结构。 use zggz1 list structure 4将数据表zggz.dbf的前6个记录中基本工资大于400元的记录复制到新表zggz2.dbf,且仅保留:编号、姓

9、名、基本工资等3个字段。 use zggzcopy to zggz2 next 6 fields 编号,姓名,基本工资 for 基本工资>400 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()

10、 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”,

11、在打开的窗口中,随意输入文字。最后,单击窗口的“关闭”按钮。 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元的职工信息。 li

12、st 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命令为所有职务为科

13、长的奖金增加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

14、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物

15、理删除1969年及以前出生的职工记录。 delete for year(出生日期)<=1969 pack 8物理删除数据表的所有记录。 zap 实习教程第8单元 数据表的索引 (参考答案)  1在zggz.dbf的结构复合索引文件中,利用“表设计器”建立如下的索引项: 1)按“姓名”索引,且索引标记为xm。 2)按“出生日期”的降序索引,且索引标记为csrq。 3)按“性别”和“职务”索引,且索引标记为xbzw。 4)保存修改后,再显示数据表的当前顺序。 (1)选“显示/表设计器”菜单命令,在“表设计器”对话框中选“索引”选项卡,在“索引名”中输入“xm”,“索引表达式”中输入

16、“姓名”; (2)“排序”选“降序”,“索引名”中输入“csrq”,索引表达式中输入“出生日期”; (3)“索引名”中输入“xbzw”,“索引表达式”中输入“性别+职务”; (4)单击“确定”保存修改,在命令窗口中执行list命令,查看当前顺序。2在数据表zggz.dbf的结构复合索引文件中,利用命令建立如下的索引项: 1)按“职务”索引,且索引标记为zw,并显示结果。 use zggz index on 职务 tag zw list 2)按“职务”和“出生日期”索引,且索引标记为zwcs,并显示结果。 use zggz index on 职务+dtoc(出生日期,1) tag zwcs li

17、st 3)按“基本工资”和“奖金”索引,且索引标记为gzjj,并显示结果。 use zggz index on str(基本工资)+str(奖金) tag gzjj list 3. 设置索引标记为zwcs的索引项为主控索引,并显示结果。 set order to zwcs list实习教程第9单元 数据表的查找 (参考答案)  1在数据表zggz.dbf中,利用locate命令进行如下顺序查找。 1)查找编号为“ 004” 的记录,并显示其编号、姓名和基本工资。 use zggz locate 编号,姓名,基本工资 for 编号=” 004” display 2)在第48号记录中,查

18、找并显示姓郭的职工记录。 (提示:可以利用范围,也可以使用记录号函数。) go 4 located next 5 for left(姓名,2)=郭 display3)顺序查找并显示所有职务为科员的男职工记录。 locate for 职务=科员 and 性别=男 display continue display 4)顺序查找并显示所有生日为8号的职工记录。 locate for day(出生日期)=8 display continue display 5)查找并显示职务为科员且基本工资大于400元的职工记录。 locate for 职务=科员 and 工资>=400 display con

19、tinue 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 性别=男 a

20、nd 婚否=.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

21、由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  return 2. 编写一程序

22、,读入圆柱体的高(h)和底面半径(r),计算并显示圆柱体的体积(v)。  set talk off  input 'h: ' to h  input 'r: ' to r  v=3.1416*r2*h  ? 'v=',v  return 3. 编写一程序,首先由用户输入一个职务,如:“科长”,“处长”等,然后显示数据表 zggz.dbf中所有该职务的职工记录。(提示:利用list命令。)  set talk off  use zggz &

23、#160;accept '职务:' to zw  list for 职务=zw  return实习教程第12单元 分支结构的程序设计 (参考答案)1. 编写一程序,输入一个英文字母,若为大写,则显示它的小写字母;若为小写,则显示它的大写字母。  set talk off  accept '输入一个字符: ' to ch  if upper(ch)=ch    ? lower(ch)  else  

24、0; ? upper(ch)  endif  return 2. 编写一程序,输入x、y的值,计算分段函数: 的值。    执行程序,分别计算x=3, y=5和x=1500, y=1200时z的值。   set talk off   input 'x=' to x   input 'y=' to y   if x<y    

25、60; z=x*x+2*x*y+y*y   else     if x=y         z=x+y     else        z=x-y     endif   endif   ? 'z=',z   return 

26、3. 编写一程序,输入某人的收入额,计算其个人所得税。    个人所得税的计算方法为:不超过500元的税率为5,500元到2000元部分的税率为10,超过2000元部分的税率为 15。    set talk off    input 'x=' to x    if x<=500      t=x*0.05    else      if x&l

27、t;=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语句编写

28、第3题的程序,并重复上面的计算。    set talk off    input 'x=' to x    do case      case x<=500        t=x*0.05      case x<=2000        t=500*0.05+(x-500)*0.1 &#

29、160;    otherwise        t=500*0.05+1500*0.1+(x-2000)*0.15    endcase    ? '税金为: ',str(t,6,2)    return5. 在第11单元实习内容第1题中采用if语句,当该方程无实数根时显示“方程无实数根!”。运行该程序时,分别为a,b,c输入3,4,1和3,1,4。提示:方程有实数根的条件是:b2-4ac0。  &

30、#160; set talk off    input "a=" to a    input "b=" to b    input "c=" to c    d=b*b-4*a*c    if d>=0      ? "x1=",(-b+sqrt(d)/(2*a)      ? &q

31、uot;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赋

32、初值为0.00000,可达到保留小数点后5位的目的。   set talk off   s=0.00000   i=1   input 'n= ' to n   do while i<=n     s=s+1/2i     i=i+1   enddo   ? 's=',s 

33、;  return  2. 在数据表zggz.dbf中,循环查找和显示所有1970年以前出生的职工记录。   set talk off   use zggz   locate for year(出生日期)<1970   do while found()     display     continue   enddo   return 3利用循环编程计算zggz

34、.dbf中男职工的平均工资。    set talk off    use zggz    s=0    n=0    do while not eof()      if 性别='男'        s=s+基本工资        n=n+1     

35、 endif      skip    enddo    ? '男职工平均工资为: ',str(s/n,6,2)    return 4.利用scan语句编写第2题的程序。    set talk off    use zggz    scan for year(出生日期)<1970      displa

36、y    endscan    return 5.利用scan语句编写第3题的程序。   set talk off   use zggz   s=0   n=0   scan for 性别='男'     s=s+基本工资     n=n+1   end

37、scan   ? '男职工平均工资为: ',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&

38、lt;=10      input '输入分数: ' to x      do case        case x>=90          n1=n1+1        case x>=80          n2=n2+1    

39、60;   case x>=70          n3=n3+1        case x>=60          n4=n4+1        otherwise          n5=n5+1      endcase  &#

40、160;   i=i+1    enddo    ? '90分以上人数 :',n1    ? '80-89分人数 :',n2    ? '70-79分人数 :',n3    ? '60-69分人数 :',n4    ? '60分以下人数 :',n5    return 7. 编写一个程序,

41、求解猴子吃桃问题。猴子第一天摘了若干桃子,当即吃了一半,又多吃了一个;第二天早上又将剩下的桃子吃了一半,又多吃了一个;以后每天早上都是如此。到了第10天早上想吃时,就剩下一个桃子。问第一天共摘了多少桃子。    set talk off    d=10    n=1    do while d>=1      ? "第"+str(d,2)+"天有"+str(n,4)+"个桃子。&q

42、uot;      n=2*(n+1)      d=d-1    enddo    return 8. 编写一程序,显示如下图形,其中星号之间有一个空格:     * * * * * * *       * * * * *         * * * 

43、60;         *    set talk off    i=1    do while i<=4      ? space(2*i-1)      j=1      do while j<=9-2*i        ? &quo

44、t;* "        j=j+1      enddo      i=i+1    enddo    return 9. 编写一个二重循环程序,显示如下的乘法口诀表。    set talk off    i=1    do while i<=9   

45、;   j=1      do while j<=i        ? str(i,2)+'*'+str(j,1)+'='+str(i*j,2)        j=j+1      enddo      ?      i=i+1    enddo &#

46、160;  return 习题集参考答案 第 1 部分 vfp基础知识 一、选择题1d11c21a31d41b51ab2c12b22d32b42c52a3a13d23a33c43c53b4b14d24c34c44d54b5d15d25a35d45b55a6d16d26d36a46b  7d17d27d37c47d  8c18a28c38a48d  9a19b29b39c49a  10a20a30b40d50d   二、填空题1数据库管理系统26n2关系模型27c3关系28.f.4二维表

47、29"efg"5属性(或字段)30.f. (2009-4-2修改) 6元组(或记录)3117选择3258连接33.t.9元组34.t.10属性35d11quit36数值型12交互37.f.13字段38数值型14年月日39"3"15century40"a"16c41逻辑型 (2009-4-2修改)172008/10/0842.t. (2009-4-2修改)18clear43or (2009-4-2修改)19?  20?  21store 3 to x,y,z  22-16

48、60; 2315  24"123456"  258  习题集参考答案 第 2 部分 数据表 一、选择题1a*11d21d31a41a51d2c12c22c32d42b52d3a13b23d33c43d53c4c14a24b34d44d54b5a15a25a35a45c  6a16a26a36a46a  7c17d27a37d47b  8a18a28d38a48b  9d19b29d39d49b  10d20

49、b30c40c50c  * :第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 年龄<20 to m116

50、recno()41average 库存量 for 商品名称="空调"1719  18append from sp2  19append blank  20display  21"林" $ 姓名  22next 5  23list 姓名,年龄 for 年龄>=30  24replace 工资 with 工资*1.1 for 职称="工程师"  25笔试>=60 and

51、 上机>=60  习题集参考答案 第 3 部分 程序设计 一、选择题1a6b    2c7a    3a8a    4b9a    5a10c     二、填空题1input11嵌套循环2*  3set talk off  4;(分号)  5cancel  6prg  7d

52、o case  8scan  9do while  10exit   三、运行结果题110311再见您好再见2王岩20.00白志强 0.0012x=253王京京 30.0013a12343 5 3144 (2009-4-2修改)5白志强 0.00 3 4 (2009-4-2修改)15j=36白志强 08/18/73李利利 03/15/70(2009-4-2修改)16s=1157李利利 (2009-4-2修改)172 3827184 293  1070.00 (2009-4-2修改) &

53、#160; 四、完善程序题1copy to cg for 奖学金>20162*i-1i=i-12go bottomrest17s=0for 性别="男"3copy structure to stud3append from stud1 for 专业="计算机"18n=n+1str(s/n,6,2)4set order to 姓名seek name (2009-4-3修改)19year(出生日期)>=1970 and 专业=" 计算机"replace 奖学金 with 奖学金*1.25go 2pack20if 奖学金>mx奖学金=mx6fields 学号,姓名replace 姓名 with "李文丽"21not eof()not 是否过四级7average 奖学金22性别=&qu

温馨提示

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

评论

0/150

提交评论