vf重点复习的程序.docx
- 文档编号:12794560
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:18
- 大小:149.61KB
vf重点复习的程序.docx
《vf重点复习的程序.docx》由会员分享,可在线阅读,更多相关《vf重点复习的程序.docx(18页珍藏版)》请在冰豆网上搜索。
vf重点复习的程序
一.面向过程的程序设计举例
理解掌握类似下列程序的算法,代码仅供参考,按其他算法编写的,只要运行正确,都是正确的程序。
1.输入三个数,按从大到小的顺序排列输出。
clear
input"请输入第一个数:
"tox
input"请输入第二个数:
"toy
input"请输入第三个数:
"toz
a=max(x,y,z)
c=min(x,y,z)
b=x+y+z-a-c
?
'由大到小的顺序为:
',a,b,c
2.输入一个字符串,分别统计其中字母字符、数字字符和其他字符的个数。
Clear
ACCEPT"请输入字符串:
"tocr
k=len(cr)&&求出字符串cr的长度(即字符个数)赋给变量k
STORE0toa,b,c&&a,b,c分别放三种字符的个数,赋初值0
FORi=1tok
z=substr(cr,i,1)&&取出第i个字符
DOcase
CASEupper(z)>="A"andupper(z)<="Z"
a=a+1
CASEz>='0'andz<='9'
b=b+1
OTHERWISE
c=c+1
ENDCASE
ENDFOR
?
'字母字符的个数是:
',a
?
'数字字符的个数是:
',b
?
'其他字符的个数是:
',c
3.输入一个百分制成绩,将其转换成“优秀”、“良好”、“中等”、“及格”和“不及格”五级计分制评定,如果输入的百分制成绩不在0-100之间,则提示输入错误并结束程序。
clear
input"输入百分制成绩:
"tocj
ifcj<0orcj>100
messagebox("输入错误!
只能输入0-100之间的数。
")
cancel
endif
docase
casecj>=90
?
"优秀"
casecj>=80
?
"良好"
casecj>=70
?
"中等"
casecj>=60
?
"及格"
casecj<60
?
"不及格"
endcase
4.设有一张足够大的厚度为0.1毫米的纸,问至少对折多少次可达到(或超过)珠穆朗玛峰的高度(8848.13米)。
Clear
N=0
h=0.1&&纸的初始高度
DOwhileh<8848130
h=h*2&&对折一次后,高度为原来的两倍。
n=n+1&&对折次数累加1
ENDDO
?
n
5.找出100-999之间的所有水仙花数(如果一个三位数是其各位数字的立方和则称此数为水仙花数)。
clear
?
"100~999之间的水仙花数为:
"
FORi=100To999&&i代表100到999的整数。
a=i%10&&取三位数中的个位数字放变量a中。
b=int(i/10)%10&&取三位数中的十位数字放变量b中。
c=int(i/100)&&取三位数中的百位数字放变量c中。
IFi=a^3+b^3+c^3&&如果满足水仙花数条件则输出
?
i
ENDIF
ENDFOR
6.找出0-999之间的所有同构数(如果一个数出现在其平方数的右端,则称此数为同构数)。
例如:
5是同构数,因为5在25的右端。
提示:
一个一位数x是同构数的条件为:
x=x^2%10,一个两位数x是同构数的条件为:
x=x^2%100,依次类推。
clear
?
"1-999之间的同构数为:
"
forn=1to999
k1=iif(n=n^2%10,.t.,.f.)&&如果一位数是同构数iif函数返回.t.,否则返回.f.
k2=iif(n=n^2%100,.t.,.f.)&&如果两位数是同构数iif函数返回.t.,否则返回.f.
ifk1ork2
?
n
endif
endfor
7.随机生成100个1-1000之间的整数,求其中的最大值、最小值。
Clear
dimensiona(100)&&定义一个有100个元素的数组a
FORi=1to100&&该循环随机生成100个1-1000之间的整数存入数组
a(i)=int(1000*rand()+1)
ENDFOR
zd=a
(1)&&设变量zd放最大数,初始值赋为第一个元素
zx=a
(1)&&设变量zx放最小数,初始值赋为第一个元素
FORi=2to100&&该循环找数组中的最大数和最小数
IFa(i)>zd
zd=a(i)
ENDIF
IFa(i) zx=a(i) ENDIF ENDFOR ? "最大值是: ",zd ? "最小值是: ",zx 8.输入一个大于2的整数,判断其是否为素数。 clear INPUT'输入一个大于2的整数: 'tom k=0&&设变量k为能整除m的数的个数 FORi=2Tom-1&&该循环判断2到m-1之间的自然数能否整除m IFm%i=0&&如果当前i能整除m k=k+1&&k累加1 ENDIF ENDFOR IFk=0 ? "是素数" ELSE ? "不是素数" ENDIF 二.面向对象的程序设计(表单设计)举例 认真研究下列几个表单的设计,设计过程仅供参考,只要运行符合要求,结果正确,都是正确的设计。 注意按表单设计的步骤写: 1)数据环境2)添加的对象3)属性的设置4)事件代码 1.设计如下表单,要求: ①在前两个文本框中输入两个小于10000的整数,②单击相应的命令按钮进行两个数的加减乘除运算,运算结果显示在第三个文本框中,计算结果不能修改;③单击“退出”命令按钮结束表单运行。 设计过程: 新建表单t1.scx 1)添加的对象: 三个标签: label1、label2、label3; 三个文本框: text1、text2、text3; 五个命令按钮: command1、command2、command3、command4、command5。 2)属性设置: 三个标签的caption属性分别设为: “操作数1”、“操作数2”、“计算结果”; 三个文本框的value属性设为0(或设为数值型),Text1和text2的inputmask属性设为9999,text3的readonly属性设为.t. 五个命令按钮的caption属性分别设为“+”、“-”、“×”、“÷”、“退出”。 3)事件代码: ①“+”命令按钮的click事件代码: thisform.text3.value=thisform.text1.value+thisform.text2.value ②“-”命令按钮的click事件代码: thisform.text3.value=thisform.text1.value-thisform.text2.value ③“×”命令按钮的click事件代码: thisform.text3.value=thisform.text1.value*thisform.text2.value ④“÷”命令按钮的click事件代码: thisform.text3.value=thisform.text1.value/thisform.text2.value ⑤“退出”命令按钮的click事件代码: Thisform.release 2.输入圆的半径,求周长和面积。 要求: ①半径文本框输入的数为0-999之间的整数;②单击“计算”命令按钮计算周长和面积显示在相应文本框中,周长和面积的值不能修改;③单击“清空”命令按钮清空所有文本框中的值并将光标停在半径文本框中; ④单击“退出”命令按钮结束表单的运行。 设计过程: 新建表单t2.scx 1)添加的对象: 三个标签: label1、label2、label3; 三个文本框: text1、text2、text3; 三个命令按钮: command1、command2、command3。 2)属性设置: 三个标签的caption属性分别设为: “半径: ”、“周长: ”、“面积: ”; 文本框text1的inputmask属性设为999,Text2和text3的readonly属性设为.t.;. 三个命令按钮的caption属性分别设为“计算”、“清空”、“退出”。 3)事件代码: ①“计算”命令按钮的click事件代码: thisform.text2.value=val(thisform.text1.value)*2*pi() thisform.text3.value=val(thisform.text1.value)^2*pi() ②“清空”命令按钮的click事件代码: thisform.text1.value='' thisform.text2.value='' thisform.text3.value='' thisform.text1.setfocus ③“退出”命令按钮的click事件代码: Thisform.release 3.设计如下倒计时表单。 要求: ①在微调器中设置倒计时秒数,单击“开始”按钮开始按秒倒计时,剩下的秒数显示在微调器中,计时结束(微调器的值为0)时使用消息框提示用户“时间到! ”;②单击“退出”命令按钮结束表单运行。 设计过程: 新建表单t3.scx 1)添加的对象: 一个标签: label1; 一个微调器: spinner1; 一个时钟: timer1; 两个命令按钮: command1、command2 2)属性设置: 标签的label1的caption属性分别设为: “设置倒计时秒数”; 微调器spinner1的spinnerlowvalue属性和keyboardlowvalue属性分别设为0; 两个命令按钮的caption属性分别设为“开始计时”、“退出”。 3)事件代码: ①“开始计时”命令按钮的click事件代码: thisform.timer1.interval=1000 ②时钟的timmer事件代码: ifthisform.spinner1.value=0 thisform.timer1.interval=0 messagebox("时间到! ") else thisform.spinner1.value=thisform.spinner1.value-1 thisform.refresh endif ③“退出”命令按钮的click事件代码: Thisform.release 4.设计如下表单模拟交通灯,微调器中的值为每种颜色的灯亮的秒数,运行时通过修改微调器的值控制各色灯亮的时间,要求三种颜色的灯循环亮。 红色值函数: RGB(255,0,0),绿色值函数: RGB(0,255,0),黄色值函数: RGB(0,0,255),灰色表示不亮用函数: RGB(240,240,240)。 设计过程: 新建表单t4.scx 1)添加的对象: 一个容器: container1; 在容器中添加三个形状: shape1、shape2、shape3; 一个时钟: timer1; 三个标签: label1、labe2、labe3 三个微调器: spinner1、spinner2、spinner3 2)属性设置: 三个形状的曲率属性curvature设为90; 三个标签的caption属性分别设为: “红”、“绿”、“黄”; 三个微调器的value属性设为1,spinnerlowvalue属性和keyboardlowvalue属性分别设为1; 时钟的interval属性设为1000。 3)事件代码: ①表单的init事件代码: PUBLICi i=1&&i的初始值赋为1表示开始红灯亮 ②时钟的timmer事件代码: DOcase CASEi=1&&红灯亮 thisform.Timer1.Interval=thisform.spinner1.value*1000 thisform.container1.shape1.backcolor=rgb(255,0,0) thisform.container1.shape2.backcolor=rgb(240,240,240) thisform.container1.shape3.backcolor=rgb(240,240,240) i=2 CASEi=2&&绿灯亮 thisform.Timer1.Interval=thisform.spinner2.value*1000 thisform.container1.shape2.backcolor=rgb(0,255,0) thisform.container1.shape1.backcolor=rgb(240,240,240) thisform.container1.shape3.backcolor=rgb(240,240,240) i=3 CASEi=3&&黄灯亮 thisform.Timer1.Interval=thisform.spinner3.value*1000 thisform.container1.shape3.backcolor=rgb(255,255,0) thisform.container1.shape1.backcolor=rgb(240,240,240) thisform.container1.shape2.backcolor=rgb(240,240,240) i=1 ENDCASE 5.设计下列表单,要求: ①使用组合框列出所有课程名(不重复),②在组合框中选中某门课(只能选择不能输入),单击“查询”命令按钮,则在表格中列出选该课的学生的学号、姓名和成绩;③单击“退出”按钮结束表单的运行。 设计过程: 新建表单t5.scx 1)设置数据环境: 将课程表添加到数据环境中。 2)添加的对象: 一个标签: label1; 一个组合框: combo1; 一个表格: grid1; 两个命令按钮: command1、command2。 3)属性设置: 标签的label1的caption属性分别设为: “选择课程名: ”; 组合框combo1的style属性设为2,rowsourcetype属性设为字段,rowsource属性设为课程.课程名; 两个命令按钮的caption属性分别设为“查询”、“退出”。 4)事件代码: ①“查询”命令按钮的click事件代码: select学生.学号,姓名,成绩from学生,课程,选课; where学生.学号=选课.学号and课程.课程号=选课.课程号; and课程.课程名=bo1.value; intodbfaa thisform.grid1.recordsourcetype=0 thisform.grid1.recordsource='aa.dbf' ②“退出”命令按钮的click事件代码: Thisform.release 6.设计如下表单,要求: ①在组合框列出不重复的系名,②在组合框中选中某一系后(只能选择不能输入),单击选项按钮完成相应的查询,查询结果显示在浏览窗口;③单击“退出”命令按钮结束表单运行。 设计过程: 新建表单t6.scx 1)添加的对象: 一个标签: label1; 一个组合框: combo1; 一个选项按钮组: optiongroup1; 一个命令按钮: command11。 2)属性设置: 标签的label1的caption属性分别设为: “选择课程名: ”; 组合框combo1的style属性设为2,rowsourcetype属性设为“SQL语句”,rowsource属性设为“selectdistinct所在系from学生intocursortb”; 选项按钮组的buttoncount属性设为3,即包含三个选项按钮option1、option2、option3,这三个选项按钮的caption属性分别设为: “查询该系学生信息”、“查询该系各门课的平均分”、“查询该系各门课的最高分”; 命令按钮的caption属性分别设为“退出”。 3)事件代码: ①选项按钮option1的click事件代码: select*from学生where所在系=bo1.value ②选项按钮option2的click事件代码: SELECT课程.课程名,AVG(选课.成绩)as平均成绩; FROM学生,选课,课程; WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号; AND所在系=bo1.value; GROUPBY课程.课程名 ③选项按钮option3的click事件代码: SELECT课程.课程名,MAX(选课.成绩)as最高成绩; FROM学生,选课,课程; WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号; AND所在系=bo1.value; GROUPBY课程.课程名 ④“退出”命令按钮的click事件代码: Thisform.release 7.设计下列表单,求S=1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 要求: ①n由微调器输入或设置,最小值为1,初始值为1,列表框中初始显示第一项;②单击“开始”按钮将前n项显示在列表框中,数列和显示在只读文本框中,③单击“退出”命令按钮结束表单运行。 设计过程: 新建表单t7.scx 1)添加的对象: 三个标签: label1、label2、label3 一个微调器: spinner1 一个列表框: list1 一个文本框: text1 两个命令按钮: command1、command2 2)属性设置: 三个标签的caption属性分别设为: “设置该数列要求的项数”、“该数列为: ”、“数列和”; 微调器的value属性设为1,spinnerlowvalue属性和keyboardlowvalue属性分别设为1; 文本框的readonly属性设为.t. 3)事件代码: ①表单的init事件代码: THISFORM.list1.additem(str (1))&&初始状态显示第一项 THISFORM.text1.value=(str (1)) ②“开始”命令按钮的click事件代码: THISFORM.list1.clear&&列表框调用clear方法可清空列表框 s=0&&变量s放数列和 n=thisform.spinner1.value declarea(n)&&定义有n个元素的数组放数列的项 docase casen=1&&只显示一项的情况 THISFORM.list1.additem(str (1)) s=1 otherwise&&显示多项的情况 THISFORM.list1.additem(str (1)) s=1 a (1)=1 FORi=2Ton a(i)=a(i-1)+i&&第i项由第(i-1)项加i求得 THISFORM.list1.additem(str(a(i)))&&将第i项添加到列表框中 s=s+a(i) ENDFOR endcase thisform.text1.value=str(s)&&将数列和显示在文本框中 ③“退出”命令按钮的click事件代码: Thisform.release 8.设计下列表单,求裴波那契数列前N项。 要求: ①N的值用微调器设置,最小值为1,初始值为2,列表框初始显示前两项;②单击“显示”按钮,在列表框中显示前N项;③单击“退出”按钮结束表单的运行。 该数列的第一项和第二项分别是1、1,从第三项开始每一项是其前两项的和。 即: 1,1,2,3,5,8,13,21,34,…. 设计过程: 新建表单t8.scx 1)添加的对象: 一个标签: label1 一个微调器: spinner1 一个列表框: list1 两个命令按钮: command1、command2 2)属性设置: 标签的caption属性分别设为: “设置数列要求的项数”; 微调器的spinnerlowvalue属性和keyboardlowvalue属性分别设为1; 3)事件代码: ①表单的init事件代码: THISFORM.spinner1.value=2 THISFORM.list1.additem(str (1)) THISFORM.list1.additem(str (1)) ②“显示”命令按钮的click事件代码: THISFORM.list1.clear n=thisform.spinner1.value declarea(n)&&定义有n个元素的数组 docase casen=1&&只显示第一项的情况 THISFORM.list1.additem(str (1)) casen=2&&只显示前两项的情况 THISFORM.list1.additem(str (1)) THISFORM.list1.additem(str (1)) Otherwise&&显示多于两项的情况 THISFORM.list1.additem(str (1)) THISFORM.list1.additem(str (1)) a (1)=1 a (2)=1 FORi=3Ton a(i)=a(i-1)+a(i-2) THISFORM.list1.additem(str(a(i))) ENDFOR endcase ③“退出”命令按钮的click事件代码: Thisform.release
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vf 重点 复习 程序