重庆二级 - vfp计算机二级笔试复习资料 联系客服

发布时间 : 星期一 文章重庆二级 - vfp计算机二级笔试复习资料更新完毕开始阅读b3533ad0bb4cf7ec4afed070

STORE STR (VAL(i)-1,1) TO i ? a&i

SET TALK ON RETURN

问?a&i的结果是__64__

☆☆12、以下程序实现功能:统计数据表name99中,字段“编号”(数值型)为奇数的“库存量”之和。请填空完

成。

Set talk off

X=0 &&库存量的和值 use name99 do while .not. eof( )

if 编号/2〈〉_int(编号/2)__ _ x=x+库存量 endif

__skip___ enddo

?“编号为奇数的库存量为:”,x

Use

☆13、函数equal(m,ms)进行缩略检索,如m=”重庆市教育委员会”,ms=”教委”,若检索到则为.T.,否则为.F. FUNC equal

Para m,ms K=len(allt(ms))/2 For n=1 to k

B=subs(ms,n*2-1,2) If !(B $ M) Exit Endi Endf If n<=k

Retu .F. Else

Retu .T. Endi 14、表单文本框1输入整数N,求其阶乘存放在文本框2中显示,在文本框1的Valid Event代码为: N=this.value T=1

For k=1 to N T=T*k Endf

Thisform.text2.value=T

16、下面程序功能是将具有n个元素的一维数组的元素按逆序重新存放。

Clea

Input “n=” to n Dime a(n) For i=1 to n

Input “请输入第”+str(I,3)+”数:” to a(i)

Next

? “调整前:” For i=1 to n ?? a(I)

Next

M=_int(n/2)_ For i=1 to m Temp=a(i) A(i)=a(n-i+1) a(n-i+1)=temp

next

? “调整后:” For i=1 to n ?? a(i) Next canc

(六)、阅读程序:(数学题、数据表操作、子程序(参数传递、变量作用域)、面向对象程序(如表单)) (1)执行如下命令序列:

STORE 100 TO YA STORE 200 TO YB STORE 300 TO YAB STORE “A” TO N STORE “Y&N” TO M

33

?&M

最后一条命令的显示值应是( )

(A) 100 (B)200 (C)300 (D)Y&M (2)有程序段如下:

STORE 0 TO X,Y DO WHILE .T. X=X+1 Y=Y+X IF X>=100 EXIT ENDIF ENDDO

?”Y=”+STR(Y,3)

这个程序是计算_1到100的累加和__的,执行后的结果是_Y=***_ ☆☆(5)、读程序,写出程序运行结果(本题参数传递(注:地址传递时,实参变量被隐藏)与变量作用域同时都用上) *SUB2.PRG *SUB1.PRG *MAIN.PRG PRIV A1,B1 &&对SUB1 SET TALK OFF PARA A1,B1 &&隐藏主程序中对 CLEA &&中的A1和B1隐藏 &&应的变量A和B A=1 A1=4 B1=10*B1 B=2 B1=5 A1=A1*2 C1=9+A1+B1 C=3 C1=A1*B1 ? A1,B1,C1 DO SUB2 DO SUB1 WITH A,B RETU ? A,B,C ? A1,B1,C1 RETU RETU 该程序的运行结果为: 4 5 18 2 20 18 2 20 3

☆(6)阅读下列程序段,写出正确的结果 (注:DO CASE 多分支中前面成立执行后,即使后面还有成立也不执行)

SET TALK OFF CLEAR 运行结果: STORE 0 TO a,b,n

n=3 b=48 f=.T.

DO WHILE f a=a+1 DO CASE

CASE INT(a/3)<>a/3 (7)程序为:SET TALK OFF b=b+a CLEAR CASE a>10 USE GRADE EXIT S=0 CASE a<=10 SCAN n=n+1 IF 性别=“女” ENDCASE SKIP END DO LOOP ?n,b ENDI SET TALKON ? 学号,姓名,成绩 RETURN S=S+成绩 (7)、数据库文件GRADE.DBFDD的内容如下∶ ENDSCAN Record# 学号 姓名 成绩 性别 ? S

USE 1 98104 张三 78 男

SET TALK ON 2 98102 李四 90 女

RETURN

3 98101 王五 82 男 4 98103 周六 64 女

运行结果: 5 98105 郑七 85 女

98104 张三 78 写出执行以下程序的运行结果∶

78 ☆(8)、读程序,写结果 (&&自定义函数调用)

MAIN.PRG 有一个自定义函数AA.PRG如下: SET TALK OFF PARAMETER x,y a=\ SET TALK OFF b=\ f=x-y ? AA(a,b) RETURN f SET TALK ON RETURN

执行下列程序的结果是ABCD14

☆(10).读下面的关于参数传递问题的程序,分析程序的写出运行结果,然后上机执行观察结果,思考为什么第一次求面积的长和宽要在调用QMJ 的过程前输出,而第二次求面积的长和宽却可以在调用QMJ的过程后输出呢

34

*PROG7-7.PRG *QMJ.PRG CLEAR PARAMETERS X,Y,A L=8

A=X*Y W=10 该程序的运行结果为: X=X+8 面积=0 矩形的长为:8 Y=Y+10 ?”矩形的长为:”,L 矩形的宽为:10 ?”矩形的宽为:”,W RETURN 矩形的面积为:80 DO QMJ WITH L,W,面积

矩形的长为:16 ?”矩形的面积为:”,面积

DO QMJ WITH (L),(W),面积 矩形的宽为:20 ?”矩形的长为:”,L 矩形的面积为:320 ?”矩形的宽为:”,W

?”矩形的面积为:”,面积 CANCEL

第一次求面积的长和宽要在调用QMJ 的过程前输出是因为调用时,是将存放长和宽变量的地址传递(注:地址传递时,实参变量被隐藏,即长和宽变量被隐藏)给子程序的形式变量x和Y,在子程序中对X和Y的修改,实际就是对实参变量长和宽的修改,当子程序返回时主程序中的长和宽变量就间接地修改了。

第二次求面积的长和宽却可以在调用QMJ的过程后输出是因为调用时,是将表达式长和宽的值传给了子程序对应的形式变量,子程序对形式变量的修改,它不影响主程序中的长的宽变量的值,当子程序返回时形式变量释放,主程序中的长和宽保持不变。

11).有两个表文件:任课教师表JSB.DBF和工资表GZB.DBF以及相应的处理程序如下。请写出程序运行的结果 JSB.DBF的内容如下:

编号 姓名 担任课程 外聘 X0233 吴东 计算机 .F. X0335 刘柳 大学英语 .T. 运行结果: Y0255 赵义 高等数学 .T.

赵义 800 400 Y0288 袁圆 大学语文 . F.

GZB.DBF的内容如下: 刘柳 1000 480 编号 基本工资 奖金

X0233 1000 500 Y0255 800 400 Y0288 1200 450 X0335 1000 480 程序如下: CLEAR SELE 1 USE JSB

INDE ON 编号 TAG BH SELE 2 USE GZB

SET RELATION TO 编号 INTO JSB

LIST OFF FIEL JSB.姓名,基本工资,奖金 FOR JSB.外聘 CLOSE DATABASE RETURN

☆12)、已知工资数据表(GZ.DBF)内容如下: 姓名 基本工资 奖金 扣款 实发工资 王刚 723 1000 335 李丽 650 800 210 王承志 820 1200 276 程川王 690 900 210 写出以下程序的运行结果: USE GZ S=0 N=0

DO WHILE .NOT.EOF()

该程序的运行结果为: IF .NOT. \王\姓名

SKIP 1307 LOOP ELSE

N=N+1

S= S + 奖金 + 扣款 SKIP ENDIF ENDDO ?S/N RETURN

☆13、如图所示一程序界面。文本框TEXT1已经输入一串文字,单击“转换”命令按钮后,文本框的值将变为什么?

“转换”命令按钮的Click事件代码:

N=LEN(THISFORM.TEXT1.VALUE) Y=??

DO WHILE N>0

35

X=SUBSTR(THISFORM.TEXT1.VALUE , N , 1) IF ASC(X)>=ASC(“a”) X=UPPER(X) 运行结果: ELSE

tHIS IS A cpu X=LOWER(X)

ENDIF

Y=X+Y &&若此行改为y=y+X ,则实现反序输出,即upc A IS SIHt N=N-1 ENDDO

THISFORM.TEXT1.VALUE=Y

14、有一表单程序的运行界面如下图所示。

以下是其文本框控件的Valid事件代码。程序运行后,在文本框输入“45673”。请写出程序运行结果(文本框的新值)

x=val(thisform.text1.value) y=100

do while x>0 运行结果: y=y+x

125 x=int(x/10)

enddo

thisform.text1.value=str(y) 15、设有数据表ST.DBF的结构内容如下:

记录号 学号(C) 性别(C) 成绩(N) 1 001 男 86 2 122 女 62 3 225 男 58 4 220 女 79 5 010 女 89

设计如图2所示表单,将ST.DBF添加到表单的数据环境中,表单运行中,单击命令按钮“Command1”,标签Label1将显示什么?

Command1控件的Click事件代码: X=1 cj=成绩 scan

if 成绩>cj cj=成绩 x=recno( ) endif endscan go x 运行结果: thisform.refresh 010 女 89 z=学号+space(2)+性别+space(2)+allt(str(成绩)) thisform.label1.caption=z

(七)、程序题设计(选择类(数学模型为分段函数)、循环类(1.数学表达式、2.数的整除、3. 素数问题、4. 拆数问题、5. 其他问题、6.字符串处理、7.数组、8.数据表更新、册除、查询类、分类统计、排序输出、统计报表)此题不仅变成程序填空、程序阅读,也可变成表单设计,也可结构化程序设计。 <一>选择类程序设计(数学模型为分段函数) 输入一元二次方程的三个数,求其解1、 3 无穷解,当a、b、c都为02 输入一串字符,求字母、数字、空格和 1 输入月份,求其季节其他字符的个数。(表单)无解,当a、b为0,c≠0冬季,当Month=12,1,2 字母计数器增1,当取出为字母季春季,当Month=3,4,5唯一解,当a=0、b ≠0 数字计数器增1,当取出为数字节=夏季,当Month=6,7,8空格计数器增1,当取出为空格

两个不等实数解,当a ≠0、D >0秋季,当Month=9,10,11 其他计数器增1,当取出为其他 两个相等实数解,当a ≠0、D =0

(2)题样例:表单text1中输入字符串,统计字母、数字、其他字符 两个复数解,当a ≠0、D<0 和总的个数。 Text1控件lostfocus event: x=alltrim(this.value) &&alltrim()不能少,否则出错!!!! b=len(x) a1=0 d1=0 o1=0

for i=1 to b

ch=subs(x,i,1)

do case &&下式与此等价uppe(ch)>= 'A' and uppe(ch)<='Z' case (ch>='A' and ch<='Z') or (ch>='a' and ch<='z') a1=a1+1

case ch>='0' and ch<='9' d1=d1+1 otherwise

o1=o1+1

36