第7章 程序设计基础Word文档格式.docx
- 文档编号:22620324
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:31
- 大小:62.15KB
第7章 程序设计基础Word文档格式.docx
《第7章 程序设计基础Word文档格式.docx》由会员分享,可在线阅读,更多相关《第7章 程序设计基础Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
DOWHILE<
LOOP
EXIT
ENDDO
(2)DOWHILE-ENDDO循环嵌套结构
DOWHILE<
ENDDO
(3)FOR-ENDFOR循环结构
FOR循环变量=<
初值>
TO<
终值>
[STEP<
步长>
命令序列>
[LOOP]
[EXIT]
ENDFOR
(4)SCAN-ENDSCAN循环结构
SCAN[<
范围>
][FOR<
ENDSCAN
(5)过程文件的建立
PROCEDURE<
子过程名>
RETURN
(6)打开过程文件
SETPROCEDURETO<
过程文件名1>
[,<
过程文件名2>
,…]
(7)关闭过程文件
CLOSEPROCEDURE
SETPROCEDURETO
(8)带参数的过程调用
WITH<
PARAMETERS<
接受参数表>
7.1.2基本操作
1.创建程序
在“新建”对话框上选择“程序”,单击“新建文件”按钮。
2.打开程序
在“打开”对话框中的“文件类型”下拉列表中选择“程序(*.qpr)”,然后选择或在“文件名”框中输入程序文件名,单击“确定”即可。
3.运行
在“程序”下拉菜单中,点击“运行”。
4.关闭程序
单击程序文件右上角的关闭按钮。
7.1.3相关命令
创建或修改程序:
MODIFYCOMMAND[<
程序文件名>
|?
运行程序:
7.2例题解析
7.2.1选择题
【例7-1】在XS.DBF中有30条记录,执行如下程序:
CLEAR
USEXS
GO10
LIST
?
RECNO()
则在窗口中显示的记录是。
A)10B)11C)30D)31
【答案】D
【解析】在程序中首先打开表XS.DBF,将记录指针指向第10条记录,命令LIST将显示全部记录,并将指针指向文件尾记录,这时的记录号为31。
【例7-2】设有如下程序:
A=50
B=100
DOWHILEB>
A
A=A+B
B=B+50
执行程序时,显示A的值为。
A)50B)150C)100D)200
【答案】B
【解析】在程序中,首先赋值给变量A、B为50、100,然后在DOWHILE-ENDDO循环中判断条件B是否大于A,执行循环体中的命令,这时变量A、B的值均为150,然后再判断条件B>
A是否为真,条件不为真,则执行循环体后面的命令,即显示变量A的值,所以正确答案为B。
【例7-3】设有如下程序:
A=“1000”
DOSUB
?
PROCEDURESUB
A=A+”100”
ENDPROC
执行程序时,显示的输出结果为。
A)1100B)1000C)1000100D)100100
【答案】C
【解析】程序首先将字符串“1000”赋值给变量A,然后调用过程SUB,在SUB过程中,将字符串“1000”与另一字符串“100”相连生成字符“1000100”,赋值给变量A并输出,因此答案为C。
【例7-4】在下列程序运行后,屏幕上显示的结果是。
STORE0TOX,Y
DOWHILEX<
10
X=X+Y
Y=Y+2
X,Y
A)106B)128C)108D)126
【解析】X与Y初始值分别为0,在循环中Y的值每次加2,分别为2,4和6等,而X=X+Y则表示Y的若干个值的累加,即0,2,6和12。
当X=12时,已不满足循环条件X<
10,退出循环,此时X=12,Y=8。
【例7-5】私有变量用命令来定义。
A)PROJECTB)PUBLICC)LOCALD)PRIVATE
【解析】PROJECT不是VisualFoxPro中的命令。
PUBLIC用来定义公共变量。
LOCAL用来定义局部变量。
PRIVATE用来定义私有变量。
7.2.2填空题
【例7-6】下列程序运行后的结果是。
A=1
B=2
DOWHILEA<
5
X=A*B
STR(A,1)+’*’+STR(B,1)+”=“+STR(X,2)
A=A+1
B=B+1
【答案】1*2=2
2*6=6
3*4=12
4*5=20
【解析】程序中循环变量A的初始值为1,循环体中每次加1,循环执行条件是A<
5,因此,循环次数为4次。
每次循环中计算A与B的乘积,语句?
STR(A,1)+’*’+STR(B,1)+”=“+STR(X,2)是为了显示形如1*2=2的输出格式。
【例7-7】下列程序执行后,X和Y的值分别为和。
STORE2TOX,Y
DOSUB1
PROCEDURESUB1
PRIVATEX
Y=5
X=Y+4
【答案】2、5
【解析】主程序中X和Y的值都为2,子程序SUB1中,变量X被定义为仅在子程序中有效,因此,其值的改变不影响主程序中X的值。
而变量Y在子程序中被赋值为5,其改变要影响到主程序,这样,在返回主程序时,X为调用之前的值2,而Y则为在子程序中被改变的值5。
【例7-8】用下列程序找出所有的水仙花数。
所谓水仙花数,是指这样一个三位数,其各位数字的立方和等于该数本身,如153=13+53+33,对以下程序填空完成该功能。
FORN=100TO999
A=INT(N/100)
B=
C=
IFN=A^3+B^3+C^3
N
ENDFOR
【答案】INT((N-100*A)/10)、N-INT(N/10)*10
【解析】用程序找出满足条件的数据,采用的是对指定范围内的所有数据一一进行判断的过程。
因此,该程序中循环变量从100~999表示要处理所有的三位数,在循环体中对每个数进行判断。
由于要使用到这个三位数中各位上的数字,因此在循环体中先将三位数N的每位上数字找出来,其中A=INT(N/100)找出的是百位数,B和C保存的分别是十位数和个位数,填空的内容就是从N中计算出十位和个位数,计算这两个值的表达式分别为INT((N-100*A)/10)和N-INT(N/10)*10。
7.2.3操作题
【例7-9】一个简单的求ax2+bx+c=0的方程的解程序。
【操作步骤】
1新建一程序文件equation.PRG,也可以使用命令来建立此程序,命令为:
MODIFYCOMMANDequation
2输入下列程序,如图7-1所示,按Ctrl+W保存。
a=2
b=1
c=-1
TEMP=b*b-4*a*c
X1=(-b+SQRT(TEMP))/(2*a)
X2=(-b-SQRT(TEMP))/(2*a)
?
x1,x2
图7-1求ax2+bx+c=0的方程的解程序
3运行该程序文件。
主窗口显示如下:
0.5000-1.000
【例7-10】用IF分支设计:
求ax2+bx+c=0的方程的解。
1设计表单
表单包含下列对象:
标签Label1~Label5用于信息提示;
文本框Text1、Text2、Text3分别用于输入a、b、c系数;
文本框Text4、Text5用于存放方程根X1和X2。
一个命令按钮Command1用于执行计算。
界面安排如图7-2所示。
图7-2计算一元二次方程根界面
2设置对象属性,如表7-1所示。
表7-1计算一元二次方程根对象属性
对象名
属性名
属性值
Form1
Label1
Label2
Label3
Label4
Label5
Caption
计算方程根
a=
b=
c=
X1=
X2=
Text1
Text2
Text3
Text4
Text5
Command1
Value
ReadOnly
.T.
计算
3算法分析
方程的根有以下几种可能:
●a=0,不是一元二次方程;
●b2-4ac=0,有两个相等的实根;
●b2-4ac>
0,有两个不相等的实根;
●b2-4ac<
0,没有实数根。
4编写代码
“计算”按钮(Command1)的Click事件代码:
a=Thisform.text1.value
b=Thisform.text2.value
c=Thisform.text3.value
drt=b*b-4*a*c
IFa!
=0.and.drt>
=0
x1=(-b+SQRT(drt))/(2*a)
x2=(-b-SQRT(drt))/(2*a)
Thisform.text4.value=x1
Thisform.text5.value=x2
Thisform.Refresh
IFa=0
Messagebox(“a不能为0!
”)
Messagebox(“没有实数解!
【例7-11】用CASE分支设计:
统计成绩分数段。
标签Label1~Label2用于信息提示;
文本框Text1用于输入成绩;
文本框Text2~Text6用于存放各分数段的统计结果;
一个命令按钮Command1用于执行统计,每输入一个成绩统计一次。
界面安排如图7-3所示。
图7-3成绩分段统计界面
②设置对象属性,如表7-2所示。
表7-2成绩分段统计象属性
Text6
成绩分段统计
请输入成绩
>
=9080-8970-7960-69<
60
确定
③编写代码
“计算”按钮(Command1)的Click事件代码
cj=Thisform.text1.value
IFcj<
0.or.cj>
100
Messagebox(“输入的成绩不正确!
CASEcj>
=90
Thisform.text2.value=Thisform.text2.value+1
=80.and.cj<
90
Thisform.text3.value=Thisform.text3.value+1
=70.and.cj<
80
Thisform.text4.value=Thisform.text4.value+1
=60.and.cj<
70
Thisform.text5.value=Thisform.text5.value+1
CASEcj<
Thisform.text6.value=Thisform.text6.value+1
【例7-12】用FOR循环与WHILE循环分别设计:
计算n的阶乘。
标签Label1、Label2用于信息提示;
文本框Text1用于输入n;
文本框Text2用于存放n!
的计算结果。
界面安排如图7-4所示。
图7-4计算n的阶乘界面
2设置对象属性,如表7-3所示。
表7-3计算n的阶乘对象属性
n=
n!
=
3编写代码
(1)FOR循环编写:
n=Thisform.text1.value
IFn<
RETURN
n1=1
FORi=1TOn
n1=n1*i
Thisform.text2.value=n1
(2)WHILE循环编写:
i=1
DOWHILEi<
=n
i=i+1
7.3习题
7.3.1选择题
1.VisualFoxPro程序文件的扩展名是。
A、.FXPB、.FOXC、.PRGD、.FRT
2.执行以下程序后,变量X的值为。
PUBLICX
X=5
DOSUB
X
PROCEDURESUB
PRIVATEX
X=10
A、5B、6C、7D、8
3.下列程序运行的结果是。
N=0
S=0
DOWHILEN<
N=N+1
IFINT(N/2)=N/2
S=S+N
”S=“,S
A、S=500B、S=2500C、S=1500D、S=2000
4.下列程序完成的功能是。
FORN=2TO100STEP2
A、1~100中奇数的和B、1~100中偶数的和
C、1~100中所有数的和D、无意义
5.已知英语字段当前值是90,以下程序段的执行结果是。
DOCASE
CASE英语<
INPUT‘请输出英语成绩等?
’TO英语
”成绩等级:
”+”不及格”
CASE英语>
=60
”+”及格”
=70
”+”中等”
CASE英语>
=80
”+”良好”
”+”优秀”
A、成绩等级:
及格B、成绩等级:
中等
C、成绩等级:
良好D、成绩等级:
优秀
6.执行以下程序段后,屏幕显示M的值是。
M=0
N=100
DOWHILEN>
M
M=M+N
N=N–10
M
A、0B、10C、99D、100
7.以下程序的运行结果是。
DIMENSIONA(2,3)
I=1
DOWHILEI<
=2
J=1
DOWHILEJ<
A(I,J)=I*J
?
A(I,J),””
J=J+1
I=I+1
RETURN
A、123B、12C、123D、123
12332249246
8.执行INPUT命令输入数据,要输入字符串时,可以使用的定界符是。
A、单引号、双引号或方括号B、单引号
C、单引号或双引号D、单引号、双引号、方括号或圆点
9.执行如下程序,如果输入N的值为5,则最后S的显示值是。
I=1
INPUT“N=?
”TON
DOWHILES<
=N
S=S+1
S
A、1B、3C、5D、6
10.在各选项中,与下面IF语句等效的是。
INPUT“X=?
”TOX
IFX>
Y=1
IFX=0
Y=0
Y=-1
IIF(X>
0,0,IIF(X>
0,1,-1))
7.3.2填空题
1.以下程序用来显示CJ表中英语及格的所有记录,在程序的填空。
USECJ
DOWHILE.NOT.EOF()
IF英语>
DISPLAY
USE
2.执行以下程序,屏幕上显示的是。
DOWHILE.T.
Y=Y+3
CASEINT(Y/5)*5=Y
CASEY>
OTHERWISE
X=X+Y
ENDCASE
”X=”+STR(X,2),”Y=”+STR(Y,2)
3.下列程序是求出100以内能被3整除但不能被7整除的数据之和,请在处填空。
STORE0TOS,N
=100
”S=”+STR(S)
4.执行以下程序,屏幕上显示的是。
STORE0TOY1,Y2
DOWHILEX>
1
IFSQRT(X)=3ORINT(X/2)=X/2
Y1=Y1+X
Y2=Y2+X
X=X-1
”Y1=”+STR(Y1,3),”Y2=”+STR(Y2,3)
5.以下程序是计算的,执行程序后,屏幕上显示的结果是。
X=X+1
Y=Y+X
”1~100的自然数之和”+STR(Y,4)
6.以下程序计算S=1+2+3+…+100,请在程序的处填空。
S=S+I
”S=”,S
7.以下程序逐条显示“学生”数据表中1990年出生的学生记录,请在程序的处填空,已知数据表有名为“出生日期”的日期型字段。
USE学生
LOCATEFOR
DOWHILE
DISP
WAIT
8.以下程序功能是从键盘输入两个正整数,求出其最大公约数并输出,请在程序的填空。
INPUT“X=”TOX
INPUT“Y=”TOY
IFX<
Y
T=X
X=Y
Y=T
T=X%Y
DOWHILE
“Y=”,Y
9.以下程序执行后,变量X的结果是。
FORI=1TO2
FORJ=1TO4
IFJ%2#0
10.以下程序执行后的结果是。
STORE0TOX,Y,S1,S2,S3
CASEINT(X/2)=X/2
S1=S1+X/2
CASEMOD(X,3)=0
S2=S2+X/3
CASEX%2#0
S3=S3+1
S1,S2,S3
11.以下程序计算1~100之间的所有奇数的平方和并显示出来,请在程序的处填空。
X=1
S
12.以下程序执行后的结果是。
FORI=1TO50
=10
IFX%2=1
X=X+5
X=X–3
13.以下程序在“XS”数据表中按姓名查找某条记录,请在程序的处填空。
ACCEPT“请输入学生姓名:
”TONAME
LOCATEALLFOR
IF
”查无此人?
”
附:
习题答案
1.C2.A3.B4.B5.D
6.D7.D8.A9.D10.D
1.SKIP
2.X=10、Y=8
3.IFN/3=INT(N/3)ANDN/7<
INT(N/7)、N=N+1
4.Y1=39、Y2=15
5.1~100的自然数之和、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 程序设计基础 程序设计 基础