单项选择题 (每小题1分,共20分)
1. 在VFP的命令窗口中,以下叙述正确的是(A )
(A) 所使用的变量都是全局变量 (B)不能运行任何程序
(C) 不能打开数据表 (D)不能修改执行过的命令
2. 在数据库的三级模式中,真正存储数据的是( B )。
(A)模式 (B)内模式 (C)外模式 (D)概念模式
3. 在VFP的命令窗口中已经定义了若干个内存变量,若执行QUIT命令后,这些变量所保存的数据将(C )
(A) 存入一个自动生成的内存变量文件中 (B)自动转到磁盘存储器上保留
(C) 随着系统的退出全部丢失 (D)转为外存变量保存下来
4. 通用字段的数据宽度为4,它存放的是( C ).
(A) 多媒体数据 (B) 文件名称 (C) FPT指针 (D) CDX指针
5. 下列符号中,不是变量名的是( A )。
(A) "姓名" (B) 性别 (C) A100 (D) AB
6. 表达式SUBSTR(RIGHT(“ZIYUANGUANLI”,6),3,4)的结果( A )。
(A) ANLI (B) GUAN (C) YUAN (D) ZIYU
7. 下列函数中,将字符串转换为数值的是( B )。
(A) STR() (B) VAL() (C) CHR() (D) MOD()
8. TIME()函数返回值的数据类型是(B )。
(A) 数值型 (B) 字符型 (C) 逻辑型 (D) 日期型
9. 执行A=″1.保护环境″和B=20两条赋值命令后,能够正确求值的表达式是( B )。
(A) RIGHT(A,4)+SUBSTR(B,2) (B)VAL(LEFT(A,1))+B
(C) A+B (D)SUBSTR(A,1,1)+B
10. 设X=123,Y=678,H=”X+Y”,则表达式1+&H的值是( A )。
(A) 802 (B)数据类型不匹配 (C)1+X+Y (D)679
11. DB(数据库)、DBMS(数据库管理系统)和DBS(数据库系统)三者之间的关系是(B )。
(A) DB包括DBMS和DBS (B) DBS包括DB和DBMS
(C) DBMS包括DBS和DB (D) DBS与DB和DBMS无关
12. 既可输入字符、数值,又可输入日期、逻辑值的数据输入命令是( C )。
(A)WAIT (B)ACCEPT (C)INPUT (D)=INKEY(0)
13. 有如下命令序列
X=1
Y=2
Z=3
?Z=X+Y
执行最后一条命令后,显示的结果应该是( D )。
(A) X+Y (B)3 (C).F. (D).T.
14. SELECT 0的功能是( A )。
(A) 选择工作区号最小的空闲工作区 (B) 选择工作区号最大的空闲工作区
(C)选择当前工作区号+1的工作区 (D)随机选择一个工作区的区号
15. 删除一个数据表文件XS.DBF,使用的命令是( D )。
(A) DELE XS.DBF (B)PACK XS.DBF
(C) ZAP (D)DELE FILE XS.DBF
16. 将职工工资数据表中所有研究员的工资增加100元,应使用命令(D )。
(A) REPLACE 工资 WITH 100 FOR 职称=”研究员”
(B) REPLACE 工资 WITH 工资+100 WHILE 职称=”研究员”
(C) CHANGE 工资 WITH 工资+100 FOR 职称=”研究员”
(D) REPLACE 工资 WITH 工资+100 FOR 职称=”研究员”
17. 与下列语句序列等效的删除命令是( D ):
DO WHILE .T.
IF 性别<> "男"
EXIT
ENDIF
IF 政治面目="群众"
DELETE
ENDIF
SKIP
ENDDO
(A) DELETE FOR 性别="男" .AND.政治面目="群众"
(B) DELETE WHILE 性别="男" .AND.政治面目="群众"
(C) DELETE FOR 性别="男" WHILE 政治面目="群众"
(D) DELETE WHILE 性别="男" FOR 政治面目="群众"
18. 以下有关排序和索引的描述中,不正确的是( C )。
(A) 排序和索引都是对数据表中的记录按关键字重新组织。
(B) 排序过程占用空间大、所需时间长、需重新生成新的排序文件。
(C) 排序文件空间小、索引文件空间大。
(D) 索引是按关键字对数据表记录的逻辑排序。
19. 已知商品数据表goods的结构为(商品代码 c10,品名 c30,单价 n5,供应商代码 c10)。设商品代码的值是数字字符,以下哪条VFP-SQL语句能够实现功能:查询商品代码的值是偶数,并且单价大于3000的全部商品信息( C )。
(A) list for sqrt(val(商品代码),2)=0 and 单价>3000
(B) select where mod(val(商品代码),2)#0 and 单价>3000
(C) select * from goods where mod(val(商品代码),2)=0 and 单价>3000
(D) select where mod(val(商品代码),2)=0 and 单价>3000
20.在表单程序运行期间,控件对象(如:命令按钮)获得焦点时,引发的事件是( A )。
(A) gotfocus (B) lostfocus (C) destroy (D) click
多项选择题 (每小题1分,共10分,错选、漏选均不得分)
1. VFP的特点有( ABE )。
(A) 友好的窗口菜单界面 (B) 采用RUSHMORE优化技术
(C) 安全机制强 (D) 库表文件的最大记录数为一亿条
(E) 支持VFP-SQL语句
2. 以下叙述正确的有( BE)。
(A) 使用COPY FILE TO 必须先打开文件。
(B) COPY TO 命令可以同时复制备注文件。
(C) APPEND FROM SCORE.DBF 需要事先打开SCORE.DBF数据表。
(D) SCATTER命令一次可将数据表内全部记录内容传送给指定数组。
(E) 修改数据表结构可采用交互式命令MODIFY STRUCTURE。
3. 在VFP的语句中,可作为<范围>子句的选项有( ABDE )。
(A) ALL (B) NEXT N (C) FOR (D) REST (E) RECORD N
4. 内存变量的作用域有( CDE )。
(A) screen (B) command (C) local (D) public (E) private
5. 在VFP的可视化程序设计中,控件CommandButton的主要属性是(ACE )。
(A)Caption (B)Click (C)Enabled (D)Move (E) Picture
6. 以下表达式中,a,b为数值,其中合法的表达式有( ABDE )。
(A) 8-3=5 (B){99/01/01}+15
(C) [8]+[3]>10 (D)at(”ad”, ”xyadvanad”)-len(”adadad”)
(E) .not. (a=b) .and. a-b>0 or b=0
7. 以下可以在数据表中增加一条空白记录的命令有( BC )。
(A) insert (B) insert blank (C) append blank
(D) insert before (E) repl blank
8. 下列命令是显示年龄为10的整数倍的全部在职职工记录,正确的有( ABC )。
(A) browse FOR MOD(年龄,10)=0 (B) browse FOR 年龄/10=INT(年龄/10)
(C) browse FOR SUBSTR(STR(年龄,2),2,1)= "0"
(D) browse FOR 年龄=20 .OR.30 .OR.40 .OR . 50 .OR.60
(E) browse FOR ROUND(年龄,10)=0
9. 以下哪些是程序设计的基本结构(ADE )
(A) 分支 (B)复制 (C)选通 (D)循环 (E)顺序
10. 数据库的数据模型一般分为( BDE )。
(A) 选择 (B) 关系 (C) 连接 (D) 层次 (E) 网状
1 ABE 6 ABDE
2 BE 7 BC
3 ABDE 8 ABC
4 CDE 9 ADE
5 ACE 10 BDE
判断分析题 (每小题1分,共10分)
1. VFP的数组单元允许赋予各自不同的数据类型。(R)
2. 宏替换&的操作数只能用字符型变量。(R)
3. .? IIF(1-6=5,"男","女")命令显示的是“男”。(W)
4. 日期型数据之间不能进行加法运算,但可以进行减法运算。(R)
5. VFP工作区号的大小可以说明同时打开数据表的先后次序。(W)
6. 在命令按钮控件中,可以通过前导符 \< 设置按钮标题的快捷键。(R)
7. 关系模型的“码”指属性的取值范围。(W)
8. 在数学(M)、物理(P)、英语(E)三科中,均高于85分或者三科总分大于270分者,其逻辑表达式是:M>85 .AND. P>85 .AND. E>85 .AND. M+P+E>270 (W)
9. 某数据库表的“字段有效性”规则为:性别=“男”or 性别=“女”。它不仅限制“性别”字段的值域,而且限制“姓名”字段的值域。
10. VFP的数据统计命令:calculate aver(工资),max(工资),min(工资) to a,b,c 可以计算出工资数据表的全部职工的平均工资、最高工资和最低工资。(W)
1 2 3 4 5 6 7 8 9 10
√ √ × √ × √ × × × ×
填空题 (每空2分,共20分)
1. 有一密码验证程序,其设计界面如图1,运行界面如图2。基本功能是在2个文本框中输入两次密码,2个密码完全相同,验证通过(释放表单)。否则,弹出警告窗口,报告“密码值有误,重新输入!”,表单不释放。以下为一些控件的属性设置和事件代码,请填空完成。
Text1.PasswordChar= ①
Command1.Click Event
if ②
=messagebox("密码值有误,重新输入!")
return
endif
thisform.release
2.以下程序实现功能:统计数据表stock99中,字段“编号”为奇数的 “库存量”之和。请填空完成。
Set talk off
X=0 &&库存量的和值
___________ ③ ________
do while .not.eof()
if val(编号)/2<>______④
X=X+库存量
endif
___________ ⑤ _______
enddo
? "编号为奇数的库存量之和为:", X
use
3. 设有一数据表GZ.DBF,有一字段名为“实发工资”。下面是按“实发工资”计算税金的程序,并将计算结果填入“税金”字段(假设职工最高实发工资为3000元),请将正确的内容填在下划线处。
***主程序MAIN.PRG*** ***子程序SUB.PRG***
SET TALK OFF PARAMETERS SF,X
TAX=0 X=0
USE GZ DO CASE
DO WHILE .NOT.EOF() CASE SF>=800 .AND.SF<1300
SFGZ=实发工资 X=(SF-800)*0.05
DO SUB WITH ___⑥_____ CASE SF>=1300 .AND. SF<2300
? TAX B=SF-1300
______⑦________ X=B*0.15+500*0.1+500*0.05
SKIP CASE SF>=2300
ENDDO B=SF-2300
USE X=B*0.2+500*0.15+500*0.1+500*0.05
CANCEL ______⑧______
RETURN
4.请完善TEST1.PRG程序,使得运行该程序后,将在屏幕上显示左边的乘法表:
1 ***TEST1.PRG***
2 4 SET TALK OFF
3 6 9 FOR ______⑨_______
4 8 12 16 FOR ______⑩_______
5 10 15 20 25 ?? STR(J*K,6);
6 12 18 24 30 36 ENDFOR
7 14 21 28 35 42 49 ?
8 16 24 32 40 48 56 64 ENDFOR
9 18 27 36 45 54 63 72 81 RETURN
① “*”
② thisform.text1.value # thisform.text2.value
③ USE stock99
④ INT(val(编号)/2)
⑤ SKIP
⑥ SFGZ,TAX
⑦ REPLACE 税金 WITH TAX
⑧ ENDCASE
⑨ J=1 TO 9
⑩ K=1 TO J
读程序写出运行结果 (每小题4分,共20分)
1. 有一程序如下,写出运行结果:
SET TALK OFF
CLEAR
STORE 1 to f1,f2
FOR k=1 to 4
?f1,f2
f1=f1+f2
f2=f2+f1
ENDFOR
RETURN
2. 设有一学生成绩数据表XSCJ.DBF如下,写出下面程序的运行结果。
学号 课程号 学期 考试成绩 补考成绩
1999013001 01601 6 86.0
2000100723 10312 4 91.0
1998205134 20734 8 70.0
1999120815 12915 6 89.0
1999013001 60623 6 55.0 78.0
1999013001 60101 8 75.0
2000221005 22510 4 53.0 80.0
SET TALK OFF
CLEAR
USE XSCJ
k=0
DO WHILE .NOT. EOF()
IF 学号="1999013001"
If k=0
? 学号,课程号,iif(考试成绩<60,补考成绩,考试成绩),“—”
k=k+1
else
?? 课程号, iif(考试成绩<60,补考成绩,考试成绩),“—”
endif
endif
SKIP
ENDDO
USE
Return
3. 已知cTest=”hello2008,Luck5688PIG”,写出以下程序的运行结果:
SET TALK OFF
CLEAR
cNumOnly = "" &&空串
FOR nCnt = 1 TO LEN(cTest)
cCharacter = SUBSTR(cTest, nCnt, 1)
IF ISDIGIT(cCharacter)
cNumOnly = cNumOnly + cCharacter
ENDIF
ENDFOR
? cNumOnly
return
4. 写出以下程序运行的结果:
SET TALK OFF
Local i PROCEDURE M2
i=8 Parameters j
C1="计算机等级考试" do while j>=i
DO M1 ?? substr(cd , j , 2)
? 1998+i, right(C1,i ) j=j-2
RETURN enddo
?? C1
PROCEDURE M1 i=4
PUBLIC cd RETURN
i=1
cd="校高市庆重"
do M2 with 9
RETURN
5. 有两个数据表文件,其内容如下:
学生成绩表CJ.DBF: 学生学号、姓名对照表XM.DBF:
学号 科目 成绩 学号 姓名
99011 马列原理 70 99011 张三
99013 马列原理 85 99012 李四
99012 马列原理 65 99013 王五
99012 英语 70
99011 英语 85
99013 英语 70
执行以下程序段,写出运行结果:
set talk off
sele a
use xm
inde on 学号 to xh
sele b
use cj
inde on 学号to cj1
set rela to 学号 into a
list off 学号,a->姓名,科目,成绩 for right (学号,2)=”12”
close data
return
1. 1 1
2 3
5 8
13 21
2. 1999013001 01601 86.0 – 60623 78.0 – 60101 75.0 --
3. 20085688
4. 重庆市高校计算机等级考试
2006 等级考试
5. 学号 姓名 科目 成绩
99012 李四 马列原理 65
99012 李四 英语 70
程序设计题 (20分)
某一库存管理数据库,有数据表:
实时库存量表xa,表结构(编号/ c/ 5,品名/ c/ 10,库存量/ n/ 6);
入库和出库单据表xb,表结构(编号/ c/ 5,标志/ L/ 1,数量/ n/ 5)。
其中,xb中的标志字段为“真”时代表入库,为“假”时代表出库。
试编写程序,根据xb表的数据,更新xa表的实时库存量。具体算法是,如果标志字段为“真”,将数量增加到xa对应的商品库存量;如果标志字段为“假”,从xa对应的商品库存量中减去数量。
set talk off
select 1
USE xb
select 2
use xa
index on 编号 to ibh
select 1
set rela TO 编号 INTO B
go top
do while .not.eof(1)
sele 2
if .not.eof(2)
if A->标志
repl 库存量 with 库存量+a->数量
else
repl 库存量 with 库存量-a->数量
endif
endif
SELE 1
skip
enddo
close all
retu