1、VFP编程实例2VFP常见编程实例1、1-100的累加* 求1到100的累加值CLEARs=0i=1DO WHILE i=100s=s+ii=i+1&一定记住先累加后循环ENDDO?sRETURN2、阶乘* 求5的阶乘CLEARj=1i=1DO WHILE i=5j=j*ii=i+1ENDDO?jRETURN3、求阶乘和* 求1至5的阶乘和CLEARs=0i=1j=1DO WHILE i=5j=j*is=s+ji=i+1ENDDO?sRETURN4、条件定位* 查询定位记录指针在赵伟上CLEARUSE 学生LOCATE FOR 姓名=赵伟IF FOUND()DISPLAYELSECANCELE
2、NDIFCONTINUE5、用scan语句查询定位* 用scan语句查询定位记录在赵伟上CLEARSCAN FOR 姓名=赵伟DISPLAYENDSCANRETURN6、用scan语句扫描符合条件的记录,并显示出来* 把年龄小于30岁的人显示出来CLEARSCAN FOR 年龄30DISPLAYENDSCANRETURN7、查找男性职工* 查找男性职工CLEARLOCATE FOR 性别=男DO WHILE FOUND()DISPLAYCONTINUEENDDORETURN* 查找男性职工CLEARLOCATE FOR 性别=男DO WHILE NOT EOF()DISPLAYCONTINUE
3、ENDDORETURN* 查找男性职工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、新值换旧值* 有一对新生
4、的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?clearstore 1 to a,bi=3do while i=12c=a+ba=bb=ci=i+1enddo?一年共出生兔子:,creturn9、多位整数各个位数相加* 求多位整数各个位数之和CLEARs=0input 请输入一个多位整数: to aDO WHILE a0s=s+MOD(a,10)&将a取余正好是个位上的数a=INT(a/10)&将a除10取整正好是除个位之后的数ENDDO?这个整数的各个位数之和是:,sRETURN10、找100-999之间的“水仙花数”CLEARFOR i=100 TO 999
5、a=INT(i/100)b=INT(i-100*a)/10)c=i-INT(i/10)*10IF i=a3+b3+c3?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&这个表达式可有可无,为了省事完全省略也可以。一般最后一个ELSE语句后面不需要表达式?str(s,3)+不是素数ENDIFRETURN12、求一个班级每个学生的
6、平均成绩* 计算一个班级共三十名学生,每位学生5门功课的平均成绩CLEAR & 清屏DIMENSION x(30,5) & 定义一个数组变量,r为学生数,i为功课数r=1 & 给30个学生的计数变量r赋初值1DO WHILE r=30& 循环30次,以计算出30个学生的平均成绩s=0 & 为学生一门功课成绩赋初值0i=1 & 为五门功课计数变量赋初值1DO WHILE i=97 AND k=122 then & 97是小写字母a的ASC码值,122是小写字母z的ASC码值?x,的大写字母是,CHR(k-32) & 输出大写字母.chr函数是ASC码所对应的字符ELSEWAIT 您输入的不是小写
7、字母 WINDOW TIMEOUT 5cancelENDIFRETURN & 返回到调用程序15、找出最大数和最小数CLEARinput 请输入一个数: to xSTORE x TO ma,miFOR i=2 TO 10 &因为已经输入一个数X,所以循环次数只有9次input 请输入一个数: to xIF maxmi=xENDIFENDFOR?最大数是:,ma?最小数是:,miRETURN16、绝对值函数的实现* 绝对值函数的实现CLEARinput 请输入一个数值 to nIF n=0?nELSE?-nENDIFCANCEL17、绝对值函数实现的另一种方法* 绝对值函数和另一种实现方法CLE
8、ARinput 请输入一个数值 to n?IIF(n=0,n,-n)CANCEL18、输出成绩等级* 用DO CASE语句实现:CLEARinput 请输入一个成绩 to cjDO caseCASE cj=90 dj=优秀CASE cj=80 dj=良好CASE cj=60 dj=合格OTHERWISE dj=不合格ENDCASE?djRETURN*用IF语句实现:set talk offclearinput 请输入一个成绩: to sif s=90 grade=优秀 elseif s=80 grade=良好 elseif s=60 grade=及格 else grade=不及格endifen
9、difendif?ltrim(str(s)+分对应的等级是:+gradeset talk onreturn19、求一名学生的平均成绩* 求一个学生5门功课的平均成绩CLEARs=0i=1DO WHILE i=5input 请输入各门功课的成绩 to xs=s+xi=i+1ENDDO?s/520、用数组的方法,计算一个学生的平均成绩* 用数组保存一个学生五门功课的成绩,然后再计算机其平均成绩CLEARDIMENSION x(5)s=0i=1DO WHILE i0 s=1 CASE n=0 s=0 CASE n0s=1ELSEIF n=0s=0 ELSE IF n0s=1ENDIFIF n0s=-
10、1ENDIF?s24、打开数据库和数据表SET talk offCLEARaccept 请输入数据库名 to xOPEN DATABASE &xaccept 请输入数据表名 to yUSE &yLISTuseSET talk offreturn25、显示表中指定信息SET TALK OFFCLEAROPEN DATABASE 时代超越总公司职员信息数据库USE 职员基本信息表WAIT 请输入待查职工的编号(1-3) TO nIF VAL(n)3WAIT 输入无效,结束程序运行! WINDOW timeout 5RETURNELSESTORE 0+n TO aLIST for 职员编号=aEND
11、IFCLOSE DATABASESSET TALK ONreturn26、询问后再由用户按(Y/N)键执行的程序实现* 求任意一个数的阶乘CLEARDO WHILE .t.input 请输入一个数 to np=1s=0FOR i=1 TO np=p*is=s+pENDFOR?sWAIT 是否继续计算(Y/N) TO yn windowIF UPPER(yn)=Y THENLOOPELSEEXITENDIFENDDORETURN27、根据exact的设置进行字符串匹配比较* exact设置的变化对取值结果的影响SET exact ON & exact为打开状态,字符精确匹配s=in+SPACE(
12、2)IF s=inIF s=in?aELSE?bENDIFELSEIF s=in?cELSE?dENDIFENDIFRETURN28、使一个多位正整数逆序排列CLEARinput 请输入一个整数: to xDO WHILE x0y=x%10?yx=INT(x/10)ENDDORETURN29、按编号查找并列出一条记录set talk offclearaccept 请输入数据库名:家庭成员管理: to aopen databaseaccept 请输入数据表名:stu: to buselistwait 请输入一个编号: to c windows timeout 5if val(c)4wait 输入
13、的数字不合法,请重新输入一个合法的数字: to c windows timeout 5elsestore 0+c to aaalist for bh=aaaendifclose databaseset talk onreturn30、打开一个数据库,并显示其中的表内容set talk offclearaccept 请输入一个数据库名:家庭成员管理.dbc to xopen databaseaccept 请输入一个数据表名:stu.dbf to yuselistuseset talk onreturn31、验证密码程序:set talk offclearaccept 请输入密码: to aaai
14、f aaa=abcclearwait 欢迎使用本系统!elsewait 密码错误,程序将在5秒钟退出! windows timeout 5endifset talk onreturn32、编程求税金set talk offclearinput 请输入营业收入: to pdo casecase p800r=0case p=2000r=0.05case p=5000r=0.1endcasex=p*r?应纳税金为: , xset talk onreturn33、用三角形列出乘法口诀表:set talk offclearX=1DO WHILE X=9Y=1DO WHILE Y=XS=X*Y? STR(
15、Y,1)+*+STR(X,1)+=+STR(S,2)+ Y=Y+1ENDDO?X=X+1ENDDOSET TALK ONRETURN34、将变量A、B值互换:a=1b=2a=a+bb=a-ba=a-b?a,b35、找出已知三个数的中间数:INPUT 请输入a 的值: TO aINPUT 请输入b 的值: TO bINPUT 请输入c 的值: TO cIF MAX(a,b)c? MAX(a,b)ELSEIF MIN(a, b)c? cELSE? MIN(a,b)ENDIFENDIF36、调用子程序:* MAIN.PRGSET TALK OFF? ”正在执行主程序”DO SUB1SET TALK
16、ONProcedure SUB1? ”正在执行SUB1”RETURN37、用参数传递计算圆的面积:set talk offclearinput 请输入圆的半径 to rs=0&用参数传递计算必须给实际参数赋初值do arer with r,s&调用子程序,并指定实际参数r,s?圆的面积为:,sset talk on?procedure arer&被调用的子程序arerparameter x,y &指定的形式参数x,yy=3.14*x2returnset talk on38、我国古代数学家张丘建在“算经”里提出一个世界数学史上有名的百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁,母,雏各几何?*依题列出方程:x+y+z=1005x+3y+z/3=100set talk offclearfor x=1 to 100for y=1 to 100z=100-x-y if 5*x+3*y+z/3=100?鸡翁:+str(x,3)?鸡母:+str(y,3)?鸡雏:+str(z,3) endifendforendforset talk onreturn
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1