VFP试题解答

三、阅读程序题
1、执行下列程序,当输入A时,写出显示的结果。 ____________
Clear
Wait "请输入一个字符:" to A
Do Case
Case Islower(A) && 判别字串A是否以小写开头
?"Lower"
Case Isupper(A) && 判别字串A是否以大写开头
?"Upper"
Case A>='0' And A<="9"
?"Digit"
OtherWise
?"Other"
EndCase
2、执行下列程序,写出显示的结果。 ______________
Dimension A(20)
Store 1 To A(1), A(2)
For I=3 To 20
A(I)=A(I-1)+A(I-2)
Endfor
? A(10)
3、执行下列程序,写出显示的结果。
Store 10 To X, Y
Do While .T.
X=X+1
Do Case
Case Int(X/3)=X/3
Loop
Case X>=20
Exit
Otherwise
Y=Y+X
EndCase
Enddo
?X,Y
4、执行下列程序,写出显示的结果。
Store 0 to X,Y
Do Sub1
? X,Y,Z
Procedure Sub1
Private X
Local Y
Public Z
X=1
Y=2
Z=3
? X,Y,Z
Return
5、当输入数据80时,写出程序的输出结果。 ________________
Clear
Store 0 To X,Y
Do While X<10
If Mod(X,5)=0
Y=Y+X
Endif
X=X+1
Enddo
? X,Y
6、执行下列程序,写出显示的结果。 ________________
i=1
DO WHILE i<10
i=i+2
ENDDO
? i
7、设自由表 成绩(姓名 C 8,语文 I,数学 I,英语 I),窗体如下图所示:命令按钮“确定”的单击事件代码如下:
Select max(语文+数学+英语) as 最高分 from 成绩 where 姓名="张" into currsor lsb
Select lsb
Go 1
Thisform.text1.value=最高分
(1) 表格控件要显示学生成绩表中的数据,则应设置该控件的什么属性?
(2) 单击“确定”按钮后,文本框Text1中显示的内容是?
··最好能告诉我·为什么得到这个答案·

我的解释在你原句的〔 && Fox_Layman 解释:〕之后。
我的答案在每题的后面,原因又在答案的后面。

三、阅读程序题

1、执行下列程序,当输入A时,写出显示的结果。 ____________
Clear && Fox_Layman 解释:清屏
Wait "请输入一个字符:" to A && Fox_Layman 解释:Wait,为VFP命令,其作用是:显示信息并暂停 Visual FoxPro 的执行,按任意键或单击鼠标后继续执行。在这里的作用是等待输入,再将键盘输入或鼠标点击后的结果赋值给变量 A。
Do Case && Fox_Layman 解释:Do Case ... Endcase 是多路分支语句,是命令集合。作用是若条件满足其中的某一项(某一Case,且排名分先后),即执行该项(Case)下的表达式。
Case Islower(A) && 判别字串A是否以小写开头 && Fox_Layman 解释:有解释了...(Case 1)
?"Lower" && Fox_Layman 解释:输出结果〔Lower〕在屏幕上。
Case Isupper(A) && 判别字串A是否以大写开头 && Fox_Layman 解释:有解释了...(Case 2)
?"Upper" && Fox_Layman 解释:输出结果〔Upper〕在屏幕上。
Case A>='0' And A<="9" && Fox_Layman 解释:判断是否是数字零到九。(Case 3)
?"Digit" && Fox_Layman 解释:输出结果〔Digit〕在屏幕上。
OtherWise && Fox_Layman 解释:若以上条件都不能满号时,或曰以上各种条件以外的情况时,则...(Case 4)
?"Other" && Fox_Layman 解释:输出结果〔Other〕在屏幕上。
EndCase && Fox_Layman 解释:多路分支语句结束。
*** 本题结果:(屏显)Upper。因为题目有〔当输入A时〕,满足条件(Case 2)。

2、执行下列程序,写出显示的结果。 ______________
Dimension A(20) && Fox_Layman 解释:声明一个一维数组,并命名该数组名为:A,且指定其行数为:20。
Store 1 To A(1), A(2) && Fox_Layman 解释:将数字型数字 1 赋值给第一及第二个元素。
For I=3 To 20 && Fox_Layman 解释:循环,范围是从 3 到 20。
A(I)=A(I-1)+A(I-2) && Fox_Layman 解释:将前一个元素(I-1)的值,加上前面的前面的那个元素(I-2)的值,赋给当前元素。即:前两个元素之和等於当前元素。
Endfor && Fox_Layman 解释:循环结束。
? A(10) && Fox_Layman 解释:将第十个元素的值输出到屏幕。
*** 本题结果:(屏显)55。因为:
*** 第一个元素的值是:1,由语句〔Store 1 To A(1), A(2)〕产生;
*** 第二个元素的值是:1,由语句〔Store 1 To A(1), A(2)〕产生;
*** 第三个元素的值是:2,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第四个元素的值是:3,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第五个元素的值是:5,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第六个元素的值是:8,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第七个元素的值是:13,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第八个元素的值是:21,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第九个元素的值是:34,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 第十个元素的值是:55,由语句〔A(I)=A(I-1)+A(I-2)〕产生;
*** 所以屏显的内容是:55。
*** 看出来了没?这是一串斐波那契数列。

3、执行下列程序,写出显示的结果。
Store 10 To X, Y && Fox_Layman 解释:将数字型数字 10 分别赋值给变量 X 和 Y。
Do While .T. && Fox_Layman 解释:循环,条件是循环成立(为真),则一直循环下去。
X=X+1 && Fox_Layman 解释:将变量 X 加 1 之后再赋值给 X。
Do Case && Fox_Layman 解释:Do Case ... Endcase 是多路分支语句,是命令集合。作用参见我在第一题中的解释。
Case Int(X/3)=X/3 && Fox_Layman 解释:变量 X 除以 3 之后取整数的值,等於变量 X 除以 3 之后的值。(Case 1)
Loop && Fox_Layman 解释:若条件成立,则跳回到〔Do While .T.〕子句,而不去执行〔Loop〕到〔Enddo〕之间的任何语句。
Case X>=20 && Fox_Layman 解释:变量 X 大於等於 20 时。(Case 2)
Exit && Fox_Layman 解释:若条件成立,则跳出本循环。
Otherwise && Fox_Layman 解释:若以上条件都不能满号时,或曰以上各种条件以外的情况时,则...(Case 3)
Y=Y+X && Fox_Layman 解释:将变量 Y 与变量 X 之和赋值给变量 X。
EndCase && Fox_Layman 解释:多路分支语句结束。
Enddo && Fox_Layman 解释:循环结束。
?X, Y && Fox_Layman 解释:屏显变量 X 及变量 Y。(注意,要用半角的逗号哟,你在这里用的是全角的逗号)
*** 本题结果:(屏显) 20 100。因为:
*** 变量 X 及变量 Y 的初始值皆为 10,由语句〔Store 10 To X, Y〕产生;
*** 第一次循环时:变量 X 的值为 11,由语句〔X=X+1〕产生;变量 Y 的值为 11+10=21,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第二次循环时:变量 X 的值为 12,由语句〔X=X+1〕产生;变量 Y 的值仍为 21,因为条件(Case 1)得到了满足,〔Loop〕到〔Enddo〕之间的语句没有被执行;
*** 第三次循环时:变量 X 的值为 13,由语句〔X=X+1〕产生;变量 Y 的值为 13+21=34,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第四次循环时:变量 X 的值为 14,由语句〔X=X+1〕产生;变量 Y 的值为 14+33=48,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第五次循环时:变量 X 的值为 15,由语句〔X=X+1〕产生;变量 Y 的值仍为 48,因为条件(Case 1)得到了满足,〔Loop〕到〔Enddo〕之间的语句没有被执行;
*** 第六次循环时:变量 X 的值为 16,由语句〔X=X+1〕产生;变量 Y 的值为 16+48=64,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第七次循环时:变量 X 的值为 17,由语句〔X=X+1〕产生;变量 Y 的值为 17+64=81,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第八次循环时:变量 X 的值为 18,由语句〔X=X+1〕产生;变量 Y 的值仍为 81,因为条件(Case 1)得到了满足,〔Loop〕到〔Enddo〕之间的语句没有被执行;
*** 第九次循环时:变量 X 的值为 19,由语句〔X=X+1〕产生;变量 Y 的值为 19+81=100,由语句〔Y=Y+X〕产生,是因为不满足条件(Case 1)或(Case 2),那就只能是(Case 3);
*** 第十次循环时:变量 X 的值为 20,由语句〔X=X+1〕产生;变量 Y 的值仍为 100,因为条件(Case 2)得到了满足,循环已退出。
*** 所以屏幕显示的结果是:20, 100。

4、执行下列程序,写出显示的结果。
Store 0 to X,Y && Fox_Layman 解释:将数字型数字 0 分别赋值给变量 X 和 Y。
Do Sub1 && Fox_Layman 解释:调用一个名叫〔Sub1〕的过程。
? X,Y,Z && Fox_Layman 解释:屏显变量 X, Y, Z 的值。
Procedure Sub1 && Fox_Layman 解释:定义一个名叫〔Sub1〕的过程。
Private X && Fox_Layman 解释:声明变量 X 为私有变量。
Local Y && Fox_Layman 解释:声明变量 Y 为局部变量。
Public Z && Fox_Layman 解释:声明变量 Z 为全局变量。
X=1 && Fox_Layman 解释:将 1 赋给变量 X。
Y=2 && Fox_Layman 解释:将 2 赋给变量 Y。
Z=3 && Fox_Layman 解释:将 3 赋给变量 Z。
? X,Y,Z && Fox_Layman 解释:屏显变量 X, Y, Z 的值。
Return && Fox_Layman 解释:返回
*** 本题结果:
*** (第一行屏显) 1 2 3
*** (第二行屏显) 0 0 3
*** 因为:
*** 第一行屏显时,显示的内容为变量 X, Y, Z 在过程 Sub1 中的值,由语句 〔X=1〕、〔Y=2〕和〔Z=3〕得出;
*** 第二行屏显时,显示的内容为变量 X, Y, Z 在过程 Sub1 后的值,
*** 即: 变量 X 私有变量,它是在调用过程中,把原有的值〔0(零)〕藏了起来,用当前的值〔1〕来参与运行,过程调用完成后,该变量的值又还原成来的值〔0(零)〕,该类型变量的特点是;上下层过程皆不能调用当前值;
*** 变量 Y 局部变量,它是在调用过程中,把原有的值〔0(零)〕藏了起来,用当前的值〔2〕来参与运行,过程调用完成后,该变量的值又还原成来的值〔0(零)〕,该类型变量的特点是;上层过程不能调用当前值,但下层过程可以调用当前值;

5、当输入数据80时,写出程序的输出结果。 ________________
Clear && Fox_Layman 解释:清屏
Store 0 To X,Y && Fox_Layman 解释:将数字型数字 0 分别赋值给变量 X 和 Y。
Do While X<10 && Fox_Layman 解释:循环,若条件〔X<10〕成立(为真),则一直循环下去。
If Mod(X,5)=0 && Fox_Layman 解释:逻辑表达式,若变量 X 除 5 的余数为〔0(零)〕,即能整除,则...
Y=Y+X && Fox_Layman 解释:将变量 Y 与变量 X 之和赋值给变量 X。
Endif && Fox_Layman 解释:逻辑表达式结束。
X=X+1 && Fox_Layman 解释:将变量 X 加 1 之后再赋值给 X。
Enddo && Fox_Layman 解释:循环结束。
? X,Y && Fox_Layman 解释:屏显变量 X, Y 的值。
*** 本题结果:(屏显) 10 5。因为:
*** 变量 X 及变量 Y 的初始值皆为 0,由语句〔Store 0 To X, Y〕产生;
*** 第一次循环时:变量 X 的值为 1,由语句〔X=X+1〕产生;变量 Y 的值为〔0(零)〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第二次循环时:变量 X 的值为 2,由语句〔X=X+1〕产生;变量 Y 的值为〔0(零)〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第三次循环时:变量 X 的值为 3,由语句〔X=X+1〕产生;变量 Y 的值为〔0(零)〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第四次循环时:变量 X 的值为 4,由语句〔X=X+1〕产生;变量 Y 的值为〔0(零)〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第五次循环时:变量 X 的值为 5,由语句〔X=X+1〕产生;变量 Y 的值为〔0+5=5〕,由语句〔Y=Y+X〕产生,因为能够满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第六次循环时:变量 X 的值为 6,由语句〔X=X+1〕产生;变量 Y 的值仍为〔5〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第七次循环时:变量 X 的值为 7,由语句〔X=X+1〕产生;变量 Y 的值仍为〔5〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第八次循环时:变量 X 的值为 8,由语句〔X=X+1〕产生;变量 Y 的值仍为〔5〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第九次循环时:变量 X 的值为 9,由语句〔X=X+1〕产生;变量 Y 的值仍为〔5〕,因为不能满足逻辑表达式〔If Mod(X,5)=0〕;
*** 第十次循环时:变量 X 的值为 10,由语句〔X=X+1〕产生;变量 Y 的值仍为〔5〕,因为循环的条件是〔X<10〕,不能满足循环的条件,故循环已退出。
*** 所以屏幕显示的结果是:10, 5。
*** 另注:〔当输入数据80时〕这句无法实现,因为本程序中没有可供输入的语句,所以无法实现,是不是你哪里搞错了?

6、执行下列程序,写出显示的结果。 ________________
i=1 && Fox_Layman 解释:将变量 i 赋值 1。
DO WHILE i<10 && Fox_Layman 解释:循环,若条件〔i<10〕成立(为真),则一直循环下去。
i=i+2 && Fox_Layman 解释:将变量 i 加上 2 之后再赋值给变量 i 。
ENDDO && Fox_Layman 解释:循环结束。
? i && Fox_Layman 解释:屏显变量 i 的值。
*** 本题结果:(屏显) 11。因为:
*** 第一次循环时:变量 i 的值为 1+2=3,由语句〔i=i+2〕产生;现在是 i = 3,条件〔i<10〕成立,继续循环;
*** 第二次循环时:变量 X 的值为 3+2=5,由语句〔i=i+2〕产生;现在是 i = 5,条件〔i<10〕成立,继续循环;
*** 第三次循环时:变量 X 的值为 5+2=7,由语句〔i=i+2〕产生;现在是 i = 7,条件〔i<10〕成立,继续循环;
*** 第四次循环时:变量 X 的值为 7+2=9,由语句〔i=i+2〕产生;现在是 i = 9,条件〔i<10〕成立,继续循环;
*** 第五次循环时:变量 X 的值为 9+2=11,由语句〔i=i+2〕产生;现在是 i = 11,条件〔i<10〕不成立,结束循环。

7、设自由表 成绩(姓名 C 8,语文 I,数学 I,英语 I),窗体如下图所示:命令按钮“确定”的单击事件代码如下:
Select max(语文+数学+英语) as 最高分 from 成绩 where 姓名="张" into currsor lsb
Select lsb
Go 1
Thisform.text1.value=最高分
(1) 表格控件要显示学生成绩表中的数据,则应设置该控件的什么属性?
(2) 单击“确定”按钮后,文本框Text1中显示的内容是?

答案:没见到图,不好回答!
温馨提示:答案为网友推荐,仅供参考