编程练习(1) FoxproForWindowshttp://cc.synu.edu.cn
FoxPro For Windows http://cc.synu.edu.cn 1 编程练习(1)
【编程1】统计CK库中“总分”(N型字段)分数最高的人 数。 ZEidx 总分记录号 SET TALK OFF 4564 USE CJK INDEX ON总分TOZF 47824 GO BOTTOM 48813 JG=总分 48828 COUNT TO ABC FOR总分=JG48840 ?“总分最高的人数是:",ABC USE SET TALK ON FoxproForWindowshttp://cc.synu.edu.cn 2
FoxPro For Windows http://cc.synu.edu.cn 2 【编程1】统计CJK库中“总分”(N型字段)分数最高的人 数。 SET TALK OFF USE CJK INDEX ON 总分 TO ZF GO BOTTOM JG=总分 COUNT TO ABC FOR 总分=JG ?“总分最高的人数是:”,ABC USE SET TALK ON 总分 记录号 456 4 …… 478 24 …… 488 13 488 28 488 40 Zf.idx
【编程2】统计数据库文件 xsk.dbf中所有英语通过的人数 并依次输出这些学生的记录,其中“英语通过”字段为逻辑 型 SET TALK OFF USE XSK 逻辑型字我引用 ⅰ=0 为真 SCAN FOR英语通过为假not i=i+1 DISP ENDSCAN i USE SET TALK ON FoxproForWindowshttp://cc.synu.edu.cn 3
FoxPro For Windows http://cc.synu.edu.cn 3 【编程2】统计数据库文件xsk.dbf中所有英语通过的人数, 并依次输出这些学生的记录,其中“英语通过”字段为逻辑 型。 SET TALK OFF USE xsk i=0 SCAN FOR 英语通过 i=i+1 DISP ENDSCAN ? i USE SET TALK ON 逻辑型字段引用 为真 为假 .not
编程3】统计并显示 student数据库中男生人数,库中有字 段sno(c,6),sex(c2)。 SET TALK OFF SET TALK OFF USE Student USE student n=0 DO WHILE NOT.EOFO i=0 Fsex=“男" SCAN FOR SEX=男 DISP =i+1 n=n+1 DISP ENDIF ENDSCAN SKIP ENDDO ?n USE USE SET TALK ON RETURN FoxproForWindowshttp://cc.synu.edu.cn
FoxPro For Windows http://cc.synu.edu.cn 4 【编程3】统计并显示student数据库中男生人数,库中有字 段sno(c,6),sex(c,2)。 SET TALK OFF USE student n=0 DO WHILE .NOT.EOF() IF sex=“男" DISP n=n+1 ENDIF SKIP ENDDO ? n USE RETURN SET TALK OFF USE student i=0 SCAN FOR SEX=‘男’ i=i+1 DISP ENDSCAN ? i USE SET TALK ON
编程4】利用循环和分支结构实现按编号删除 student库中记录。库中有字段:编号(c,6),姓名(c,8)。 SET TALK OFF USE STUDENT NDE ON编号TObh DO WHILE T ACCEPT"请输入要删除记录的编号:"TObh SEEK bh IF FOUNDO DELE ELSE ?"查无此人!" ENDIF WAT"是否继续删除(Y/N)?"TOk IF UPPER(k)=N EXIT ENDIF ENDDO PACK SET TALK ON FoxproForWindowshttp://cc.synu.edu.cn 5
FoxPro For Windows http://cc.synu.edu.cn 5 【编程4】利用循环和分支结构实现按编号删除 student库中记录。库中有字段:编号(c,6),姓名(c,8)。 SET TALK OFF USE STUDENT INDE ON 编号 TO bh DO WHILE .T. ACCEPT "请输入要删除记录的编号:" TO bh SEEK bh IF FOUND() DELE ELSE ? "查无此人!" ENDIF WAIT " 是否继续删除(Y/N)?" TO k IF UPPER(k)="N" EXIT ENDIF ENDDO PACK SET TALK ON
【编程5】用格式输入输岀命令对 student. dbt数据库编写按姓名査询程 序,使其奖学金和成绩字段可以修改。库中有字段:name(c,8), birthday(d, 8), score(n, 3), schoship(n, 3). SET TALK OFF USE Student INDE name CLEA ACCEPT“请输入姓名:"toxm SEEK Xm IF NOT. EOFO @4,10SAY"姓名:"+name @4,30SAY"出生日期:"+DToC( birthday) @5,10SAY"成绩:" GET score @5,30SAY"奖学金:" GET schoship READ ELSE ?"查无此人!" ENDIF 思考 USE 1、将 SEEK xm改为 FIND Xm可以吗? RETURN 2、将NOT.EOF0改为 FFOUND可以吗 3、所有字段都可以修改或都不可以修改如何改? FoxproForWindowshttp://cc.synu.edu.cn 6
FoxPro For Windows http://cc.synu.edu.cn 6 SET TALK OFF USE student INDE name CLEA ACCEPT “请输入姓名:" to xm SEEK xm IF .NOT. EOF() @4,10 SAY "姓名:"+name @4,30 SAY "出生日期:"+DTOC(birthday) @5,10 SAY "成绩:" GET score @5,30 SAY "奖学金:" GET schoship READ ELSE ? "查无此人!" ENDIF USE RETURN 【编程5】用格式输入输出命令对student.dbf数据库编写按姓名查询程 序,使其奖学金和成绩字段可以修改。库中有字段:name(c,8), birthday(d,8),score(n,3),schoship(n,3)。 思考: 1、将SEEK xm 改为FIND xm 可以吗? 2、将IF .NOT. EOF()改为IF FOUND()可以吗? 3、所有字段都可以修改或都不可以修改如何改?
编程6】求1~100之间能被11整除的偶数个数以及它们之 和 ° SET TALK OFF STORE O TO sn FOR i=1TO 100 FMOD(,11)=0.AND.MOD(,2)=0 n=n+1 INT(Gi/11)=1/11 AND INT(/2)=1/2 S=StI ENDIF ENDFOR s=",s,n=,n SET TALK ON RETURN FoxproForWindowshttp://cc.synu.edu.cn 7
FoxPro For Windows http://cc.synu.edu.cn 7 【编程6】求1~100之间能被11整除的偶数个数以及它们之 和。 SET TALK OFF STORE 0 TO s,n FOR i=1 TO 100 IF MOD(i,11)=0 .AND. MOD(i,2)=0 n=n+1 s=s+i ENDIF ENDFOR ? " s=",s, " n=",n SET TALK ON RETURN INT(i/11)=i/11 .AND. INT(i/2)=i/2
编程刁输入n个数,求其中能被3整除的数之和。 SET TALK OFF INPUT n="TO n s=0 FOR j=1 TO n NPUT“m="Tom IF INT( m/3)=m/3 MOD(m, 3)=0 s=Stm ENDIF ENDFOR ?"s=",s SET TALK ON FoxproForWindowshttp://cc.synu.edu.cn 6
FoxPro For Windows http://cc.synu.edu.cn 8 【编程7】输入n个数,求其中能被3整除的数之和。 SET TALK OFF INPUT "n=" TO n s=0 FOR i=1 TO n INPUT “m=" TO m IF INT( m/3)=m/3 MOD(m,3)=0 s=s+m ENDIF ENDFOR ? "s=",s SET TALK ON
编程8】统计键盘输入字符串其中含有几个大写字母。 SET TALK OFF m=0 ACCEPT"请输入一串字符:"Tox nELEN(X) FOR iE1TO n IF UPPER(SUBSTR(X, i, 1)= SUBSTR(X, i, 1) m=m+1 ENDIF ENDFOR ?m SET TALK ON FoxproForWindowshttp://cc.synu.edu.cn 9
FoxPro For Windows http://cc.synu.edu.cn 9 【编程8】统计键盘输入字符串其中含有几个大写字母。 SET TALK OFF m=0 ACCEPT "请输入一串字符:" TO x n=LEN(x) FOR i=1 TO n IF UPPER(SUBSTR(x,i,1))= SUBSTR(x,i,1) m=m+1 ENDIF ENDFOR ? m SET TALK ON
编程9】输入若干个非零任意数,统计其中正负数的个数。 SET TALK OFF STORE O TO a b DO WHILET INPUT"请输入一个数(0结束):"Ton DO CASE CASE n=0 EXIT CASE n>o a=a+1 CASE n<O b=b+1 ENDCASE ENDDO "正数个数为:"a,"负数个数为:",b SET TALK O FoxproForWindowshttp://cc.synu.edu.cn 10
FoxPro For Windows http://cc.synu.edu.cn 10 【编程9】输入若干个非零任意数,统计其中正负数的个数。 SET TALK OFF STORE 0 TO a,b DO WHILE .T. INPUT "请输入一个数(0-结束):" TO n DO CASE CASE n=0 EXIT CASE n>0 a=a+1 CASE n<0 b=b+1 ENDCASE ENDDO ? "正数个数为:",a,"负数个数为:",b SET TALK ON