1、国家二级 VF 机试(程序设计基础)模拟试卷 10 及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.结构化程序所要求的基本结构不包括(分数:2.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构2.下列选项中不符合良好程序设计风格的是(分数:2.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto 语句D.模块设计要保证高耦合、高内聚3.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是(分数:2.00)A.-369B.369C.0369D.整数集合1,2,3,4,54.在程序中
2、不需要用 public 等命令明确声明和建立,可直接使用的内存变量是(分数:2.00)A.局部变量B.公共变量C.私有变量D.全局变量5.在 Visual FoxPro 中,要想将日期型或日期时间型数据中的年份用 4 位数字显示,应当使用设置命令(分数:2.00)A.SET CENTURY ONB.SET CENTURY TO 4C.SET YEAR TO 4D.SET YAER TO yyyy6.如果有定义 LOCAL,data,data 的初值是(分数:2.00)A.整数 0B.不定值C.逻辑真D.逻辑假7.语句 LIST MEMORY LIKE a*能够显示的变量不包括(分数:2.00)
3、A.aB.a1C.ab2D.ba38.设 d=len(time(),命令?VARTYPE(d)的输出值是(分数:2.00)A.LB.CC.ND.D9.表示 2012 年 9 月 10 目的日期常量是(分数:2.00)A.2012-09-10B.-2012-09-10C.2012-09-10)D.2012-09-1010.执行如下命令序列后,最后一条命令的显示结果是 DIMENSION M(2,2)M(1,1)=10M(1,2)=20M(2,1)=30M(2,2)=40?M(2)(分数:2.00)A.变量未定义的提示B.10C.20D.F11.有如下赋值语句:a=“计算机“,b=“微型“,结果为
4、“微型机“的表达式是(分数:2.00)A.b+LEFT(a,3)B.b+RjGHT(h,1)C.b+LEFT(a,5,3)D.b+RIGHT(a,2)12.命令?VARTYPE(TIME()的结果是(分数:2.00)A.CB.DC.TD.出错13.设 X=“11“,Y=“1122“,下列表达式结果为假的是(分数:2.00)A.NOT(X=Y)AND(X$Y)B.NOT(X$Y)OR(Y)C.NOT(X=Y)D.NOT(X$Y)14.在下面的 Visual FoxPro 表达式中,运算结果为逻辑真的是(分数:2.00)A.EMPTY(NULL)B.LIKE(xy?,xyz)C.AT(xy,abc
5、xyz)D.ISNULL(SPACE(0)15.表达式 LEN(TRIM(SPACE(2)+abc-SPACE(3)的计算结果是(分数:2.00)A.3B.5C.6D.816.运算结果不是 2015 的表达式是(分数:2.00)A.int(20159、)B.round(20151,0)C.ceiling(20151、)D.floor(20159)17.某数据库有 20 条记录,若用函数 EOF()测试结果为T,那么此时函数 RECNO()值是(分数:2.00)A.20B.21C.19D.118.下列程序段执行后,内存变量 e 的值是 a=10b=20c=30d=IIF(ab,a,b)e=IIF
6、(cd,c,d)(分数:2.00)A.10B.20C.30D.55019.在 Visual FoxPro 中,下列程序段执行后,内存变量 s1 的值是 s1=“奥运开幕日期“s1=substr(s1,5,4)+left(s1,4)+right(s1,4)?s1(分数:2.00)A.开幕日期奥运B.奥运日期C.开幕日期D.开幕奥运日期20.在 Visual FoxPro 中可以用 DO 命令执行的文件不包括(分数:2.00)A.prg 文件B.mpr 文件C.frx 文件D.qpr 文件21.假设表 S 中有 10 条记录,其中字段 b 小于 20 的记录有 3 条,大于等于 20、并且小于等于
7、 30 的记录有 3 条,大于 30 的记录有 4 条。执行下面的程序后,屏幕显示的结果是 SET DELETE ONDELETE FROM s WHERE b BETWEEN 20 AND 30?RECCOUNT()(分数:2.00)A.10B.7C.0D.322.下列程序段执行以后,内存变量 y 的值是 x=76543y=0DO WHILE x0y=x10+y*10x=int(x10)ENDDO(分数:2.00)A.3456B.34567C.7654D.7654323.下列的程序段中 y 的计算结果为 76543 的是(分数:2.00)A.x=34567 y=0 flag=T DO WHI
8、LE flagy=x10+y*10 x=int(x10) IF x0 flag=F ENDIF ENDDOB.x=34567 y=0 flag=T DO WHILE flagy=x10+y*10 x=int(x10) IF x=0 flag=E ENDIF ENDDOC.x=34567 y=0 flag=T DO WHILE!flagy=x10+y*10 x=int(x10) IF x0 flag=E ENDIF ENDDOD.x=34567 y=0 flag=T DO WHILE!flagy=x10+y*10 x=int(x10) IF x=0 flag=T ENDIF ENDDO24.在
9、Visual FoxPro 中,如果希望跳出 SCANENDSCAN 循环体外执行 ENDSCAN 后面的语句,应使用(分数:2.00)A.LOOP 语句B.EXIT 语句C.BREAK 语句D.RETURN 语句25.下列程序段执行时在屏幕上显示的结果是 x1=20x2=30SET UDFPARMS TO VALUEDO test WITH x1,x2?x1x2PROCEDURE testPARAMETERS a,bx=aa=bb=xENDPRO(分数:2.00)A.30 30B.30 20C.20 20D.20 3026.如果一个过程不包含 RETURN 语句,或者 RETURN 语句中没
10、有指定表达式,那么该过程:(分数:2.00)A.没有返回值B.返回 0C.返回FD.返回T国家二级 VF 机试(程序设计基础)模拟试卷 10 答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.结构化程序所要求的基本结构不包括(分数:2.00)A.顺序结构B.GOTO 跳转 C.选择(分支)结构D.重复(循环)结构解析:解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有 GOTO 跳转结构。2.下列选项中不符合良好程序设计风格的是(分数:2.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto 语句D.模块设计要保
11、证高耦合、高内聚 解析:解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一、效率第二”的论点已成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素:源程序文档化,包括下列三个方面:A)符号的命名应具有一定的含义;B)正确的注释能够帮助读者理解程序;C)视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。数据说明的方法,包括下列三个方面:A)数据说明的次序规范化;B)说明语句中变量安排有序化;C)使用注释来说明复杂数据的结构。语句的结构应该简单直接,不
12、应该为提高效率而把语句复杂化。输入和输出方式和风格应尽可能方便用户的使用。3.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是(分数:2.00)A.-369B.369 C.0369D.整数集合1,2,3,4,5解析:解析:UInt 表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项 A)和选项 C),选项 D)是整数集合,所以也排除。4.在程序中不需要用 public 等命令明确声明和建立,可直接使用的内存变量是(分数:2.00)A.局部变量B.公共变量C.私有变量 D.全局变量解析:解析:变量的作用域指的是变量在什么范围内是有效或能够被访问的,也就是说
13、变量在哪个程序段里有效。 在 Visaul FoxPro 中,根据变量的作用域,可以将内存变量分为公共变量、私有变量和局部变量 3 种。 公共变量又称全局变量,是指在任何模块中都可使用的变量,一旦建立就一直有效,其定义格式为:PUBLIC内存变量表: 局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用;其定义格式为:LOCAL内存变量表: 在程序中直接使用(没有通过 PUBLIC 和 LOCAL 命令事先声明)而由系统自动隐含建立的变量都是私有变量。私有变量的作用域是建立它的模块及其下属的各层模块。一旦建立它的模块程序运行结束,这些私有变量将自动清除。5.在 Visual FoxPr
14、o 中,要想将日期型或日期时间型数据中的年份用 4 位数字显示,应当使用设置命令(分数:2.00)A.SET CENTURY ON B.SET CENTURY TO 4C.SET YEAR TO 4D.SET YAER TO yyyy解析:解析:用于决定如何显示或解释一个日期数据年份。格式为: SET CENTURY ON|OFF|TO世纪值ROLLOVER年份参照值/ 说明:ON 显示世纪,即用 4 位数字表示年份。OFF 不显示数字,即用 2位数字表示年份。它是系统默认的设置。TO 决定如何解释一个用 2 位数字表示年份的日期所处的世纪。具体地说,如果该日期的 2 位数字年份大于等于年份参
15、照值,则它所处的世纪即为世纪值;否则为世纪值+l。6.如果有定义 LOCAL,data,data 的初值是(分数:2.00)A.整数 0B.不定值C.逻辑真D.逻辑假 解析:解析:LOCAL 命令定义局部变量,其格式是:LOCAL内存变量表,LOCAL 命令建立指定的局部变量,并为它们赋初始值逻辑假(F)。7.语句 LIST MEMORY LIKE a*能够显示的变量不包括(分数:2.00)A.aB.a1C.ab2D.ba3 解析:解析:内存变量显示有两种格式 格式 1:LIST MEMORYLIKE通配符TO PRINTERITO FILE文件名1 格式 2:DISPLAYMEMORYLIK
16、E通配符TO PRINTERffO FILE文件名1 格式 1 表示一次性显示所有与通配符匹配的内存变量,在显示内存变量时不暂停,直到所有变量显示结束。 格式 2 和格式 1 的区别是格式 2 分屏显示变量,每显示一屏就暂停,等待用户按任意键继续显示。 LIKE 短语只显示与和通配符相匹配的内存变量。Visual FoxPro 命令中的通配符包括“*”和“?”,其中,“+”表示多个字符,“?”表示一个字符。 例如:a*可以表示 ab、ac、abc 等所有以字母 a 开头的变量。8.设 d=len(time(),命令?VARTYPE(d)的输出值是(分数:2.00)A.LB.CC.N D.D解析
17、:解析:在 VFP 中,LEN(字符表达式)函数的返回指定字符表达式的长度,即所包含的字节数,需要注意的是一个汉字占两个字节,而其他的字符只占一个字节,返回值为数值型。9.表示 2012 年 9 月 10 目的日期常量是(分数:2.00)A.2012-09-10 B.-2012-09-10C.2012-09-10)D.2012-09-10解析:解析:本题考查日期常量的合法格式。在 vfp 中,日期型常量其界定符都是一对花括号。花括号中包括年、月、日 3 部分,各部分之间用分隔符分隔。常用的分隔符有斜杠()、连字符(-)、句点()和空格等。日期型数据用 8 个字节表示。日期型常量关键是要有定界符
18、和托字符。10.执行如下命令序列后,最后一条命令的显示结果是 DIMENSION M(2,2)M(1,1)=10M(1,2)=20M(2,1)=30M(2,2)=40?M(2)(分数:2.00)A.变量未定义的提示B.10C.20 D.F解析:解析:创建数组的命令格式有两种 DIMENSION数组名(下标上限 1,上标上限 2),DECLARE数组名(下标上限 1,上标上限 2)两种格式的功能完全相同。数组创建后,系统自动给每个数组元素赋以逻辑值F 可以用一维数组的形式访问二维数组。本题中 M(2)与 M(1,2)是同一变量,所以 M(2)的值为 20。11.有如下赋值语句:a=“计算机“,b
19、=“微型“,结果为“微型机“的表达式是(分数:2.00)A.b+LEFT(a,3)B.b+RjGHT(h,1)C.b+LEFT(a,5,3)D.b+RIGHT(a,2) 解析:解析:本题主要考查的是取子串函数的使用,其中 LEFT()表示从给定字符串的左端取制定长度的子串,而 RIGHT()函数是从给定字符串的右侧取指定长度的子串,另外,一个汉字在计算机中占两个字符,因此,要取得一个完整的汉字字符,必须指定字符长度为 2。 从字符串“计算机”中,利用 RIGHT()函数,从右侧取得“机”字符,注意,LEFT 和 RIGHT 函数只能从左边或右边第一个字符开始截取指定长度的字符串,而不能从指定位
20、置开始截取指定长度的字符串。12.命令?VARTYPE(TIME()的结果是(分数:2.00)A.C B.DC.TD.出错解析:解析:VARTYPE(表达式)函数用于测试表达式的类型,返回一个大写字母;TIME()函数是一个时间函数,以 24 小时制的 hh:mm:ss 格式返回当前系统时间,函数值为字符型。在 Visual FoxPro中,字母 C 表示字符型数据。13.设 X=“11“,Y=“1122“,下列表达式结果为假的是(分数:2.00)A.NOT(X=Y)AND(X$Y)B.NOT(X$Y)OR(Y)C.NOT(X=Y)D.NOT(X$Y) 解析:解析:=是字符串精确比较关系运算符
21、,$是子串包含测试关系运算符,表示不等于,=表示大于等于。选项 D)中 X$Y 求的是字符串“11”是否包含在“1122”中,结果为T,NOT 是逻辑非运算符,所以 NOT(X$Y)的值为F。14.在下面的 Visual FoxPro 表达式中,运算结果为逻辑真的是(分数:2.00)A.EMPTY(NULL)B.LIKE(xy?,xyz) C.AT(xy,abcxyz)D.ISNULL(SPACE(0)解析:解析:EMPTY(表达式),返回值:逻辑型。 功能:根据指定表达式的运算结果是否为“空”值,返回逻辑真(T)或返回逻辑假(F)。 LIKE(字符表达式 1,字符表达式 2),返回值:逻辑型
22、。 功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(T),否则返回逻辑假(F)。字符表达式 1中可以包含通配符*和?,其中,*可以与任何数目的字符相匹配,?可以与任何单个字符相匹配。 AT(字符表达式 1,字符表达式 2,数值表达式 11),返回值:数值型。 功能:如果字符表达式 1是字符表达式 2的子串,则返回字符表达式 1值的首字符在字符表达式 2值中的位置;若不是子串,则返回 0。 ISNULL(表达式),返回值:逻辑型。 功能:判断一个表达式的运算结果是否是 NULL 值,若是 NULL 值则返回逻辑真(T),否则返回逻辑假(F)。15.表达式 LEN(T
23、RIM(SPACE(2)+abc-SPACE(3)的计算结果是(分数:2.00)A.3B.5 C.6D.8解析:解析:本题考查 VFP 中函数的运用和字符串连接符“+”、“-”。在本题的表达式中,SPACE(2)+abcSPACE(3)的运算结果为字符串 abc 前连 2 个空格,再连接 3 个空格。TRIM(字符串表达式)删除字符串的右侧空格表达式。再用函数 LEN()求字符串的长度。16.运算结果不是 2015 的表达式是(分数:2.00)A.int(20159、)B.round(20151,0)C.ceiling(20151、) D.floor(20159)解析:解析:本题考查 VFP
24、中的常用函数。取整函数 INT(数值表达式),计算数值表达式的值,返回该值的整数部分。CEILING(数值表达式)函数是上界函数,计算数值表达式的值,返回一个大于或等于该值的最小整数。FLOOR(数值表达式)函数下界函数,计算数值表达式的值,返回一个小于或等于该值的最大整数。四舍五入函数 ROUND(数值表达式 1,数值表达式 2),返回数值表达式 1 四舍五入的值,数值表达式 2 表示保留的小数位数。17.某数据库有 20 条记录,若用函数 EOF()测试结果为T,那么此时函数 RECNO()值是(分数:2.00)A.20B.21 C.19D.1解析:解析:函数 EOF()的作用是测试文件尾
25、。其值为逻辑值真(T)时,表示记录指针指向文件尾,文件尾是指最后一条记录之后的位置,该数据库共有 20 条记录,故此时当前记录号是 21。18.下列程序段执行后,内存变量 e 的值是 a=10b=20c=30d=IIF(ab,a,b)e=IIF(cd,c,d)(分数:2.00)A.10B.20C.30 D.550解析:解析:本题考查 IIF 函数的使用。逻辑判断函数 iif(表达式 1,表达式 2,表达式 3),如果表达式1 值为真就返回表达式 2 的值,反之,如果表达式 1 值为假就返回表达式 3 的值。在这段程序中,执行d=IIF(ab,a,B)语句时,因为 ab 的值为假,所以 d=20
26、再执行 e=IIF(cd,c,D)语句,因为cd 为真,所以 e=30。19.在 Visual FoxPro 中,下列程序段执行后,内存变量 s1 的值是 s1=“奥运开幕日期“s1=substr(s1,5,4)+left(s1,4)+right(s1,4)?s1(分数:2.00)A.开幕日期奥运B.奥运日期C.开幕日期D.开幕奥运日期 解析:解析:本题考查字符串函数 RIGHT(),SUBSTR()和 LEFT 的使用。LEFT(c,n),取字符串 C 左边 n个字符:RIGHT(c,n),取字符串 c 右边的 n 个字符:SUBSTR(c,n1,n2),取字符串 C 第 n1 个字符起的n
27、2 个字符,返回值类型是字符型,对于本题来说,SUBSTR(s1,5,4)的值为“开幕”,LEFT(s1,4)的值为“奥运”,RIGHT(s1,4)的值为“日期”。20.在 Visual FoxPro 中可以用 DO 命令执行的文件不包括(分数:2.00)A.prg 文件B.mpr 文件C.frx 文件 D.qpr 文件解析:解析:利用 DO 命令可以执行prg 程序文件、mpr 菜单程序和qpr 查询程序等。其中程序文件为默认执行的文件,可省略文件扩展名,而执行菜单文件和查询文件时扩展名不能少。frx 文件是报表文件,打印报表时可先打开报表文件,然后再单击“打印”按钮打印报表。21.假设表
28、S 中有 10 条记录,其中字段 b 小于 20 的记录有 3 条,大于等于 20、并且小于等于 30 的记录有 3 条,大于 30 的记录有 4 条。执行下面的程序后,屏幕显示的结果是 SET DELETE ONDELETE FROM s WHERE b BETWEEN 20 AND 30?RECCOUNT()(分数:2.00)A.10 B.7C.0D.3解析:解析:DELETE 表示逻辑删除,逻辑删除不影响 RECCOIJNT()函数的统计结果。22.下列程序段执行以后,内存变量 y 的值是 x=76543y=0DO WHILE x0y=x10+y*10x=int(x10)ENDDO(分数
29、:2.00)A.3456B.34567 C.7654D.76543解析:解析:题目给出的程序段中,用到了 DO WHILEENDDO 循环结构。执行该语句时,先判断DO、WHILE 处的循环条件是否成立,如果条件为真,则执行 DO WHILE 和 ENDDO 之间的命令序列。当执行到 ENDDO 时,返回到 DO WHILE,再次判断循环条件是否为真,以确定是否再次执行循环体。若条件为假,则结束该循环语句,执行 ENDDO 后面的语句。循环体中还用到了两个算术运算符和,其中是求余运算,是取整运算。根据所给初值和循环条件,可以判断出第一次循环后 y=3,x=7654;第二次后y=34,x=765
30、;第三次后,y=345;x=76,第四次后 y=3456,x=7:第五次后 y=34567,x=0;第六次对条件x0 进行判断,结果为假,故退出循环,执行结束,最终 y 的值即为 34567。23.下列的程序段中 y 的计算结果为 76543 的是(分数:2.00)A.x=34567 y=0 flag=T DO WHILE flagy=x10+y*10 x=int(x10) IF x0 flag=F ENDIF ENDDOB.x=34567 y=0 flag=T DO WHILE flagy=x10+y*10 x=int(x10) IF x=0 flag=E ENDIF ENDDO C.x=3
31、4567 y=0 flag=T DO WHILE!flagy=x10+y*10 x=int(x10) IF x0 flag=E ENDIF ENDDOD.x=34567 y=0 flag=T DO WHILE!flagy=x10+y*10 x=int(x10) IF x=0 flag=T ENDIF ENDDO解析:解析:本题考查对简单的循环语句、Visual FoxPro 操作符及函数的掌握。在此程序中,首先为将变量 X 和 Y 分别赋值为 34567 和 0,然后进入循环。而表示去余数,则 3456710 的结果为 7,并将其值赋给 Y,接下来,将 X 值除 10 取整后的值(3456)赋
32、值给 X,此时 X 的值0,再次进行循环。此时 Y 的值为 7,执行 Y=X10+Y*10 语句后,Y 的值为 76,而 X 的值经除 10 取整后,为 345 再次进行循环,依次类推,直至 X 的值等于 0 时退出循环,此时 Y 的值为 76543。24.在 Visual FoxPro 中,如果希望跳出 SCANENDSCAN 循环体外执行 ENDSCAN 后面的语句,应使用(分数:2.00)A.LOOP 语句B.EXIT 语句 C.BREAK 语句D.RETURN 语句解析:解析:LOOP 和 EXIT 都可以出现在循环体内。LOOP 表示结束本次循环,开始下一次循环;EXIT 表示结束循
33、环语句的执行,跳出循环执行后面的语句。25.下列程序段执行时在屏幕上显示的结果是 x1=20x2=30SET UDFPARMS TO VALUEDO test WITH x1,x2?x1x2PROCEDURE testPARAMETERS a,bx=aa=bb=xENDPRO(分数:2.00)A.30 30B.30 20 C.20 20D.20 30解析:解析:带参数程序的调用有两种格式: 格式 1:DO文件名|过程名wITH实参 1f,实参 2,1 格式 2:文件名(实参表)|过程名(实参 1,实参 2,1) 采用格式 1 调用模块程序时,如果实参是常量或一般形式的表达式,则为按值传递。如果实参是变量,则为按引用传递。该格式不受 UDFPARMS 值的设置影响。 依据题干,PROCEDRE test 实现两个变量的交换。26.如果一个过程不包含 RETURN 语句,或者 RETURN 语句中没有指定表达式,那么该过程:(分数:2.00)A.没有返回值B.返回 0C.返回FD.返回T 解析:解析:本题考查 RETURN 语句的语法。RETURN 语句的返回语句,其功能是返回程序调用处或命令窗口。该语句可省略,因为在每个程序执行的最后,系统都会自动执行 1 个 return 语句。