程序设计基础

1、下列程序段执行以后,内存变量 A 和 B 的值是( )。
CLEAR
A=10
B=20
SET UDFPARMS TO REFERENCE
DO SQ WITH(A),B &&参数是值传送,B 是引用传送
?A,B
PROCEDURE SQ
PARAMETERSX1,Y1
X1=X1*X1
Y1=2*X1
ENDPROC
A.10 200 B.100 200
C.100 20 D.10 20
[D] 教师批改:D
2、下列选项不符合良好程序设计风格的是( )。
A.源程序要文档化 B.数据说明的次序要规范化
C.避免滥用 goto 语句 D.模块设主地要保证高耦合、高内聚
[D] 教师批改:D
3、下列程序执行以后,内存变量 y 的值是( )。
x=34357
y=0
DO WHILE x>0
y=x%10+y*10
x=int(x/10)
ENDDO
A.3456 B.34567
C.7654 D.76543
[D] 教师批改:D
4、下列选项中不属于结构化程序设计方法的是( )。
A.自顶向下 B.逐步求精
C.模块化 D.可复用
[D] 教师批改:D
5、在Visual FoxPro中可以用DO命令执行的文件不包括
A.PRG文件 B.MPR文件
C.FRX文件 D.QPR文件
[C] 教师批改:C
6、在DO WHILE….ENDDO循环结构中,LOOP命令的作用是( )。
A.退出过程,返回程序开始处 B.转移到DO WHILE语句行,开始下一个判断和循环
C.终止循环,将控制转移到本循环结构ENDDO后面的第一条语句继续执行 D.终止程序执行
[B] 教师批改:B
7、已知 proc.prg 程序清单如下:
SET TALK OFF
n=20
t=1
DO proc_1 WITH n,t
?t
SET TALK ON
RETURN
Proc_1.prg 程序清单如下:
PARAMETERS a,b
b=a*b
if a<=2
RETURN
ENDIF
DO proc_1 WITH a-2,b
RETURN
程序 proc.prg 的功能是( )。
A) 输出 20 以内偶数的乘积 B) 输出 20 以内奇数的乘积
C) 输出结果为 1 D) 输出结果为 0
[A] 教师批改:A
8、在VisuAl FoxPro中,用于建立或修改过程文件的命令是( )。
A)MODIFY<文件名> B)MODIFY COMMAND<文件名>
C)MODIFY PROCEDURE<文件名> D)上面B)和C)都对
[B] 教师批改:B
9、结构化程序设计的三种基本逻辑结构是( )。
A)选择结构、循环结构和嵌套结构 B)顺序结构、选择结构和循环结构
C)选择结构、循环结构和模块结构 D)顺序结构、递归结构和循环结构
[B] 教师批改:B
10、清除主窗口屏幕的命令是( )。
A)CLEAR B)CLEAR ALL
C)CLEAR SCREEN D)CLEAR WINDOWS
[A] 教师批改:A
11、将内存变量定义为全局变量的VisuAlFoxPro命令是( )。
A.LOCAL B.PRIVATE
C.PUBLIC D.GLOBAL
[C] 教师批改:C
12、当前盘当前目录下有数据库DB_stoCk,其中有数据库表stoCk.DBf,该数据库表的内容是:
股票代码 股票名称 单价 交易所
600600 青岛啤酒 7.48 上海
600601 方正科技 15.20 上海
600602 广电电子 10.40 上海
600603 兴业房产 12.76 上海
600604 二纺机 9.96 上海
600605 轻工机械 14.59 上海
000001 深发展 7.48 深圳
000002 深万科 12

.50 深圳
执行下列程序段以后
,内存变量A的内容是( )。
CLOSE DATABASE
A=0
USE stoCk
GO TOP
DO WHILE.NOT.EOF()
IF 单价>10
A=A+1
ENDIF
SKIP
ENDDO
A.1 B.3
C.5 D.7
[C] 教师批改:C
13、有关@…SAY…GET…语句中的校验子句叙述正确的是( )。
A.RANGE子句是非强制校验,如果输入的数据超过或等于给定上、下限,则提示出错 B.VALID子句是强制校验,如果输入的数据使条件表达式为真或数值表达式的值不等于零,则报警并提示出错
C.RANGE非强制校验,只有当编辑的变量发生了变化,并按了回车键才予以校验,在给定的初值超过上限或下限时,如果是用光标键移出当前编辑区,则不会提示无效。 D.VALID强制校验,在初值使条件表达式为假或使数值表达式为零时,只要按下回车键,就实施校验,并提示正确的数据范围
[C] 教师批改:C
14、下面语句( )的格式是正确的。
A.@10,10,20,20 CLEAR B.@10,10
C.@10.10, D.CLEAR FROM 10,10 TO 20,20
[B] 教师批改:B
15、有关自定义函数的叙述,正确的是( )。
A.自定义函数的调用与标准函数不一样,要用DO命令 B.自定义函数的最后结束语句可以是RETURN或RETRY
C.自定义函数的RETURN语句必须送返一个值,这个值作为函数返回值 D.调用时,自定义函数名后的括号中一定写上形式参数
[C] 教师批改:C
16、下面有关命令SET DEVICE TO PRINTER的叙述正确的是( )。
A.该命令的功能是开关打印设备 B.该命令的功能是将打印机联机
C.该命令的功能是设置@…SAY命令的输出定向为打印机 D.该命令的功能是设置"?"或"??"命令的输出定向为打印机
[C] 教师批改:C
17、有关SCAN循环结构,叙述正确的是( )。
A.SCAN循环结构中的LOOP语句,可将程序流程直接指向循环开始语句SCAN,首先判断EOF()函数的真假 B.在使用SCAN循环结构时,必须打开某一个数据库
C.SCAN循环结构的循环体中必须写有SKIP语句 D.SCAN循结构,如果省略了子句、FOR和WHILE条件子句,则直接退出循环
[B] 教师批改:B
18、有关FOR循环结构,叙述正确的是( )。
A.对于FOR循环结构,循环的次数是未知的 B.FOR循环结构中,可以使用EXIT语句,但不能使用LOOP语句
C.FOR循环结构中,不能人为地修改循环控制变量,否则会导致循环次数出错 D.FOR循环结构中,可以使用LOOP语句,但不能使用EXIT语句
[C] 教师批改:C
19、有关@…SAY…GET…语句中的功能符和格式符的使用正确的是( )。
A.PICTURE指定的功能符是位对位进行格式控制,即一对一格式化,功能符使用时不用字符定界符 B.FUNCTION子句指定的格式符能控制所有位的格式,即整体格式化,格式符使用时

要用字符定界符
C.FUNCTION子句既可以使用格式符也可以使用
功能符,格式符前面必须加符号@二者之间用空格分开 D.PICTURE子句既可以使用格式符也可以使用功能符,功能符前面必须加符号@。且要求功能符在前,格式符在后
[D] 教师批改:D
20、有关参数传递叙述正确的是( )。
A.接收参数语句PARAMETERS可以写在程序中的任意位置 B.通常发送参数语句DO WITH和接收参数语句PARAMETERS不必搭配成对,可以单独使用。
C.发送参数和接收参数排列顺序和数据类型必须一一对应 D.发送参数和接收参数的名字必须相同
[C] 教师批改:C
21、下面( )种调用不能嵌套。
A.子程序 B.过程
C.自定义函数 D.无
[D] 教师批改:D
22、命令@10,10CLEAR的清屏范围是第10行第10列至屏幕( )角。
A.右上 B.右下
C.左上 D.左下
[B] 教师批改:B
23、有关参数传递叙述正确的是( )。
A.在子程序中如果被传递的参数是数组元素,则为引用传递 B.在子程序中如果被传递的参数是内存变量,则为用值传递
C.在子程序中如果被传递的参数是常量,则为引用传递 D.值传递,参数在子程序中的变化不会传递到调用它的主程序变量中,引用传递与其相反
[D] 教师批改:D
24、设有一个名为GZ.DBF的表文件,包含以下字段:姓名(C,8)、职务(C,10)、工资(N,6,2)、出生日期(D,8)和正式工(L,1)。阅读以下程序:
USE GZ
DO WHILE.NOT.EOF()
IF 职务="工程师" .AND.出生日期>{10/20/60}
D=出生日期
NAME=姓名
SALARY=工资
EXIT
ENDIF
SKIP
ENDDO
Y=YER(DATE())-YEAR(D)
IF .NOT. EOF()
?NAME,Y,SALARY
ELSE
?"没查到!"
ENDIF
USE
RETURN
该程序的功能是( )。
A. 显示一位1960年10月20日后出生的工程师姓名,年龄及工资 B.显示一位1960年10月20日后出生的工程师姓名,年龄
C.显示1960年10月20日后出生的工程师姓名,年龄 D.显示所有1960年10月20日后出生的工程师姓名,年龄
[A] 教师批改:A
25、给出以下程序的运行结果:
SETTALK OFF
X=0
Y=0
D0 WHILE X<100
X=X+1
1F INT(X/2)=X/2
LOOP
ELSE
Y=Y+X
ENDIF
ENDDO
?"Y=",Y
RETURN
运行结果为( )。
A.Y=500 B.Y=1500
C.Y=2090 D.Y=2500
[D] 教师批改:D
26、将格式化输出命令的输出送打印机的正确命令是( )。
A.SET PRlNT ON B.SET PRINTOFF
C.SET DEVICE TO PRINT D.SET DEVICE TO SCREEN
[C] 教师批改:C
27、只将结果输出到打印机,不在屏幕上显示,应使用命令序列( )。
A. SET DEVICE TO PRINT 和@3,10 SAY "姓名:"、+姓名 B.SET PRINT ON 和@3,10 SAY "姓名:"+姓名
C.SET PRINT ON 和 SET DEVICE TO @3,10 SAY "姓名:"+姓名 D.LIST "姓名:"+

姓名 TO PRINT
[C] 教师批改:C
28、执行程序文件的命令是
( )。
A. EXECUTE B. DO
C. START D. RUN
[B] 教师批改:B
29、Visual FoxPro的DO CASE语句是( )。
A. 循环语句 B. 分支语句
C. 执行命令文件的语句 D. 条件语句
[B] 教师批改:B
30、以下叙述正确的是( )。
A. LOOP语句的功能是退出循环 B. EXIT语句的功能是退出循环
C. LOOP和EXIT语句功能一样 D. 以上都不对
[B] 教师批改:B
31、在WAIT语句中,用于设置延时的短语是( )。
A. NOWAIT B. CLEAK
C. NOCLEAR D. TIMEOUT
[D] 教师批改:D
32、在Visual FoxPro中,说明局部变量的命令是( )。
A. PUBLIC B. LOCAL
C. GLOBAL D. ALL
[B] 教师批改:B
33、如果在一个过程中不包括RETURN语句,那么该过程返回( )。
A. 逻辑.T. B. 逻辑.F.
C. 空值 D. 没有返回值
[A] 教师批改:A
34、Visual FoxPro的循环语句包括( )。
A. DO WHILE语句 B. FOR…NEXT语句
C. SCAN语句 D. 以上所有语句
[D] 教师批改:D
35、为了调用过程文件中的过程,需要用( )命令打开过程文件。
A. OPEN PROCEDURE B. MODIFY COMMAND
C. SET PROCEDURE TO D. MODIFY PROCEDURE
[C] 教师批改:C
36、关于过程、自定义函数的调用,正确的叙述是( )。
A. 当实参的数量少于形参的数量时,多余的形参取逻辑假 B. 当实参的数量多于形参的数量时,多余的实参被忽略
C. 实参与形参的数量必须相等 D. 上面的A和B都正确
[A] 教师批改:A
37、有如下Visual FoxPro程序:
*程序名:test. prg
*调用方法:DO TEST
SET TALK OFF
PRIVATE x,y
x="Visual FoxPro"
y="二级"
DO SUB WITH x
?y+x
RETURN
*子程序:sub
PROCEDURE sub
PARAMETERS x1
LOCAL x
x="Visual FoxPro DBMS 考试"
y="计算机等级"+y
RETURN
执行命令DO TEST后,屏幕显示的结果为( )。
A. 二级Visual FoxPro B. 计算机等级二级Visual FoxPro考试
C. 二级Visual FoxPro考试 D. 计算机等级二级Visual FoxPro
[D] 教师批改:D
38、如下程序能根据键入的学号判断该学生是否存在。如果存在,使用SQL-SELECT语句显示学生的学号、姓名和平均成绩。请在下划线处填上适当内容,使程序能正确运行。
SET TALK OFF
PRIVATE key_no,key
USE student ORDER TAG no
DO WHILE . T.
CLEAR
ACCEPT "请输入学号:" TO key_no
SEEK key_no
IF FOUND( )
SELECT student. 学号,姓名,【1】(成绩) AS 平均成绩;
FROM student sc WHERE student.学号=sc.学号
ELSE
WAIT "该学号的学生不存在,按任意键继续"
ENDIF
WAIT "如果退出,请按[Y]键!" TO 【2】
IF UPPER(key)= 【3】
【4】
ENDIF
ENDDO
USE
RETURN
教师批改:【1】AVG 【2】KEY 【3】"Y" 【4】EXIT
39、在Visual FoxPro中

,按作用域变量可以分为全局变量、局部变量和【 】。
教师批改
:私有变量
40、程序的基本结构包括顺序结构、选择结构和【 】结构。
教师批改:循环
41、DO WHILE循环中,当循环条件为【 】时结束循环。
教师批改:假
42、以下命令序列的功能是根据输入的考试成绩,显示相应的成绩等级。等级划分标准为:低于 60 分为 " 不合格 " , 60 分以上 ( 含 60) 为 " 通过 " ,其中 90 分以上 ( 含 90) 的为 " 优秀 " 。请对该程序填空:

CLEAR
【1】 " 请输入考试成绩: "TO chj
DO CASE
CASE chj<60
dj=" 不合格 "
CASE 【2】
dj=" 通过 "
OTHERWISE
dj=" 优秀 "
ENDCASE
?" 成绩等级: " 【3】
RETURN
教师批改:【1】INPUT 【2】CHJ<90 【3】+DJ
43、有以下三个自由表:
职员 ( 职员号 C(3) ,姓名 C(6) ,性别 C(2) ,职务 C(10))
订单 ( 订单号 N(3) ,客户号 C(3) ,职员号 C(3) ,签订日期 D(8) ,金额 N(6 , 2))
客户 ( 客户号 C(3) ,客户号 C(20) ,地址 C(20) ,电话 C(13))
下面程序的功能是利用索引逐条显示 8 月份签订的订单记录。请填空:
SELECT 0
USE 订单
INDEX ON MONTH( 签订日期 ) TO IM
CLEAR
SEEK 8
IF 【1】
 DO WHILE 【2】
DISPLAY
SKIP
 ENDDO
ELSE
 ?"8 月份没有订单 !"
ENDIF
CLOSE ALL
RETURN
教师批改:【1】FOUND() 【2】MONTH( 签订日期 )=8
44、假设有上一题的自由表。下面的程序的功能是分别统计职员号以 A 或 B 开头的职员所签订的订单数目和总金额。请填空:

CLEAR
STORE 0 TO nl,sl,n2,s2
SELECT 0
USE 订单
DO WHILE .NOT. EOF()
DO CASE
CASE 【1】
n1=n1+1
S1=S1+ 金额
CASE 【2】
n2=n2+1
S2=S2+ 金额
ENDCASE
【3】
ENDDO
?"A 职员订单数 ;"+STR(n1,3)+SPACE(10)+" 总金额 ;"+STR(s1,7,2)
?"B 职员订单数 ;"+STR(n2,3)+SPACE(10)+" 总金额 ;"+STR(s2,7,2)
CLOSE DATABASE
RETURN
教师批改:【1】LEFT(职员号)="A" 【2】LEFT(职员号)="B" 【3】SKIP
45、假设有上一题的自由表。下面程序的功能是根据订单号查询该订单及相关职员和客户的信息,要求在屏幕的第 6 行第 20 列开始显示输出信息。请填空:

SET SAFETY OFF
STORE "Y" TO yn
SELECT 0
USE 职员
INDEX ON 职员号码 TO IZG
SELECT 0
USE 客户
INDEX ON 客户号 TO IKH
SELECT 0
USE 订单
SET RELATION TO 职员号 INTO 职员
SET RELATION TO 客户号 INTO 客户 【1】
DO WHILE UPPER(yn)="Y"
CLEAR
INPUT " 请输入订单号: "TO mddh
LOCATE FOR 订单号 =mddh
IF EOF()
?" 无此订单号 !"
ELSE
【2】 " 职

员: "+ 职员 -〉姓名 +" 客户 ;"+ 客户 -〉客户名 +" 金额: "-STR( 金额, 6 , 2)
ENDIF
WAIT " 继续查询吗 (Y/N)?" TO yn
ENDDO
CLOSE DATABASE
SET SAFETY ON
RETURN
教师批改:【1】ADDITIVE 【2】@ 6,20 SAY
46、有如下命令序列:


USE XYZ
? RECCOUNT()
SKIP +2
DELETE
? RECCOUNT()

执行第一条输出命令后,屏幕显示 10 。接着执行后面的命令序列,第二条输出命令显示的结果是【 】。
教师批改:10
47、在当前打开的表文件中有一个长度为 6 的字符型字段:" 姓名 " ,有如下命令序列

REPLACE 姓名 WITH " 肖光 "
? LEN( 姓名 )
执行最后一条命令的显示结果是【 】。
教师批改:6
48、在VISUAL FOXPRO 中如下程序的运行结果(即执行命令DO main后)是【 】。
*程序文件名:main.prg
SET TALK OFF
CLOSE ALL
CLEAR ALL
mX="Visual Foxpro"
mY="二级"
DO s1
?mY+mX
RETURN
*子程序文件名:s1.prg
PROCEDURE s1
LOCAL mX
mX="Visual FoxPro DBMS 考试"
mY="计算机等级"+mY
RETUREN
教师批改:计算机等级二级Visual FoxPro
49、如下程序显示的结果是【 】。
s=1
i=0
do while i<8
s=s+i
i=i+2
enddo
?s
教师批改:13
50、如下程序的输出结果是【 】。
i=1
DO WHILE i<10
i=i+2
ENDDO
?i
教师批改:11
51、编程求:1/2+1/3+.....1/1000

教师批改:
S=0
For i=1 to 1000
S=S+1/i
Endfor
? s
retu
52、用循环结构编程输出如下图形

*
**
***
****
*****


教师批改:
Clea
For i=1 to 5
? space(10-i)
For j=1 to i
?? “*”
Endfor
Endfor
Retu



Clea
For i=1 to 5
X=repl(“*”,i)
? x
Endfor
Retu
53、编程打印如下九九乘法表(“…”表示有若干项类似,并非输出)
1*1=1
1*2=2 2*2=4

1*9=9 2*9=18 … 9*9=81


教师批改:
Set talk off
clea
for i=1 to 9
for j=1 to i
?? str(j,6)+"*"+str(i,1)+"="+str(i*j,2)
endfor
?
endfor
Set talk on
Return
54、设有数据库xs.dbf(学号 C(8),姓名 C(8),入学成分 N(3)),编程求出入学总分最高的同学。

教师批改:
Set talk off
Use xs
X=0
Y=0
Scan
If x<入学总分
X=入学总分
Y=recno()
endif
Endscan
Go X
? “ 入学总分最高的同学:”
? 学号,姓名,入学总分
Set talk on
Return
55、编一

程序,在表xscj.dbf(表结构为:姓名 C(8)、数学 N(3)、语文 N(3)、外语 N(3)、总分 N(3)、平均分 N(4,1)、等级 C(4))中,根据数学、语文、外语成绩,计算每个学生的总分和平均分,并填写等级:平均分在90分以上(含90分)为优秀, 80分以上(含80分)为良好,70分以上(含70分
)为中等,60分以上(含60分)为及格,否则为不及格。

教师批改:
Set talk off
Use xscj
Scan
Rple 总分 with 数学+语文+外语,平均分 with(数学+语文+外语)/3
X=平均分
Do case
Case x>=90
Y=”优秀”
Case x>=80
Y=”良好”
Case x>=70
Y=”中等”
Case x>=60
Y=”及格”
Case x<90
Y=”不及格”
Endcase
Repl 等级 with Y
Endscan

Endscan
Rerurn
56、编写一求n!的函数。

教师批改:
Para n
If n<0
Retu 0
Endif
If n=0
Retu 1
Endif
T=1
For i=1 to n
T=t*i
Endfor
Retu t

相关文档
最新文档