VFP编程实例2.docx
《VFP编程实例2.docx》由会员分享,可在线阅读,更多相关《VFP编程实例2.docx(13页珍藏版)》请在冰豆网上搜索。
VFP编程实例2
VFP常见编程实例
1、1-100的累加
**求1到100的累加值
CLEAR
s=0
i=1
DOWHILEi<=100
s=s+i
i=i+1 &&一定记住先累加后循环
ENDDO
?
s
RETURN
2、阶乘
**求5的阶乘
CLEAR
j=1
i=1
DOWHILEi<=5
j=j*i
i=i+1
ENDDO
?
j
RETURN
3、求阶乘和
**求1至5的阶乘和
CLEAR
s=0
i=1
j=1
DOWHILEi<=5
j=j*i
s=s+j
i=i+1
ENDDO
?
s
RETURN
4、条件定位
**查询定位记录指针在赵伟上
CLEAR
USE学生
LOCATEFOR姓名="赵伟"
IFFOUND()
DISPLAY
ELSE
CANCEL
ENDIF
CONTINUE
5、用scan语句查询定位
**用scan语句查询定位记录在赵伟上
CLEAR
SCANFOR姓名="赵伟"
DISPLAY
ENDSCAN
RETURN
6、用scan语句扫描符合条件的记录,并显示出来
**把年龄小于30岁的人显示出来
CLEAR
SCANFOR年龄<30
DISPLAY
ENDSCAN
RETURN
7、查找男性职工
**查找男性职工
CLEAR
LOCATEFOR性别="男"
DOWHILEFOUND()
DISPLAY
CONTINUE
ENDDO
RETURN
**查找男性职工
CLEAR
LOCATEFOR性别="男"
DOWHILENOTEOF()
DISPLAY
CONTINUE
ENDDO
RETURN
**查找男性职工
CLEAR
USE职员基本信息表
LOCATEFOR性别="男"
DOWHILE.t.
IFFOUND()then
DISPLAY
ELSE &&记住最后一个ELSE语句后面不需要条件表达式
CANCEL
ENDIF
CONTINUE
ENDDO
**查找男性职工
settalkoff
clear
opendatabase家庭成员管理.dbc
usestu.dbf
scanfornoteof()
ifxb="女"
skip
else
display
skip
endif
endscan
closedatabase
use
settalkon
return
8、新值换旧值
**有一对新生的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?
clear
store1toa,b
i=3
dowhilei<=12
c=a+b
a=b
b=c
i=i+1
enddo
?
"一年共出生兔子:
",c
return
9、多位整数各个位数相加
**求多位整数各个位数之和
CLEAR
s=0
input"请输入一个多位整数:
"toa
DOWHILEa<>0
s=s+MOD(a,10) &&将a取余正好是个位上的数
a=INT(a/10) &&将a除10取整正好是除个位之后的数
ENDDO
?
"这个整数的各个位数之和是:
",s
RETURN
10、找100-999之间的“水仙花数”
CLEAR
FORi=100TO999
a=INT(i/100)
b=INT((i-100*a)/10)
c=i-INT(i/10)*10
IFi=a^3+b^3+c^3
?
i
ENDIF
ENDFOR
RETURN
11、判断一个大于3的数是否为素数
CLEAR
input"请输入一个数(>=3):
"tos
f=0
i=2
DOWHILEi<=INT(SQRT(s))
IFMOD(s,i)<>0
i=i+1
LOOP
ELSE
f=1
EXIT
ENDIF
ENDDO
IFf=0
?
str(s,3)+"是素数"
ELSEf=1 &&这个表达式可有可无,为了省事完全省略也可以。
一般最后一个ELSE语句后面不需要表达式
?
str(s,3)+"不是素数"
ENDIF
RETURN
12、求一个班级每个学生的平均成绩
**计算一个班级共三十名学生,每位学生5门功课的平均成绩
CLEAR &&清屏
DIMENSIONx(30,5) &&定义一个数组变量,r为学生数,i为功课数
r=1 &&给30个学生的计数变量r赋初值1
DOWHILEr<=30 &&循环30次,以计算出30个学生的平均成绩
s=0 &&为学生一门功课成绩赋初值0
i=1 &&为五门功课计数变量赋初值1
DOWHILEi<=5&&为一个学生的五门功课成绩累加5次
input"请输入学生的成绩"tox(r,i)
s=s+x(r,i) &&成绩累加
i=i+1 &&功课累加
ENDDO &&返回内循环
?
"这名学生的平均成绩是:
",s/5 &&显示平均成绩
r=r+1 &&学生累加
ENDDO &&返回外循环
13、计算圆的面积
*计算圆的面积程序
CLEAR
input"请输入半径的值"tor
input"请输入pi的值"to pi
s=pi*r^2
?
"圆的面积是",s
RETURN
14、将小写字母转换为大写字母
NOTE请将任意输入的一个小写字母转换成大写字母,也就是upper()函数的程序实现
CLEAR &&请屏
WAIT"请输入一个小写字母"tox &&交互式输入一个小写字母
k=ASC(x) &&将小写字母的ASC码赋值给变量K
IFk>=97ANDk<=122then &&97是小写字母a的ASC码值,122是小写字母z的ASC码值
?
x,"的大写字母是",CHR(k-32) &&输出大写字母.chr函数是ASC码所对应的字符
ELSE
WAIT"您输入的不是小写字母"WINDOWTIMEOUT5
cancel
ENDIF
RETURN &&返回到调用程序
15、找出最大数和最小数
CLEAR
input"请输入一个数:
"tox
STORExTOma,mi
FORi=2TO10 &&因为已经输入一个数X,所以循环次数只有9次
input"请输入一个数:
"tox
IFmama=x
ENDIF
IFmi>x
mi=x
ENDIF
ENDFOR
?
"最大数是:
",ma
?
"最小数是:
",mi
RETURN
16、绝对值函数的实现
**绝对值函数的实现
CLEAR
input"请输入一个数值"ton
IFn>=0
?
n
ELSE
?
-n
ENDIF
CANCEL
17、绝对值函数实现的另一种方法
**绝对值函数和另一种实现方法
CLEAR
input"请输入一个数值"ton
?
IIF(n>=0,n,-n)
CANCEL
18、输出成绩等级
**用DOCASE语句实现:
CLEAR
input"请输入一个成绩"tocj
DOcase
CASEcj>=90
dj="优秀"
CASEcj>=80
dj="良好"
CASEcj>=60
dj="合格"
OTHERWISE
dj="不合格"
ENDCASE
?
dj
RETURN
**用IF语句实现:
settalkoff
clear
input"请输入一个成绩:
"tos
ifs>=90
grade="优秀"
else
ifs>=80
grade="良好"
else
ifs>=60
grade="及格"
else
grade="不及格"
endif
endif
endif
?
ltrim(str(s))+"分对应的等级是:
"+grade
settalkon
return
19、求一名学生的平均成绩
**求一个学生5门功课的平均成绩
CLEAR
s=0
i=1
DOWHILEi<=5
input"请输入各门功课的成绩"tox
s=s+x
i=i+1
ENDDO
?
s/5
20、用数组的方法,计算一个学生的平均成绩
**用数组保存一个学生五门功课的成绩,然后再计算机其平均成绩
CLEAR
DIMENSIONx(5)
s=0
i=1
DOWHILEi<=5
input"请输入各门功课的成绩"tox(i)
s=s+x(i)
i=i+1
ENDDO
?
s/5
RETURN
21、用docase语句实现符号函数的功能
**请输入一个数,当这个数是负数,就返回-1,当这个数是零,就返回零,当这个数是正数,就返回1
CLEAR
input"请输入一个数"ton
DOCASE
CASEn>0
s=1
CASEn=0
s=0
CASEn<0
s=-1
ENDCASE
?
s
RETURN
22、用一般选择语句实现符号函数的功能
**符号函数的实现
CLEAR
input"请输入一个数"ton
IFn>0
s=1
ELSE
IFn=0
s=0
ELSE
IFn<0
s=-1
ENDIF
ENDIF
ENDIF
?
s
23、用简单选择语句实现符号函数功能
**符号函数的实现
CLEAR
input"请输入一个数"ton
IFn=0
s=0
ENDIF
IFn>0
s=1
ENDIF
IFn<0
s=-1
ENDIF
?
s
24、打开数据库和数据表
SETtalkoff
CLEAR
accept"请输入数据库名"tox
OPENDATABASE&x
accept"请输入数据表名"toy
USE&y
LIST
use
SETtalkoff
return
25、显示表中指定信息
SETTALKOFF
CLEAR
OPENDATABASE时代超越总公司职员信息数据库
USE职员基本信息表
WAIT"请输入待查职工的编号(1-3)"TOn
IFVAL(n)<1.or.VAL(n)>3
WAIT"输入无效,结束程序运行!
"WINDOWtimeout5
RETURN
ELSE
STORE"0"+nTOa
LISTfor"职员编号"=a
ENDIF
CLOSEDATABASES
SETTALKON
return
26、询问后再由用户按(Y/N)键执行的程序实现
**求任意一个数的阶乘
CLEAR
DOWHILE.t.
input"请输入一个数"ton
p=1
s=0
FORi=1TOn
p=p*i
s=s+p
ENDFOR
?
s
WAIT"是否继续计算(Y/N)"TOynwindow
IFUPPER(yn)="Y"THEN
LOOP
ELSE
EXIT
ENDIF
ENDDO
RETURN
27、根据exact的设置进行字符串匹配比较
**exact设置的变化对取值结果的影响
SETexactON &&exact为打开状态,字符精确匹配
s="in"+SPACE
(2)
IFs=="in"
IFs="in"
?
"a"
ELSE
?
"b"
ENDIF
ELSE
IFs="in"
?
"c"
ELSE
?
"d"
ENDIF
ENDIF
RETURN
28、使一个多位正整数逆序排列
CLEAR
input"请输入一个整数:
"tox
DOWHILEx>0
y=x%10
?
?
y
x=INT(x/10)
ENDDO
RETURN
29、按编号查找并列出一条记录
settalkoff
clear
accept"请输入数据库名:
家庭成员管理:
"toa
opendatabase
accept"请输入数据表名:
stu:
"tob
use
list
wait"请输入一个编号:
"tocwindowstimeout5
ifval(c)<=0orval(c)>4
wait"输入的数字不合法,请重新输入一个合法的数字:
"tocwindowstimeout5
else
store"0"+ctoaaa
listforbh=aaa
endif
closedatabase
settalkon
return
30、打开一个数据库,并显示其中的表内容
settalkoff
clear
accept"请输入一个数据库名:
家庭成员管理.dbc"tox
opendatabase
accept"请输入一个数据表名:
stu.dbf"toy
use
list
use
settalkon
return
31、验证密码程序:
settalkoff
clear
accept"请输入密码:
"toaaa
ifaaa="abc"
clear
wait"欢迎使用本系统!
"
else
wait"密码错误,程序将在5秒钟退出!
"windowstimeout5
endif
settalkon
return
32、编程求税金
settalkoff
clear
input"请输入营业收入:
"top
docase
casep<800
r=0
casep=<2000
r=0.05
casep<5000
r=0.08
casep>=5000
r=0.1
endcase
x=p*r
?
"应纳税金为:
",x
settalkon
return
33、用三角形列出乘法口诀表:
settalkoff
clear
X=1
DOWHILEX<=9
Y=1
DOWHILEY<=X
S=X*Y
?
?
STR(Y,1)+"*"+STR(X,1)+"="+STR(S,2)+""
Y=Y+1
ENDDO
?
X=X+1
ENDDO
SETTALKON
RETURN
34、将变量A、B值互换:
a=1
b=2
a=a+b
b=a-b
a=a-b
?
a,b
35、找出已知三个数的中间数:
INPUT"请输入a的值:
"TOa
INPUT"请输入b的值:
"TOb
INPUT"请输入c的值:
"TOc
IFMAX(a,b) ?
MAX(a,b)
ELSE
IFMIN(a,b) ?
c
ELSE
?
MIN(a,b)
ENDIF
ENDIF
36、调用子程序:
*MAIN.PRG
SETTALKOFF
?
”正在执行主程序”
DOSUB1
SETTALKON
ProcedureSUB1
?
”正在执行SUB1”
RETURN
37、用参数传递计算圆的面积:
settalkoff
clear
input"请输入圆的半径"tor
s=0 &&用参数传递计算必须给实际参数赋初值
doarerwithr,s &&调用子程序,并指定实际参数r,s
?
"圆的面积为:
",s
settalkon
?
procedurearer &&被调用的子程序arer
parameterx,y &&指定的形式参数x,y
y=3.14*x^2
return
settalkon
38、我国古代数学家张丘建在“算经”里提出一个世界数学史上有名的百
鸡问题:
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买
百鸡,问鸡翁,母,雏各几何?
**依题列出方程:
x+y+z=100
5x+3y+z/3=100
settalkoff
clear
forx=1to100
fory=1to100
z=100-x-y
if5*x+3*y+z/3=100
?
"鸡翁:
"+str(x,3)
?
"鸡母:
"+str(y,3)
?
"鸡雏:
"+str(z,3)
endif
endfor
endfor
settalkon
return