VFP程序设计典型例题汇总
- 格式:doc
- 大小:31.00 KB
- 文档页数:7
Visual FoxPro实验题汇总★顺序结构程序设计1.用过程化编成方式编写本题。
求解一元二次方程〔JFC.PRG〕a=1b=4c=4x1=<-b+SQRT<b^2-4*a*c>>/<2*a>x2=<-b-SQRT<b^2-4*a*c>>/<2*a>?"方程的一个根是:",x1,space<10>,"另一个根是:",x22.理解大小写转换函数。
在文本框中输入文本串,按"转大写"按钮,文本中的英文字母变为大写,按"转小写"按钮,文本中的英文字母变为小写〔如图所示〕。
<FORM><load>:Public a<text1><interactiveChange>:Thisform.text1.value=a<大写><click>:Thisform.text1.value=upper<a><小写><click>:Thisform.text1.value=lower<a><复原><click>:Thisform.text1.value=a3.班上集体购买课外读物,在文本框中输入3种书的单价、购买数量,计算并输出所用的总金额。
<总计><click>:a=val<thisform.text1.value>b=val<thisform.text2.value>c=val<thisform.text3.value>d=val<thisform.text4.value>e=val<thisform.text5.value>f=val<thisform.text6.value>thisform.text7.value=a*b+c*d+e*f4. 在文本框中输入小时、分、秒,化成共有多少秒,然后输出之。
VFP常见编程实例及模拟试卷4套1、1-100的累加** 求1到100的累加值CLEARs=0i=1DO WHILE i<=100s=s+ii=i+1 &&一定记住先累加后循环ENDDOsRETURN2、阶乘** 求5的阶乘CLEARj=1i=1DO WHILE i<=5j=j*ii=i+1ENDDOjRETURN3、求阶乘和** 求1至5的阶乘和CLEARs=0i=1j=1DO WHILE i<=5j=j*is=s+ji=i+1ENDDOsRETURN4、条件定位** 查询定位记录指针在赵伟上CLEARUSE 学生LOCATE FOR 姓名="赵伟"IF FOUND()DISPLAYELSECANCELENDIFCONTINUE5、用scan语句查询定位** 用scan语句查询定位记录在赵伟上SCAN FOR 姓名="赵伟"DISPLAYENDSCANRETURN6、用scan语句扫描符合条件的记录,并显示出来** 把年龄小于30岁的人显示出来CLEARSCAN FOR 年龄<30DISPLAYENDSCANRETURN7、查找男性职工** 查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE FOUND()DISPLAYCONTINUEENDDORETURN** 查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE NOT EOF()DISPLAYCONTINUEENDDORETURN** 查找男性职工CLEARUSE 职员基本信息表LOCATE FOR 性别="男"DO WHILE .t.IF FOUND() thenDISPLAYELSE &&记住最后一个ELSE语句后面不需要条件表达式 CANCELENDIFCONTINUEENDDO** 查找男性职工set talk offclearopen database 家庭成员管理.dbcuse stu.dbfscan for not eof()if xb="女"skipelsedisplayendifendscanclose databaseuseset talk onreturn8、新值换旧值** 有一对新生的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?clearstore 1 to a,bi=3do while i<=12c=a+ba=bb=ci=i+1enddo"一年共出生兔子:",creturn9、多位整数各个位数相加** 求多位整数各个位数之和CLEARs=0input "请输入一个多位整数:" to aDO WHILE a<>0s=s+MOD(a,10) &&将a取余正好是个位上的数a=INT(a/10) &&将a除10取整正好是除个位之后的数ENDDO"这个整数的各个位数之和是:",sRETURN10、找100-999之间的“水仙花数”CLEARFOR i=100 TO 999a=INT(i/100)b=INT((i-100*a)/10)c=i-INT(i/10)*10IF i=a^3+b^3+c^3?iENDIFENDFORRETURN11、判断一个大于3的数是否为素数CLEARinput "请输入一个数(>=3):" to sf=0i=2DO WHILE i<=INT(SQRT(s))IF MOD(s,i)<>0i=i+1ELSEf=1EXITENDIFENDDOIF f=0?str(s,3)+"是素数"ELSE f=1 &&这个表达式可有可无,为了省事完全省略也可以。
VFP程序设计题集1、求[10,1000]内所有能被被7和9中至少一个数整除的整数之个数。
set talk offclears=0for x=10 to 1000if mod(x,7)=0 and mod(x,9)=0n=n+xendifendforxset talk onreturn答案:2362、求[10,1000]内所有能同时被7和9整除的整数之和。
set talk offclears=0for x=10 to 1000if mod(x,7)=0 and mod(x,9)=0s=xendifendforxset talk onreturn答案:75603、求[10,1000]内所有能被6整除但不能被9整除的整数之和。
set talk offclears=0for x=10 to 1000if mod(x,6)=0 or mod(x,9)=0x=s+xendifendforsset talk onreturn答案:554404、求[10,1000]内所有能被6和9中的一个且只有一个数整除的整数的个数。
set talk offclearn=0for x=10 to 1000if mod(x,6)=0 and mod(x,9)!=0 and mod(x,6)!=0 and mod(x,9)=0 n=xendifendfornset talk onreturn答案:1655、求[100,800]内所有既不能被5整除也不能被7的整数的个数。
set talk offclearn=0for x=100 to 800if mod(x,5)=0 and mod(x,7)<>0n=x+1endifendforxset talk onreturn答案:4806、求[101,299]内所有能被2整除但不能同时被3和5整除的整数之和。
set talk offclears=0for x=101 to 299if mod(x,2)=0 and not mod(x,3)=0 and mod(x,5)=0x=s+xendifendforsset talk onreturn答案:186307、求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。
VFP编程题及参考答案1.输入圆的半径,求圆的周长和面积并输出。
解:编写程序如下:clearinput “请输入圆的半径:” to rl=2*3.14159*rs=3.14159*r*r? “圆的周长为:”,l? “圆的面积为:”,s2.输入梯形上底、下底和高的值,求梯形面积并输出。
解:编写程序如下:clearinput "请输入梯形的上底:" to shdinput "请输入梯形的下底:" to xdinput "请输入梯形的高:" to gs=(shd+xd)*g/2? "梯形的面积为:",s3.输入三角形的三边长(设输入的三边a、b、c能构成三角形),求三角形的周长和面积并输出。
(提示:面积=半周长*(半周长-a)*(半周长-b)*(半周长-c)的平方根)解:编写程序如下:clearinput "请输入三角形的第一条边长:" to ainput "请输入三角形的第二条边长:" to binput "请输入三角形的第三条边长:" to cL=(a+b+c)/2s=sqrt(L*(L-a)*(L-b)*(L-c))? "三角形的周长为:",2*L? "三角形的面积为:",s4.输入2个实数,要求按由小到大的次序输出这两个数。
解:编写程序如下:clearinput "请输入第一个实数:" to num1input "请输入第二个实数:" to num2if (num1>num2)? num2,num1else? num1,num2endif5.请编写一个“A类邮件”计费程序,求出邮件的邮资费并输出:“A类邮件”计费规定:当邮件重量小于等于200克时,邮资费为每克0.06元;当邮件重量超过200克时,其中200克,按每克0.06元计费,超过200克的重量,按每克0.03元计费。
vfp常见20道编程题VFP常见20道编程题1、求解AX^2 BX C=0的根、其中A、B、C三个参数由键盘输入。
一元二次方程的求根公式是:X=-b±√b2-4ac/2acleartext一元二次方程求解ax^2 +bx+ c=0endtextinput '请输入a的值:' to ainput '请输入b的值:' to binput '请输入c的值:' to cm=b*b-4*a*cif m>=0x1=(-b sqrt(m))/(2*a)x2=(-b-sqrt(m))/(2*a)'x1的值是:',x1'x2的值是:',x2else'此方程无实根!'endif2、编写程序将1-100之间所有能被7和3整除的整数输出clearfor i=1 to 100if i%3=0 and i%7=0iendifendfor3、编写程序计算e,e的近似值计算公式为:e=1 1/1! 1/2! 1/3! ... 1/n!,直到1/n!<0.000001为止e=1n=1do while .t.k=1for i=1 to nk=k*iendform=1/ke=e mif m<0.000001exitendifn=n 1enddo'e=1 1/1! 1/2! 1/3! … 1/n!=',e4、编写程序,计算1!2!3! .......N!=?clearinput '请输入n的值:' to ns=0t=1for i=1 to nt=t*is=s tendfor'1!2!3! .......N!=',s5、从键盘输入十个数,将它们进行降序排列。
clear dime a(10)for i=1 to 10input '请输入一个数:' to a(i)'降序排列为:'for i=1 to 9for j=i 1 to 10if a(i)<a(j)< p="">k=a(i)a(i)=a(j)a(j)=kendifendforalltrim(str(a(i))) ' 'endforalltrim(str(a(i)))6、(1)输出有*号组成的图形:*************************clearfor i=-3 to 3space(abs(i))for j=1 to 7-abs(i)*2 ??'*' endforendfor(2)********************clearfor i=1 to 5space(5-i)for j=1 to 2*i-1 ??'*'endforendfor7、编写一个程序产生一个有20项的Fibonacci数列并输出。
VFP程序设计复习题集一、选择题1. VFP中,以下哪个选项是数据库管理系统(DBMS)的英文缩写?A. SQLB. DBMSC. RDBMSD. ODBC2. 在VFP中,以下哪个命令用于显示当前表单的属性?A. DISPLAYB. SHOW GETC. SHOW WINDOWD. DISPLAY GET3. VFP中,以下哪个函数用于计算两个日期之间的天数差?A. DATE()B. DATEDIFF()C. DATEADD()D. DATEDIFFERENCE()4. 在VFP中,以下哪个属性用于设置表单的标题?A. CaptionB. NameC. TitleD. Label5. VFP中,以下哪个命令用于打开一个表单?A. DOB. DISPLAYC. SHOWD. OPEN二、填空题6. VFP是一种______数据库管理系统。
7. 在VFP中,一个表可以包含多个______,每个字段可以存储不同类型的数据。
8. VFP提供了多种数据类型,包括数值型、字符型、日期型等,其中数值型数据类型用______表示。
9. 在VFP中,可以使用______语句来定义变量的类型和存储的数据。
10. VFP中的表单设计器提供了丰富的控件,如标签、文本框、命令按钮等,这些控件可以通过______属性来设置其显示的文本。
三、简答题11. 简述VFP中表单与报表的区别。
12. 解释VFP中的事件驱动编程是什么,并给出一个简单的例子。
13. 描述VFP中如何使用SQL语句进行数据查询。
14. 说明VFP中如何实现数据的排序和筛选。
15. 阐述VFP中如何使用循环结构进行数据处理。
四、编程题16. 编写一个VFP程序,实现以下功能:输入一个学生的姓名和分数,然后输出该学生的姓名和分数。
17. 编写一个VFP程序,实现对一个班级学生的成绩进行排序,并输出排序后的成绩列表。
18. 设计一个VFP表单,包含文本框、标签和命令按钮,实现用户输入数据后,点击按钮将数据保存到数据库中。
1、有一张0.5mm厚足够大的纸,问对折多少次可以达到珠峰高度(8848.13m? h=0.5cs=0do while h<8848000h=h*2cs=cs+1enddo?"对折的次数为:",cs2、文本框Text1中输入的值与文本框Text2中输入的值进行交换。
Form1的click事件a=this.text1.valuethis.text1.value=this.text2.valuethis.text2.value=a3、在表单的标签上输出自然数1,2,3,4,5Form1的click事件bel1.caption=””For i=1 to 5bel1.caption=bel1.caption+str(I,1next4、判断一个学生的计算机考试成绩x属于哪个分数段之间(0-59,60-69,70-79, 80-89,90-100Form1的click事件input to xdo casecase x<0 or x>100=messagebox("成绩在0-100之间,重新输入"case x<=59=messagebox("该生的计算机成绩"+str(x,3+"在0-59之间"case x<=69=messagebox("该生的计算机成绩"+str(x,3+"在60-69之间"case x<=79=messagebox("该生的计算机成绩"+str(x,3+"在70-79之间"case x<=89=messagebox("该生的计算机成绩"+str(x,3+"在80-89之间"otherwise=messagebox("该生的计算机成绩"+str(x,3+"在90-100之间"endcase5、找出zgqk.dbf中基本工资最高记录,输出其姓名和基本工资Form1的click 事件Use zgqkmax=基本工资scanif 基本工资>maxmax=基本工资endifendscanloca for 基本工资=max?姓名,基本工资6、找出2010至2100之间所有闰年的年份Form1的click事件for y=2010 to 2100if y%4=0 and y%100!=0 or y%400=0?y,"年是闰年"endifnext7、计算1+3+5+……99,并将结果存入文本框Text1中Form1的click事件sum=0for i=1 to 99 step 2sum=sum+inextthis.text1.value="1+3+5+...+99的和:"+allt(str(sum 8、求边长为a的正方形内切圆面积。
典型例题[例1] 在()窗⼝中可以控制列表框内显⽰的变量种类。
A.跟踪窗⼝B.监视窗⼝C.局部窗⼝D.调动堆栈窗⼝分析:局部窗⼝⽤于显⽰模板程序中的内存变量,并显⽰它们的名称.当前取值的类型。
它可以控制在列表内显⽰的变量类型。
答案c例2下⾯选项中关于ACCEPT命令说法错误的是()A.ACCEPT命令格式是:ACCEPT[] TOB.该命令只接收字符串,但是⽤户在输⼊字符串时,必须要加上定界符C如果不输⼊任何内容直接按回车键,系统就会把空串赋给指定的内存变量D如果选⽤,那么系统就会⾸先显该表达式的值,作为提⽰信息分析:该命令只接收字符串,但⽤户在输⼊时不需要加定界符;否则,系统会把定界符当作字符串的⼀部分输出.答案:B例3下列关于过程的说法中不正确的是A.过程⽂件可以放在任何程序⽂件代码的后⾯,也可以保存在称为过程⽂件的单独⽂件⾥B.过程⽂件只包含过程,这些过程只能被过程⽂件调⽤C.如果需要打开多个过程⽂件,可以在调⽤过程语句中加ADDITVE,那么在打开过程⽂件时,并不关闭原先已打开的过程⽂件D.关闭个别过程⽂件的命令格式是:RELESE PROCEDURE分析:过程⽂件只包含过程,这些过程可以被任何其它程序调⽤.命令格式SETPOCEDURE TO[][ADDITIVE]就可以打开多个过程⽂件.当使⽤不带任何⽂件名的SET PROCEDURE TO命令时,将会关闭所有的过程⽂件,使⽤命令RELEASE PROCEDURE时,将关闭指定的过程⽂件.答案:B例4 在⼀个程序定义了的⼀些变量,选出局部变量 ( )1.PRGPUBLIC aILOCAL a2,a3SCORE’B’TO a4LOCATE a5A.a1B.a2,a3C.a4D.a5分析:A是公共变量,C是私有变量,D的命令和LOCATE相似,但不存在这样定义变量的命令.只有B才是定义了两个局部变量.答案:B例5 不需要先建⽴就可以使⽤的变量是 ( )A.局部变量B.公共变量C.私有变量D.数组分析:私有变量是指在程序中直接使⽤,由系统⾃动隐含建⽴的变量.即没有通过PUBLIC 或LOCAL定义的变量.它的作⽤域是建⽴它的模块及其下属的各层模块.私有变量随着建⽴它的模块运⾏结束⾃动清除,不需要先建⽴就可以使⽤.答案:C「例6」可以设置表达式类型的断点窗⼝是()A.跟踪窗⼝B.监视窗⼝C.局部窗⼝D.调⽤堆栈窗⼝分析:监视窗⼝主要就是⽤来指定表达式在程序调试执⾏过程中的变化。
Visual FxoPro程序设计题
1.编写程序,从键盘输入一个日期,查询STUDENT表中该日期以后出生的学生信息并显示在浏览窗口中。
use student &&运行前单击教学管理数据库
input “请输入某日期:” to r q
*输入时有提示,或input to rq输入时无提示,输{^1987-01-01}
browse for 出生日期>rq
2.有一函数:
x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编写程序,输入x,输出y的值。
clear
input "Enter x please!" to x
if x<1
y=x
else
if x<10
y=2*x-1
else
y=3*x-11
endif
endif
'x=',x,'y=',y
3.编写程序,从键盘输入一个年份,判断它是否闰年。
clear
input "Enter year number please!" to y
if y%4=0 and y%100<>0 or y%400=0
y,"is a leap year!"
else
y,"is not leap year."
Endif
4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。
90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。
clear
input “请输入一百分制成绩” to cj
do case
case cj>=90
”A”
case cj>=80
”B”
case cj>=70
”C”
case cj>=60
”D”
otherwise
”E”
endcase
5.编写程序,从键盘输入一个正整数M,输出M内(包括M)所有偶数。
clear
input to m
for i=0 to m step 2
str(i,5)
Endfor
6.编写程序,从键盘输入一个正整数M,计算M内(包括M)所有偶数之和。
clear
input to m
s=0
for i=2 to m step 2
s=s+i
Endfor
s
7.编写程序,从键盘输入5个数,找出其中的最大数和最小数。
clear
input "请输入第一个数" to max
min=max
for i=2 to 5
"请输入第"+str(i,2)+"个数"
input to a
if a>max
max=a
endif
if a<min
min=a
endif
endfor
'max=',max
'min=',min
8.利用数组编写程序,从键盘输入10个数,再按逆序输出。
dime a(10)
for i=1 to 10
input to a(i)
endfor
for i=10 to 1 step -1
a(i)
endfor
9.编写程序,逐条显示STUDENT表中的男生记录(显示一个记录后,由用户按任意键来显示下一个记录)。
use student
scan for 性别=”男”
disp
wait
endscan
use
10.编写程序,自STUDENT表的最后一个记录开始向前逐个显示(显示一个记录后,由用户按任意键来显示上一个记录)。
use student
go bott
do while not bof()
disp
wait
skip -1
enddo
use
11.先在STUDENT表中插入一个新字段:平均成绩(数值型,6,2)。
然后编写程序,根据GRADE表统计每个学生的平均成绩,并填入新插入的字段中。
select 学号,avg(成绩)as 平均成绩from grade group by 学号into table t
use t
index on 学号to txh
sele 2
use student
index on 学号to sxh
set rela to 学号into t
repl all 平均成绩with t->平均成绩
12.写程序,输入一个三位自然数,判断该数是否为水仙花数。
所谓水仙花数是指一个三位自然数,其各位数字立方和等于该数本身。
例如,153是水仙花数,因为153=13+53+33。
input to zrs
gw=zrs%10
sw=int(zrs/10)%10
bw=int(zrs/100)
if bw**3+sw**3+gw**3=zrs
”yes!”
else
”no.”
Endif
13.编写一个自定义函数,判断一个三位自然数是否为水仙花数,若是,返回逻辑真,否则,返回逻辑假。
编写主程序,输入一个三位自然数,调用自定义函数判断该数是否为水仙花数。
clear
input to n
if sxh(n)
”yes”
else
function sxh
para zrs
gw=zrs%10
sw=int(zrs/10)%10
bw=int(zrs/100)
if bw**3+sw**3+gw**3=zrs
return .t.
else
return .f.
endif
endfu
14.编写程序,输入一个自然数,判断该数是否为素数。
clear
input to zrs
sf=.t.
for i=2 to sqrt(zrs)
if zrs%i=0
sf=.f.
exit
endif
endfor
if sf=.t.
”yes”
else
”no”
Endif
15.编写一个自定义函数,判断一个自然数是否为素数,返回一个逻辑值。
编写主程序,调用自定义函数求100~200间的所有素数。
for i=100 to 200
if prime(i)
i
endif
endfor
function prime
for j=2 to sqrt(zrs)
if zrs%j=0
sf=.f.
exit
endif
endfor
return sf
endfunc
16.九九乘法表
(1)矩形样式
Clear
For I=1 to 10 &&外循环I控制输出9行
For J=1 to 9 &&内循环J控制第I行输出9项
str(I,1)+”×”+str(J,1)+”=”+str(I*J,2) &&输出I*J项”“
Endfor
Endfor
Return
17.阶乘
(1)求单个数阶乘(以5为例)
Clear
J=1
I=1
Do while i<=5
J=j*i
I=i+1
Enddo
j
Return
(2)求阶乘和(求1到5阶乘的和)
Clear
S=0
I=1
J=1
Do while i<=5 J=j*i
S=s+j
I=i+1 Enddo
s
Return。