VFP程序设计题汇总
3.按学号在“学生信息.dbf”文件中查找并显示指定的记录。要求可以重复查询,找到则显示该生的记录,找不到则提示“查无此人!”,按非“Y”、“y”可结束查询。
SET TALK OFF
CLEAR
USE 学生信息 &&设当前目录下表文件存在
ACCEPT '学号查询吗(Y/N)' TO cx&&循环条件的初始化
请写出:
(1)命令按钮组Commandgroup1的Click事件代码。
(2)命令按钮组Commandgroup2的Click事件代码。
命令按钮组Commandgroup1的Click事件代码
do case
case =1
case =2
case =3
case =4
endcase
命令按钮组Commandgroup2的Click事件代码
表单(Form1)的Init(初始化)事件代码
“首记录”(Command1)的Click(单击)事件代码
go top
“上一记录”(Command2)的Click(单击)事件代码
if!bof()
skip -1
else
endif
“下一记录”(Command3)的Click(单击)事件代码
if!eof()
SET TALK OFF
CLEAR
S=1&&初始化存放累加和的变量S为1
STORE 1 TO T,N&&初始化变量T,N的值为1
DO WHILE S<=1E+20
T=T*(N+1)*(N+2)&&从第二项开始,计算每一项阶乘。
S=S+T&&追加每一项阶乘
N=N+2 &&下一个奇数
ENDDO
"S=",S-T&&最后一个S由于是多加了一个T后不满足条件,故减去。
set talk off
clear
input "请输入成绩: " to cj
do case
case cj>=90
"优秀"
case cj >=80
"良好"
case cj >=70
"中"
case cj >=60
"及格"
case cj<60
"不及格"
otherwise
"数据有误"
endcase
set talk on
S=0
N=1
DO WHILEN<=36
S=S+N
N=N+1
ENDDO
" 1+2+3+……+36的值为:", S
SET TALK ON
用FOR循环的写法:
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 36
S=S+N
ENDFOR
" 1+2+3+……+36的和值:", S
SET TALK ON
请编写:
(1)表单Form1的Init事件代码:
“学生学号”
(2)“开始”按钮Command1的Click事件代码:
set delete on &&隐藏已加入删除标记的记录
(3)“选中”按钮Command2的Click事件代码:
delete
(4)“退出”按钮Command3的Click事件代码:
recall all &&恢复已做删除标记的所有记录
方法二:
SET TALK OFF
CLEAR
USE学生信息
locate for英语成绩>=75
DO WHILE !EOF()
display
continue
ENDDO
USE
SET TALK ON
5.分别用DO循环和FOR循环求1+2+3+……+36的和值。
用DO循环的写法:
SET TALK OFF
CLEAR
6.用“SCAN…ENDSCAN循环结构”显示“学生信息.dbf”文件中“英语成绩”大于等于75的记录。
SET TALK OFF
CLEAR
USE 学生信息
SCAN FOR 英语成绩>=75
DISPLAY
ENDSCAN
USE
SET TALK ON
7.求当1!+3!+5!+…+n!的值不超过10的20次幂时的临界值及n的值。
do case
case =1
case =2
case =3
case =4
endcase
SET TALK OFF
CLEAR
INPUT "输入一个整数:" TO M&&输入指定的正整数M的值
S=0 &&初始化存放累加和变量S为0
FOR P=1 TO M
IF INT(P/2)=P/2&&判断P是否是偶数
P
S=S+P&&是偶数就把它累加起来
ENDIF
ENDFOR
S
SET TALK ON
10.求解百鸡问题,“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百钱百鸡,问鸡翁、母、雏各几何”
一.程序设计题汇总
1.通过输入学生的学号(字符型)查找学生,若找到该学生,先输出学号与姓名,然后输出“英语”和“计算机实用技术”成绩。若找不到该学生输出“查无该生”。(设表文件“学生信息”满足题目需要)
set talk off
clear
use 学生信息
accept "请输入学生学号:" to xh
locate for 学号==xh
GBS=I&&把第一次出现的公倍数(最小公倍数)赋给变量“GBS”。
GYS=M*N/GBS&&最大公约数
EXIT&&找到第一个“I”便跳出循环
ENDIF
ENDFOR
"最小公倍数= "+ltrim(STR(GBS)),"最大公约数= "+ltrim(STR(GYS))
SET TALK ON
12.在给定“学生.DBF”表文件中包含有“学号”、“姓名”字段,对学号编制一个抽奖表单。要求,不能有重复中奖学生。程序运行时,字号在文本框中显示,用标签显示中奖学生的学号、姓名。应有“开始”、“抽取”、“退出”控件。建议表单(Form1)包括的控件是:一个文本框(Text1)、两个标签(Label1、Label2)、三个按钮(Command1、Command2、Command3)和一个计时器(Timer1)。
SET TALK OFF
CLEAR
INPUT "输入第一个整数:" TO N
INPUT "输入第二个整数:" TO M
X=MAX(N,M)&&大的有可能是最小公倍数
FOR I=X TO M*N&&如果X不是最小公倍数,M*N一定是公倍数,但不一定是最小公倍数。
IF MOD(I,M)=0 AND MOD(I,N)=0&&在循环控制变量递增的过程中,如果出现能被M和N同时整除(余数为0),则为公倍数。
if !eof()
学号,姓名
list fiel 英语,计算机实用技术 for 学号=xh
else
"查无该生"
endif
use
2.输入学生成绩,并要求:成绩小于60分时,输出“不及格”;成绩在60~69分之间时,输出“及格”;成绩在70~79之间时,输出“中”;当成绩在80~89之间时,输出“良”;当成绩在90~100之间时,输出“优”。
DO WHILE cx='Y'.='y' &&大小写均可执行查询
CLEAR
ACCEPT '请输入学号:' TO xh
LOCATE ALL FOR 学号=xh &&此处ALL可以缺省,默认为在全部记录查找。
IFEOF()
'查无此人!'
WAIT
ELSE
DISPLAY
ENDIF
ACCEPT '继续按学号查询吗(Y/N)' TO cx&&修改循环条件
"N=",N-2 &&最后一个N由于是多加了一个2后不满足条件,故减去。
SET TALK ON
8.在程序所在的目录中已有学生表(学生.Dbf)(字段为:学号,姓名,性别,出生年月,简历,奖学金,照片)。要求:显示输出“学生”表中的1975年或以前出生的学生姓名和出生年月。
SET TALK OFF
CLEAR
if val(right(time(),2))%2=0 &&如果秒值是2秒的整数倍。
=rgb(0,255,0) &&表单背景为绿色
else
=rgb(0,0,255) &&表单背景为篮色
endif
15.请设计一个右图所示的表单。表单实现的功能是:单击字体按钮和颜色按钮,“欢迎使用VFP!”的字体和颜色会随之改变。表单(Form1)包括的控件有:两个命令按钮组(Commandgroup1、Commandgroup2)、一个标签(Label1)。请写出相应控件的事件代码。