《VisualFoxpro》综合复习 下载本文

INPUT \输入一个数\ TO A(I) ENDFOR

MAX=A(1) &&给存放最大数的变量MAX赋初值 FOR I=2 TO N

IF A(I) >MAX MAX=A(I) ENDIF ENDFOR

?”MAX=”,MAX SET TALK ON RETURN

4?打开STUD表,分别统计所有姓“张”学员的平均年龄和所有姓“王”学员的平均年龄?

SET TALK OFF CLEAR CNTZH=0 SUMZH=0 CNTWANG=0 SUMWANG=0

DO WHILE NOT EOF() IF 姓名=”张” CNTZH=CNTZH+1 SUMZH=SUMZH+(YEAR(DATE())-YEAR(出生日期)) ENDIF

IF 姓名=”张” CNTWANG=CNTWANG+1 SUMWANG=SUMWANG+(YEAR(DATE())-YEAR(出生日期)) ENDIF ENDDO

? “张姓学员的平均年龄为:”,SUMZH/CNTZH

? “王姓学员的平均年龄为:”,SUMWANG/CNTWANG SET TALK ON RETURN

5?有如下售书数据表BOOK.DBF,BOOK.DBF中的记录如下:

书号 单价 数量 总计 B0168 19.8 3 B6915 12.6 36 B9023 40.0 100 B4682 18.0 40 B6329 28.0 56 B8127 2.0 20

要逐条计算总计并填入“总计”字段之中,计算按照如下规则: 若数量小于等于10,总计等于“单价*数量” 若数量大于50,总计等于“单价*数量*(1-5/100)”

若数量在11与50之间,总计等于“单价*数量(1-10/100)”

11 / 15

SET TALK OFF CLEAR USE BOOK

DO WHILE NOT EOF() IF 数量<=10 REPLACE 总计 WITH 单价*数量 ENDIF

IF 数量>50 REPLACE 总计 WITH 单价*数量*(1-5/100) ENDIF

IF 数量>=11 AND 数量<=50 REPLACE 总计 WITH 单价*数量*(1-10/100) ENDIF SKIP ENDDO

SET TALK ON RETURN

6?从键盘输入任一自然数N,求小于等于N的自然数之和? SET TALK OFF CLEAR

S=0 T=0

INPUT “N=?” TO N DO WHILE T

S=S+T ENDDO ?”S=”,S

SET TALK ON RETURN

7?根据表SCORE(学号,课程号,成绩)中的数据,统计选修课程号分别为“000002”?“000005”和“000008”课程的人数以及这些课程的平均分?

SET TALK OFF

STORE 0 TO S2,S5,S8 STORE 0 TO N2,N5,N8 USE SCORE SCAN

DO CASE

CASE 课程号=”000002” N2=N2+1 S2=S2+成绩

CASE 课程号=”000005”

N5=N5+1 S5=S5+成绩

12 / 15

CASE 课程号=”000008”

N8=N8+1 S8=S8+成绩 ENDCASE ENDSCAN

P2=S2/N2 P5=S5/N5 P8=S8/N8

? “000002号课程选课人数”,N2, “000002号课程平均分”,P2 ? “000005号课程选课人数”,N5, “000005号课程平均分”,P5 ? “000008号课程选课人数”,N8, “000008号课程平均分”,P8 USE

SET TALK ON RETURN

8?设有一成绩表score.dbf,它由以下字段组成:姓名(C,8)?平时成绩(N,6.2)?期末成绩(N,6.2)?总成绩(N,6.2)?等级(C,6)?其中前3项已有数据,用SCAN循环编写程序计算并填写每一记录的“总成绩”和“等级”字段,他们的计算方法分别为:

1)总成绩计算方法:总成绩=平时成绩×30%+期末成绩×70% 2)等级计算方法:

总成绩≥90 “等级”为“优秀”; 75≤总成绩<90 “等级”为“良好”; 60≤总成绩<75 “等级”为“合格”; 总成绩<60 “等级”为“不合格”? SET TALK OFF CLEAR

USE SCORE SCAN REPLACE 总成绩 WITH 平时成绩*0.3+期末成绩*0.7 IF 总成绩>=90 REPLACE 等级 WITH “优秀” ENDIF IF 总成绩>=75 AND 总成绩<90 REPLACE 等级 WITH “良好” ENDIF IF 总成绩>=60 AND 总成绩<75 REPLACE 等级 WITH “合格” ENDIF IF 总成绩<60 REPLACE 等级 WITH “不及格” ENDIF ENDSCAN SET TALK ON RETURN

9?从键盘输入任一小于10的自然数N,求N的阶乘?

13 / 15

SET TALK OFF

CLEAR S=1

INPUT “N=?” TO N FOR T=1 TO N S=S*T ENDFOR ?”S=”,S

SET TALK ON RETURN 10?set talk off

clear

open database student use stud

accept “请输入学生的姓名:” to xm locate for 姓名=xm

? “学生”+xm+”的基本情况如下:” ? “学号”+学号 ? “性别”+性别 ? “班级名”+班级名 ? “地址”+地址 Close database Set talk on return 11?set talk off

clear

open database student use stud

accept “请输入待查学生姓名:” to aaa locate for 姓名=aaa if found() ? “姓名:”+姓名 ? “性别:”+性别 ? “出生日期:”+dtoc(出生日期) Else ? “查无此人!” Endif

Close database Set talk on return 12?set talk off

clear

open database student use stud

14 / 15

do while .not.eof() if 性别=”男” display endif skip enddo

close database set talk on return

15 / 15