VFP程序设计典型例题汇总
《vfp实验题整理》word版
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程序设计题汇总
S=0 N=1 DO WHILE N<=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 6. 用“SCAN…ENDSCAN循环结构”显示“学生信息.dbf”文件中“英语成 绩”大于等于75的记录。 SET TALK OFF CLEAR USE 学生信息 SCAN FOR 英语ቤተ መጻሕፍቲ ባይዱ绩>=75 DISPLAY ENDSCAN USE SET TALK ON
请编写:
(1) 表单Form1的Init事件代码: 单击“选中”界面 表单设计界面 this.text1.value="学生学号" &&文本框显示初值“学生学号” bel2.visible=.f. &&标签label2不可见 this.timer1.enabled=.f. &&计时器timer1不可用 this.timer1.interval=10 &&计时器时间间隔为10/1000 秒(即0.01秒)
13. 编制一个表单完成表文件“学生.dbf”内容的只读浏览显示功能;表 单初始显示内容为表文件“学生.dbf”的首记录;当按前翻、后翻、 首记录、末记录按钮时,表单将自动显示相应记录的内容;当翻至 表头或表尾时,将自动设置相应按钮不可访问。参见下面的表单设 计及运行示意图。
VFP常见编程实例及模拟试卷4套
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程序设计题集
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编程题及参考答案(可打印修改)
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程序设计典范例题汇总
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
&&运行前单击教学管理数据库
(x<1)
(1≤x<10)
2.有一函数:
编写程序,输入 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
,x,'y=',y
y= 2x-1
x
3x-11 (x≥10)
3.编写程序,从键盘输入一个年份,判断它是否闰年。
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”
Visual FxoPro 程序设计题
1.编写程序,从键盘输入一个日期,查询 STUDENT 表中该日期以后出生的学
生信息并显示在浏览窗口中。
use student
input “请输入某日期:” to rq
*输入时有提示,或 input to rq 输入时无提示,输{^1987-01-01}
vfp常见20道编程题
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程序设计复习题集
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表单,包含文本框、标签和命令按钮,实现用户输入数据后,点击按钮将数据保存到数据库中。
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的正方形内切圆面积。
Vfp题库(程序设计基础)--典型例题
典型例题[例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.调⽤堆栈窗⼝分析:监视窗⼝主要就是⽤来指定表达式在程序调试执⾏过程中的变化。
vfp程序题总结
vfp程序题总结五.程序题1 在Text1中输入一个3位自然数,分解求和的结果存入Text2中x= thisform.text1.valuea=int【1 】b=int 【 2】c=【 3】s=【 4】thisform.text2.value=【5 】x/100 (x-a*100)/10 x-a*100-b*10 a+b+c s2 文本框Text1中输入的值与文本框T ext2中输入的值交换a= thisform.text1.valueb= thisform.text2.valued=【1 】【2 】【3 】=dthisform.text1.value=【4 】thisform.text2.value=【 5】a a=b b a b3 已知任意一个三角形的三条边为a、b、c,求其面积。
a=thisform.text1.valueb=【 1】c=【 2】p=(a+b+c)/【3 】s=【 4】(p*(p-a)*(p-b)*(p-c))thisform.text4.value=【5 】thisform.text2.value thisform.text3.value 2 sqrt s4 判断一个学生的计算机考试成绩x属于哪个分数段之间(0-59,60-69,70-79,80-89,90-100)Command1_click 事件代码如下:x= thisform.text1.valuestore 0 to h5,h6,h7,h8,h9do casecase x>=0 and x<=59h5=h5+1case 【1 】 and x<=69h6=h6+1case x>=70 and x<=79【 2】case 【3 】 and x<=89h8=h8+1case x>=90 and 【 4】h9=h9+1【 5】/doc/188050441.html,bel1.caption=str(h5)+ str(h6) +str(h7) +str(h8) +str(h9)x>=60 h7=h7+1 x>=80 x<=100 endcase5 假设表单与第二题中的表文件zgqk.dbf 建立了数据环境,在其中按姓名查找职工情况,找到后将其情况在表单上显示,否则在信息框中显示“查无此人”。
vfp程序题(含结果)
一、程序改错题(在参考程序文件夹中从gc1—gc7)1. 下面的程序是求3+9+27+81+243+...这样的数之和. 若累加数大于500时,则结束累加.程序中有一处错误。
改正后运行程序,将程序执行结果填入答案框内。
SET TALK OFFCLEARX=3Y=0DO WHILE .F.Y=Y+XIF Y>500EXITENDIFSTORE 3*X TO XENDDO?YSET TALK ONRETURN修改后的程序执行结果为:10922. 已知S1=1,S2=1+2,S3=1+2+3,…,SN=1+2+…+N,下面的程序求S20到S80有多少数能被17或35整除。
改正后运行程序,将程序执行结果填入答案框内。
SET TALK OFFI=20N=0DO WHILE I<=80STORE 0 TO SJ=1DO WHILE J<=IS=S+JJ=J+1ENDDOIF MOD(S,17)=0ENDIFI=I+1ENDDO? NSET TALK ONRETURN修改后的程序执行结果为:123. 计算S=1*5*9*13*...*k,直到累乘数k>=25中止。
程序中有错误。
改正后运行程序,将程序执行结果填入答案框内。
SET TALK OFFCLEARs=0k=1DO WHILE .T.s=s*kIF k>=25EXITENDIFk=k+4ENDDO?sRETURN修改后的程序执行结果为:52211254. 下面的程序是求1到500的偶数立方和与奇数立方和之差。
程序中有一处错。
更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口内。
SET TALK OFFSTORE 0 TO I,S1,S2DO WHILE I<=500IF MOD(I,2)=0S1=S1+I*I*IELSES2=S2+I*I*IENDIFENDDO? S1-S2SET TALK ONRETURN修改后的程序执行结果为:626875005. 程序求能被3整除且至少有一位数字为5的三位数的个数。
1-精选VFP常见编程实例-答案
精选VFP常见编程实例-答案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语句查询定位记录在赵伟上CLEARSCAN 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="女"skipelsedisplayskipendifendscanclose 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+1LOOPELSEf=1EXITENDIFENDDOIF f=0?str(s,3)+"是素数"ELSE f=1&&这个表达式可有可无,为了省事完全省略也可以。
VFP程序设计典型例题汇总
Visual FxoPro程序设计题1.编写程序,从键盘输入一个日期,查询STUDENT表中该日期以后出生的学生信息并显示在浏览窗口中。
use student &&运行前单击教学管理数据库input “请输入某日期:” to r q*输入时有提示,或input to rq输入时无提示,输{^1987-01-01} browse for 出生日期>rq2.有一函数:x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10)编写程序,输入x,输出y的值。
clearinput "Enter x please!" to xif x<1y=xelseif x<10y=2*x-1elsey=3*x-11endifendif? 'x=',x,'y=',y3.编写程序,从键盘输入一个年份,判断它是否闰年。
clearinput "Enter year number please!" to yif y%4=0 and y%100<>0 or y%400=0? y,"is a leap year!"else? y,"is not leap year."Endif4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。
90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。
clearinput “请输入一百分制成绩” to cjdo casecase cj>=90?” A”case cj>=80?” B”case cj>=70?” C”case cj>=60?” D”otherwise?” E”endcase5.编写程序,从键盘输入一个正整数M,输出M内(包括M)所有偶数。
VF程序设计试题及答案
VF程序设计请注意:1、本考试科目提供一套试题参考答案,进入本门课程点在线考试,随机抽题,如果考试题不是其中试题,千万别点最下面的“完成考试”按钮,立即关闭窗口,重新进入抽题,直到抽到所给这套题为止2、在线考试只有一次机会,成绩为最终考试成绩,抄袭、雷同作业一律按零分处理。
没给答案的可自行发挥,别空题,做完后一定点完成考试显示“答卷结果保存成功”表示提交成功,否则考试结果将无分值请注意:本学期您只有一次在线考试机会,请慎重做答和提交!01:29:42单项选择题第1题以下关于Visual FoxPro的叙述最全面的是(D)本题1分A、Visual FoxPro是一个数据库应用平台软件B、Visual FoxPro是一个数据库应用开发工具C、Visual FoxPro是一个综合应用软件D、Visual FoxPro既是一个数据库应用平台,又是数据库应用开发工具第2题关系数据库系统中所使用的数据结构是(D )本题1分A、树B、图C、表格D、二维表第3题把各个数据库文件联系起来构成一个统一的整体,在数据库系统中需要采用一定的( D)本题1分A、操作系统B、文件系统C、文件结构D、数据结构第4题用二维表形式表示的数据模型是(B )本题1分A、层次数据模型B、关系数据模型C、网状数据模型D、网络数据模型第5题关系数据库管理系统的3种基本关系运算不包括( A) 本题1分A、比较B、选择C、连接D、投影第6题下列关于数据库系统的叙述中,正确的是(A )本题1分A、表的字段之间和记录之间都存在联系B、表的字段之间和记录之间都不存在联系C、表的字段之间不存在联系,而记录之间存在联系D、表中只有字段之间存在联系第7题使用数据库技术进行人事档案管理是属于计算机的(C )本题1分A、科学计算应用B、过程控制应用C、数据处理应用D、辅助工程应用第8题在关系理论中,把二维表表头中的栏目称为(C )本题1分A、数据项B、元组C、结构名D、属性名第9题在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过(B ) 本题1分A、候选键B、主键C、外键D、超键第10题数据库系统的构成为:数据库、计算机硬件系统、用户和(D )本题1分A、操作系统B、文件系统C、数据集合D、数据库管理系统第11题数据库系统的用户对数据库的查询和存储操作使用的语言是( D )本题1分A、自然语言B、自含语言C、数据描述语言D、数据操作语言第12题DBAS指的是(C )本题1分A、数据库管理系统B、数据库系统C、数据库应用系统D、数据库服务系统第13题用于实现对数据库进行各种数据操作的软件称为(C ) 本题1分A、数据软件B、操作系统C、数据库管理系统D、编译程序第14题数据库DB、数据库系统DBS和数据库管理系统DBMS之间的关系是(B )本题1分A、DBMS包括DB和DBSB、DBS包括DB和DBMSC、DB包括DBS和DBMSD、DB、DBS和DBMS是平等关系第15题下列关于数据库系统的叙述中,正确的是(D )本题1分A、数据库系统只是比文件系统管理的数据更多B、数据库系统中数据的一致性是指数据类型一致C、数据库系统避免了数据冗余D、数据库系统减少了数据冗余第16题Visual FoxPro6。
VFP典型例题
十一,综合题*******************************************************************************一,多工作区,Replace,copy to . 例题1: 涉及set relation to 有如下表: (1) XS.DBF(学号C(8),姓名C(8),性别C(2),班级C(9),出生日期D,走读L) (2) CJ.DBF(学号C(8),课程名C(20),成绩N(5,1)) 说明:一个学生可以选择多门课程.请编写一个完整的程序,该程序能完成以下功能: 1, 将表XS.DBF 和表CJ.DBF 建立关联,并显示出所有男同学的姓名以及他们所选课程的课程名2, 将XS.DBF 表中所有班级为"2002 级 2 班"的同学信息拷贝到新表STUDENT.DBF 中, STUDENT .DBF 只含有学号,姓名,性别,走读四个字段3,将姓名为"王小平"的同学的所有成绩提高10% CLEAR CLOSE ALL SELE 2 USE CJ INDEX ON 学号TO XH SELE 1 USE XS SET RELATION TO 学号INTO B SET SKIP TO B LIST FOR 性别='男' FIELDS 姓名,B.课程名COPY TO STUDENT FOR 班级='2002 级2 班' FIELDS 学号,姓名,性别,走读replace b.成绩with b.成绩*1.1 fora.姓名="王小平" 例题2: 涉及update 下面有两张表: 总分表:ZF.DBF 学号姓名语文数学总分110 张三114 李四119 王二成绩表: CJ.DBF 学号语文数学110 67 65 114 89 67 119 78 95 按照成绩表的成绩修改总分表的成绩,并计算出总分表的总分字段参考答案: CLOSE ALL SELE 2 USE CJ INDEX ON 学号TAG XHCJ SELE 1 USE ZF INDEX ON 学号TAG XHZF UPDA ON 学号FROM B REPL 语文WITH B.语文,数学WITH B.数学REPL ALL 总分WITH 语文+数学LIST 例题3: 涉及join with: 将STUDENT.DBF 和学生成绩.DBF 连接成新文件NEW.DBF 表1: student(学号c(4),姓名c(8),性别L,出生日期D,高考成绩N(5,2)) 表2: 学生成绩(学号c(4),课程号C(3),分数N(2)) SELECT 1 USE STUDENT SELECT 2 USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号; FIEL 学号,A.姓名,A.性别,A.出生日期,课程号,分数USE NEW LIST 如果再增加一张表,三表相连: 表3: 课程(课程号C(3),课程名称C(10)) SELECT 1 USE STUDENT SELECT 2 USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号SELE 1 USE NEW SELE 2 USE 课程JOIN WITH A TO STU FOR 课程号=A.课程号USE STU LIST *********************************************************** ******************** 二,累加,累乘例1:累加:求1~100 的和SUM=0 FOR I=1 TO 100 SUM=SUM+I ENDFOR ?'1~100 的总和为: ',SUM 使用DO WHILE 实现: SUM=0 I=1 DO WHILE I<101 SUM=SUM+I I=I+1 ENDDO ?'1~100 的总和为: ',SUM 例2:累乘:求n! clear INPUT "求n!,请输入n 的值:" TO N MUL=1 FOR I=1 TO n MUL=MUL*I ENDFOR ?n,'的值为: ',MUL 例3:输入n 的值,求1+1/2!+1/3!+1/4!+….+1/n! ( 阶乘n!=1*2*3*4....*(n-1)*n ) CLEAR SUM=_①_ MUL=_②_ INPUT "请输入n 的值: " TO N FOR i=1 TO N FOR j=1 TO i MUL=MUL*__③__ ENDFOR SUM= SUM+____④_____ ENDFOR ?'求得的总和为: ',SUM 答案:1: 0 2: 1 3: j 4: 1/mul注意:外循环是累加,内循环是累乘*********************************************************** ******************** 三,双重循环:金字塔问题等看书阅读: 1,P159 页:例4.39 2,P160 页:例4.40 3,求1-100 间所有的质数CLEAR ?'2,3 是质数' FOR I=4 TO 100 FOR J=2 TO INT(SQRT(I)) IF MOD(I,J)=0 EXITENDIF ENDFOR IF J> INT(SQRT(I)) ?I,'是质数' ENDIF ENDFOR 4,运行XY.PRG 程序后,将在屏幕上显示如下乘法表: 1) 1 2) 2 4 3) 3 6 9 4) 4 8 12 16 5) 5 10 15 20 25 6) 6 12 18 24 30 36 7) 7 14 21 28 35 42 49 8) 8 16 24 32 40 48 56 64 9) 9 18 27 36 45 54 63 72 81 请对下面的程序填空: * * * 计算乘法XY.PRG * * * CLEAR FOR J=1 TO 9 ?STR(J,2)+') ' FOR ______________ ?? ______________ ENDFOR ? ENDFOR RETURN 第一空K=1 TO J 第二空5,排序问题STR(J*k,6) *********************************************************** ******************** 四,排序输入10 个数,将它们从小到大排列分析: 用i 代表趟数,j 代表次数(1)10 个数要比较9 趟(2)每趟要比较的次数为: 10-趟数(3)每次比较: 如果当前数a(j)大于本次比较的最后一个数a(10+1-i) 那么就交换,否则不交换clear dime a(10) ?'输入10 个数: ' for i=1 to 10 input "请输入: " to a(i) endfor for i=1 to 9 for j=1 to 10-i if a(j)>a(10-i+1) t=a(10-i+1) a(10-i+1)=a(j) a(j)=t endifendforendfor list memo like a 另外可以参看书:P162-163 页例4.45*********************************************************** ******************** 五,查询:locate\seek 有下列表: book(书名C(20),作者C(8),出版日期D,内容简介M) 编写程序:查询关于foxpro 的图书. USE BOOK LOCATE FOR 'foxpro' $ 书名IF ! FOUND() ?'没有关于foxpro的图书' ELSE DO WHILE ! EOF() CLEAR ?书名,作者,出版日期?内容介绍WAIT "是否继续查找?(Y/N)" IF M$'nN' EXIT TO M ENDIFCONTINUE ENDDO ?"全部显示完成" ENDIF 注意:关键地方在于1,什么地方用locate,什么地方用continue 2,if .. exit ..endif 3,do while not 的条件使用Locate 查找出所有入校总分在580 及以上的所有同学信息clear use 学生locate for 入校总分>=580 do while .not. eof() dispcontinuenddo ?'结束' cancel *********************************************************** ******************** 六,循环插入新记录编写程序,对于学生.dbf 能够在程序末尾循环插入新记录CLEAR CLOSE ALL USE 学生DO WHILE .T. APPE BLANK @5,20 SAY '学号' GET 学号@5,40 SAY '姓名' GET 姓名@7,20 SAY '性别' GET 性别@7,30 SAY '出生年月' GET 出生年月@9,20 SAY '入校总分' GET 入校总分READ WAIT '你想继续插入新记录吗?(Y/N) : ' TO X IF X='N' OR X='n' EXIT ENDIF CLEAR ENDDO CLEAR LIST CLOSE ALL 类似: 编写程序,该程序能够顺序修改表学生.DBF 中的所有数据. (要求:必须使用@行,列say ... get .. 进行数据修改) CLEAR CLOSE ALL USE 学生DO WHILE .T. @5,20 SAY '学号' GET 学号@5,40 SAY '姓名' GET 姓名@7,20 SAY '性别' GET 性别@7,30 SAY '出生年月' GET 出生年月@9,20 SAY '入校总分' GET 入校总分READ WAIT '你想继续修改记录吗?(Y/N) : ' TO X IF X='N' OR X='n' EXIT ENDIF CLEAR SKIP ENDDO CLEAR LIST CLOSE ALL *********************************************************** ******************** 七,参数传递\变量的作用域&&MAIN.PRG &&P1.PRG X1=1 PARA W1,W2 X2=2 PRIVATE W1 DO P1 WITH X1,X2W1=W1*3 ?'X1='+STR(X1,1) W2=W2*4 ??'X2='+STR(X2,1) RETURN X1=1 X2=2 DO P1 WITH X1,X1+X2 ?'X1='+STR(X1,1) ??'X2='+STR(X2,1) RETURN (1)第一次显示X1,X2 的值是( ) A. 1 , 8 B. 3 , 8 C. 1 , 1 D. 8 , 8 (2)第二次显示X1,X2 的值是( ) A. 1 , 2 B. 3 , 1 C. 3 , 2 D. 1 , 3 参考答案: B C 下面看第二个实例: 主程序MCX2.PRG clea public i,j store 1 to i,j,k do scx2.prg ?"主程序的输出结果:" ?"i="+str(i,2)+" j="+str(j,2)+" k="+str(k,2) cancel 子程序scx2.prgclea private j,k i=i*2 j=j+1 k=j+1 ?"子程序中输出的结果:" ?"i="+str(i,2)+" j="+str(j,2)+" k="+str(k,2) return 执行结果是: 子程序中输出的结果: i= 2 j= 3 k= 4 主程序的输出结果: i= 2 j= 1 k= 1 看等级考试中的题.(2003 年10 月笔试) *********************************************************** ******************** 八,@行,列say ... get ... default ... read 字幕问题: 1,有如下程序段,其功能是显示汉字"2008 年北京申奥成功! " 从屏幕的顶部移至底部,请填空补充该程序CLEAR CH='2008 年北京申奥成功!' R=1 DO WHILE R<=23 @R,26 SAY SPACE(60) @__________, 26 SAY CH T=INKEY(0.2) _______________ ENDDO RETURN 答案为: R+1 R=R+1 答案说明:@R,26 SAY SPACE(60)的作用是将上一行显示的'2008 年北京申奥成功!' 清除掉,然后@R+1, 26 SAY CH 显示新一行的数据R=R+1 是保证do while 不是死循环2,从左到右显示"同志们,要到期末了,努力奋斗吧!!"两次clear s=space(80)+"同志们,要到期末了,努力奋斗吧!!"+space(40) for nn1=1 to 2 &&显示两次for nn2=1 to 110 step 2 &&110=80+30,30 是那个字符串的宽度@20,0 say substr(s,nn2,80)inkey(2,'H')endforendfor*********************************************************** ******************** 九,scatter/gather(本节选用的表是学生.dbf) 掌握:1,scatter 是将一条记录的值copy 到一个数组中. (对应一维数组) copy from array 则是多条记录拷贝到数组中. (对应二维数组) 2,scatter 和copy from array 使用数组都可以不先定义,大小系统自己搞定3,如果事先定义了的话,scatter 会自动扩展大小,而copy from array 则不会请大家阅读下面两个例题体会: 例1:将"江冰"同学的名字修改成"姜冰" clear use 学生locate for 姓名="江冰" if found() scatter to x &&思考:数组X 应该有多少个单元?? list memo like x &&显示数组X 的单元和值x(2)="江冰" gather from x wait clear list else ?"对不起,没有江冰这个人" endif close all 思考答案:6 个, 那个备注型和通用型不算. 当然,上个题改为下例也对: clear use 学生locate for 姓名="江冰" dime x(4) &&先定义数组X 有4 个单元if found() scatter to x &&思考:数组X 应该有多少个单元?? list memo like x &&显示数组X 的单元和值x(2)="江冰" gather from x wait clear list else ?"对不起,没有江冰这个人" endif close all 思考答案:也是6 个, 那个备注型和通用型不算,虽然定义了四个,但是会自动扩展例2:关于copy to array 和append from array clear use 学生copy stru to new list copy to array y fields 学号,姓名,性别&&思考:数组Y 应该是什么样的?? Y(1,2)="张波" &&将"王小平改为了张波" sele 0 use new append from array y list close all 思考答案: 数组Y 是: y(10,3) 另外请分析本程序段的功能. 如果程序改为: clear use 学生dime y(3,2) list copy stru to new copy to array y fields 学号,姓名,性别&&思考:数组Y 应该是什么样的?? Y(1,2)="张波" sele 0 use new append from array y list close all 那么:数组Y 是: y(3,2) 和scatter 它们的区别: 不会自动扩展执行程序观察结果. 看书:P168 页第七题! ! *********************************************************** ******************** 十,数组1,排序问题. 2,书:163-164 例4.46-4.47 1, 数组的定义DIMENTION 数组名(数值表达式1,[数组表达式2...]) 定义后单元默认值为.F. 2,一维数组(1),定义一个一维数组: dime a(10) ---定义一个10 数组,且所有单元默认值为.F. (2),赋值: 例如: a='' a(1)=20 a(3)={^2002/09/23} a(7)=.T..... 循环赋值: dime a(10) i=1 do while i<=10 input '请输入数:' to a(i) i=i+1 enddo或者是: for i=1 to 10 input '请输入数:' to a(i) endfor (3),显示值: for i=1 to 10 ?a(i) endfor使用do while 大家思考方法2:list memo like a 3,二维数组例如:dime s(5,4) (1),赋值: 例如: s=0 s(3,4)=.t. s(12)='xixi' ..... 相当于s(3,4)='xixi' (2),循环赋值for i=1 to 5 for j=1 to 4 input '输入值:' to a(i,j)endforendfor (3),显示值: for i=1 to 5 for j=1 to 4 ??a(i,j)+space(2)endforendfor *********************************************************** ******************** 十一,综合题例1: 数据表JY.DBF 的内容如下: Record # 借书证号借书日期1 0010 02/01/99 2 0007 05/04/99 3 0006 02/03/99 4 0010 05/17/99 数据表JYR.DBF 的内容如下: Record# 借书证号姓名职称 1 0006 孟小梅教授 2 0010 郑财勇讲师 3 0007 王志军助教且:JYR 库以借书证号为关键字建立了索引,索引文件为JYR.IDX 程序如下: SELECT 1 USE JYR INDEX JYR SELECT 2 USE JY SET DEVICE TO PRINT &&注意: 有了这句话下面显示的结果都会发送到打印机H=1 DO WHILE .NOT. EOF() TS=DATE()-借书日期IF TS>80 SELECT 1 SEEK B.借书证号IF TS>100 .OR. 职称<>'教授' @H,4 SAY 姓名+'同志,您借的书已过期,请归还' H=H+1 ENDIF SELECT 2 ENDIF SKIP ENDDO SET DEVICE TO SCREEN RETURN (1)设当前系统日期为06/15/99,程序将打印( )还书的信息A. 孟小梅,郑财勇各一行B.孟小梅一行,郑财勇两行 C. 孟,郑,王各一行 D.孟,郑,王三人共五行参考答案: A (2)高级职称和其它职称借书的最多天数分别是( ) A.81 天,101 天B.100 天,80 天C.80 天,100 天D.101 天,81 天参考答案: B (3)本程序的功能是: ) ( A.查询接书证号B.查询借书日期C.书未还书者D.查询并打印超期未还书者参考答案: D 例2: CLEAR OPEN DATABASE emplorer USE compen SCAN FOR RECNO()<=10 IF 姓名='李强' LOOP ENDIF ?姓名,实发工资ENDSCAN USE CLOSE DATABASE (1)compen是: ) ( A.自由表B.数据库表C.数据库D.可能是自由表,也可能是数据库表答案是D (2)若数据库有50 条记录,则程序的功能是: ) ( A. 前10 条记录中搜索"李强"的记录 B.列出前10 条记录 C.每10 条记录一屏显示记录,但不显示"李强"的记录D.列出前10条记录,但是不显示"李强"的记录答案是D (3)循环结束后,指针指向( ) A. 第1 条B.最后一条 C.第10 条 D.最后 1 条记录加 1 答案是 D 请注意: scan 循环是从第一条做到最后一条,然后在根据for 条件选择处理哪些记录. 循环完成后一定EOF()为.t. 另外:注意区分exit 和loop 的作用是:exit 退出循环,loop 只是结束本次循环请不能区分的同学下来再问. 请大家注意:Scan 的使用方法,考试很可能要涉及到的这儿也给大家举例比较一下三种循环操作表:三种方法实现显示出全部的男生. -----------------------------使用DO WHILE 循环: CLEAR CLOSE ALL USE 学生DO WHILE NOT EOF() IF 性别='男' DISP ENDIF SKIP ENDDO CLOSE ALL -----------------------------使用FOR 循环: CLEAR CLOSE ALL USE 学生COUNT TO X GO TOP FOR I=1 TO X IF 性别='男' DISP ENDIF SKIP ENDFOR CLOSE ALL -----------------------------使用SCAN 循环: CLEAR CLOSE ALL USE 学生SCAN FOR 性别='男' DISP ENDSCAN CLOSE ALL -----------------------------例3: 1, CLEAR M=0 FOR X=1 TO 10 IF MOD(X,3)=0 M=M+X ENDIF ENDFOR ?M RETURN (1)该程序的功能是:求1 到10 之间() A. 能被 3 整除数的个数 B. 能被 3 整除数的和 C. 不能被3 整除数的个数D. 不能被3 整除数的和答案是:B (2)该程序执行的结果是: ) ( A. 3 B. 10 C. 18 D. 37 答案是:C 上机考试程序部分说明1)注意题目要求是一个完整程序,不要写题号1,2,3 之类2)如果题目涉及到表的操作,请第一条命令可以先发close all clear 最后条命令请书写: close all return 3)注意检查是否存盘到了指定的位置,是否是在项目中建立的程序。
vfp典型程序设计题(附参考答案)
典型程序设计题(附参考答案)1.求1到2000之间,能被3或7整除,并且含有数字5的整数的个数、它们的和、它们的平方根的和(保留2位小数)、以及它们的平方和。
2.求能被3整除且至少有一位数字为5的三位数的个数。
3.求出只要能被2,7,9之一整除的800以内的正整数的个数。
4.求[105,625]间能同时被7和11整除的自然数之和。
求[200,600]间奇数之和。
5.编程序求出1000到2000之间同时满足除3余2和除5余3条件的数的个数。
6.输出[10,100]中除以17的余数和除以5的商相等的整数的个数。
7.统计区间[1000,9999]内所有能被3整除,且千位数字与个位数字之和为8的整数的个数。
8.求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。
9.求出所有能被17整除且不含重复数字的三位数的和。
10.求1到500的偶数立方和与奇数立方和之差。
11.求3+9+27+81+243+...这样的数之和. 若累加数大于500时,则结束累加.12.求1+3+5+7+9+11+...这样的奇数之和.若累加数大于500时, 则结束累加。
13.计算S=1*5*9*13*...*k,直到累乘数k>=25中止。
14.求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出。
15.编写程序,s=1+1/2+1/3+…+1/99,保留两位小数。
16.编程求S=1*3+2*4+3*5+...+198*200。
17.设S=1+1/2+1/3+...+1/N,N为正整数。
编程求使S不超过10的最大的N18.求S=8!+9!+10!19.编写程序,求10!20.计算S=3!+5!+7!+...+N!,求直到S>=680000为止的奇数N。
21.s=1!+2!+3!+....+n! 当s大于61000时结束累加,求n。
22.数列xi各元素的值是:x1=1,x2=1+2,x3=1+2+3,.....xn=1+2+3+......+n。
VFP程序(有答案)
一. 数据类型【1】C1 (12)下列常量中格式正确的是( )。
A)S1.23E4 B)““计算机”等级考试”C) .False. D){^2003/01/13}【2】Y7 (15)下列数据哪个不是字符型数据( )。
A)13/01/08 B)“13/01/08”C)“12.3”D)“CHINA=中国”【3】Y6 (14)下列字符型常量的表示中,错误的是( )。
A)”12+13”B)“[x=y]”C)[[北京]] D)[“等级考试”]【4】Y5 (15)下列货币型常量的表示中,错误的是( )。
A)$1234.56 B)$1234.567 C)$1234.5678 D)$1234.56789【5】0904(7)常量{^2009-10-01,15:30:00}的数据类型是【】。
【6】0909-8 在Visual FoxPro中,表示时间2009年3月3日的常量应写为【】【7】Y5 (25)对于只有两种取值的字段,最好使用哪种数据类型( ).A)日期型B)字符型C)数值型D)逻辑型【8】Y7 (25)下列变量名中不合法的是( )。
A)XYZ B)年龄C)2X D)A2【9】Y2 (12)下列关于变量的叙述中,不正确的一项是( )。
A)在Visual FoxPro中,可以将不同类型的数据赋给同一个变量 B)变量的类型决定变量值的类型C)在Visual FoxPro中,变量分为字段变量和内存变量 D)变量值可以随时改变【10】1103(7)假设当前表、当前记录的“科目”字段值为“计算机”(字符型),在命令窗口输入如下命令将显示结果【】。
m=科目-“考试”?m【11】0804 (15)如果内存变量和字段变量均有变量名"姓名",那么引用内存变量的正确方法是:A.M.姓名B.M->姓名 C.姓名D.A和B都可以【12】1003 (27) 0509(23)假设职员表已在当前工作区打开,其当前记录的“姓名”字段值为“李彤”(C型字段,宽度为6)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。