1、数据库程序设计模拟试卷 5及答案与解析 一、单项选择题 1 假设变量 a的内容是 “计算机软件工程师 ”,变量 b的内容是 “数据库管理员 ”,表达式的结果为 “数据库工程师 ”的是 ( A) lefi(b, 6) right(a, 6) ( B) substr(b, 1, 3)一 substr(a, 6, 3) ( C) A和 B都是 ( D) A和 B都不是 2 下列表达式中,表达式返回结果为 F的是 ( A) AT(“A“,“BCD“) ( B) 信息 $“管理信息系统 “ ( C) ISNULL( NULL) ( D) SUBSTR(“计 算机技术 “, 3, 2) 3 运算结果不是
2、2015的表达式是 ( A) int(2015 9) ( B) round(2015 1, 0) ( C) ceiling(2015 1) ( D) floor(2015 9) 4 执行如下命令的输出结果是 ?15 4, 15一 4 ( A) 3 -1 ( B) 3 3 ( C) 1 1 ( D) 2014-1-1 5 下列 Visual FoxPro表达式中,运算结果为逻辑真的是 ( A) EMPTY( NULL ) ( B) LIKE(xy?, xyz) ( C) AT(xy, abcxyz) ( D) ISNULL(SPACE(0) 6 在 Visual FoxPro中,有如下程序,函数
3、 IIF()返回值是 *程序 PRIVATE X, Y STORE“男 “TO X Y=LEN(X)+2 ? IIF(Y 4, “男 “, “女 “) RETURN ( A)女 ( B)男 ( C) T ( D) F 7 下列函数返回类型为数值型的是 ( A) STR ( B) VAL ( C) DTOC ( D) TTOC 8 下列程序段执行后,内存变量 e的值是 a=10 b=20 c=30 d=IIF(a b, a, b) e=IIF(c d, C, d) ( A) 10 ( B) 20 ( C) 30 ( D) 550 9 在 Visual FoxPro中,下列程序段执行后,内存变量
4、e的值是 a=300 b=200 e=100 d=IIF(a b, a, b) e=IIF(c d, C, d) ( A) 300 ( B) 200 ( C) 0 ( D) 100 10 下列程 序段执行后,内存变量 s1的值是 s1=“奥运会游泳比赛 ” s1=stuff(s1, 7, 4, “田径 ”) ?s1 ( A)奥运会游泳比赛 ( B)奥运会田径比赛 ( C)奥运会田径 ( D)奥运会游泳 11 在 Visual FoxPro中,下列程序段执行后,内存变量 s1的值是 s1=“奥运会体操比赛 ” s1=stuff(s1, 7, 4, “篮球 ”) ?s1 ( A)奥运会比赛体操 (
5、 B)奥运会比赛 ( C)奥运会篮球 ( D)奥运会篮球比赛 12 在 Visual FoxPro中,下列程序段执行后,内存变量 s1的值是 s1=“奥运开幕日期 ” s1=substr(s1, 5, 4)+left(s1, 4)+right(s1, 4) ?s1 ( A)开幕日期奥运 ( B)奥运日期 ( C)开幕日期 ( D)开幕奥运日期 13 Modify Command命令建立的文件的默认扩展名是 ( A) prg ( B) app ( C) cmd ( D) exe 14 欲执行程序 temp prg,应该执行的命令是 ( A) DO PRG temp prg ( B) DO tem
6、p prg ( C) DO CMD temp prg ( D) DO FORM temp prg 15 在 Visual FoxPro中可以用 DO命令执行的文件不包括 ( A) prg文件 ( B) mpr文件 ( C) frx文件 ( D) qpr文件 16 在 Visual FoxPro中,用于建立或修改程序文件的命令是 ( A) MODIFY ( B) MODIFY COMMAND ( C) MODIFY PROCEDURE ( D) MODIFY PROGRAM 17 下列命令中,不会创建 文件的是 ( A) CREATE ( B) CREATE VIEW ( C) CREATE F
7、ORM ( D) CREATE QUERY 18 下面的程序的功能是将 11到 2011之间的素数插入数据库 prime,程序中的错误语句是 CREATE TABLE prime(datf) n=11 DO WHILE n0 i=i+1 LOOP ELSE f=1 EXIT ENDIF ENDDO IF f=0 INSERT TO prime VALUES(n) ENDIF n=n+1 ENDDO ( A) DO WHILE n0 y=x 10+y*10 x=int(x 10) ENDDO ( A) 3456 ( B) 34567 ( C) 7654 ( D) 76543 23 下面程序汁算一
8、个整数的各位数字之和,在下划线处应填写的语句是 SET TALK OFF INPUT“x=”TO X s=0 DO WHILE x!=0 s=s+MOD(x, 10) ENDDO ?S SETTALK ON ( A) x=int(x 10) ( B) x=int(x 10) ( C) X=Xint(x 10) ( D) x=xint(x 10) 24 下列程序段执行以后,内存变量 y的值是 CLEAR x=12345 y=0 D0 WHILE x0 y=y+x 10 x=int(x 10) ENDDO ?y ( A) 54321 ( B) 12345 ( C) 51 ( D) 15 25 下列
9、程序段执行以后, 内存变量 y的值是 x=34567 Y=0 DO WHILE x0 y=x 10+y*10 x=int(x 10) ENDDO ( A) 3456 ( B) 34567 ( C) 7654 ( D) 76543 26 下列的程序段中 Y的计算结果为 76543的是 ( A) x=34567 y=0 flag= T DO WHILE flag y=x 10+y*10 x=int(x 10) IF x0 flag= F ENDIF FNDDO ( B) x=34567 y=0 flag= T DO WHILE flag y=x 10+y*10 x=int(x 10) IF x=0
10、 flag= F ENDIF FNNDDO ( C) x=34567 y=0 flag= T DO WHILE!flag y=x 10+y*10 x=int(x 10) IF x0 flag= F ENDIF FNDDO ( D) x=34567 y=0 flag= T DO WHILE!flag y=x 10+y*10 x=int(x 10) IF x=0 flag= T ENDIF ENDDO 27 下列程序段执行时在屏幕上显示的结果是 DIME a(6) a(1)=1 a(2)=1 FOR i=3 TO 6 a(i)=a(i一 1)+a(i一 2) NEXT ?a(6) ( A) 5 (
11、 B) 6 ( C) 7 ( D) 8 28 下列程序段的输出结果是 ACCEPT TO A IF A=123 S=0 ENDIF S=1 ?S ( A) 0 ( B) 1 ( C) 123 ( D)由 A的值决定 29 有以下程序: INPUT TO A S=0 IF A=10 S=1 ENDIF S=2 ?S 假定从键盘输入的 A值是数值型,则程序的运行结果是 ( A) 0 ( B) 1 ( C) 2 ( D) 1或 2 30 在 Visual FoxPro中,如果希望跳出 SCANENDSCAN 循环体外执行ENDSCAN后面的语句,应使用 ( A) LOOP语句 ( B) EXIT语句
12、 ( C) BREAK语句 ( D) RETURN语句 31 在 Visual FoxPro中,过程的返回语句是 ( A) GOBACK ( B) COMEBACK ( C) RETURN ( D) BACK 32 下列程序段执行以后,内存变量 X和 Y的值是 CLEAR STORE 3 TO X STORE 5 TO Y PLUS(X), Y) ?X Y PROCEDURE PLUS PARAMETERS A1 A2 A1=A1+A2 A2=A1+A2 ENDPROC ( A) 8 13 ( B) 3 13 ( C) 3 5 ( D) 8 5 33 下列程序段执行以后,内存变量 A和 B的值
13、是 CLEAR A=10 B=20 SET UDFPARMS TO REFERENCE DO SQ WITH(A), (B) &参数 A是值传递, B是值传递 ?A B PROCEDURE SQ PARAMETERS X1.Y1 X1=X1*X1 Y1=2*X1 ENDPROC ( A) 10 200 ( B) 100 200 ( C) 100 20 ( D) 10 20 34 下列程序段执行时在屏幕上显示的结果是 x1=20 x2=30 SET UDFPARMS TO VALUE DO test WITH x1 x2 ?x1 x2 PROCEDURE test PARAMETERS a, b
14、 X=a a=b b=x ENDPRO ( A) 30 30 ( B) 30 20 ( C) 20 20 ( D) 20 30 35 下面关于过程调用的陈述中,哪个是正确的 ( A)实参与形参的数量必须相等 ( B)当实参的数量多于形参的数量时,多余的实参被忽略 ( C)当形参的数量多于实参的数量时,多余的形参取逻辑假 ( D)当形参的数量多于实参的数量时,多余的形参取逻辑真 36 下面程序的运行结果是: SET TALK OFF n=1 procl(n) ?n+2 PROCEDURE proc 1 PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURN (
15、 A) 3 ( B) 10 ( C) 11 ( D) 12 37 下面程序的运行结果是: SET TALK OFF n=1 DO procl WITH(n) ?n+2 PROCEDURE proc l PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURN ( A) 3 ( B) 10 ( C) 11 ( D) 12 38 如果一个过程不包含 RETURN语句,或者 RETURN语句中没有指定表达式,那么该过程: ( A)没有返回值 ( B)返回 0 ( C)返回 F ( D)返回 T 39 下列程序段执行以后,内存变量 X和 Y的值是 CLEAR STOR
16、E 3 TO X STORE 5 TO Y SET UDFPARMS TO REFERENCE DO PLUS WITH(X), Y ?X Y PROCEDURE PLUS PARAMETERS A1 A2 A1=A1+A2 A2=A1+A2 ENDPROC ( A) 5 8 ( B) 8 13 ( C) 5 13 ( D) 3 13 数据库程序设计模拟试卷 5答案与解析 一、单项选择题 1 【正确答案】 A 【试题解析】 LEFT()函数功能是从字符表达式左端截取指定长度子串; RIGHT()函数功能是从字符表达式有端截取指定长度子串: SUBSTR()函数功能是从字符串指定位置截取指定长度
17、子串。以上三个函数在截取中文时要注意,一个中文字符占 2个长度。 【知识模块】 程序设计基础 2 【正确答案】 B 【试题解析】 选项 A)中的 AT()函数是求子串位置的函数,其函数值为数值型,本选项中函数的返回值为 0;选项 C)中的 ISNuLL()函数是空值 (NuLL值 )测试函数,判断一个表达式的运算结果是否为 NULL值,本选项中函数的返回值为逻辑真,即 T;选项 D)中的 SUBSTR()函数是从指定表达式值的指定起始位置取指定长度的子串作为 函数值,本选项中函数的返回值为 “算 ”;选项 B)“$”是一个子串包含测试运算符,检查第一个字符串的内容是否包含在第二个字符串中,如果
18、包含则返回逻辑真,否则为逻辑假。选项 B)中字符串中包含两个字符串定界符,因此字符串的第二个定界符将视为字符串的一部分, “信息 “”表示的字符串为 “信息 ”,并不包含在第:二个字符串中,所以返回逻辑假 ( F )。 【知识模块】 程序设计基础 3 【正确答案】 C 【试题解析】 本题考查 VFP中的常用函数。取整函数 INT(),计算数值表达式的值,返 回该值的整数部分。 CEILING()函数是上界函数,计算数值表达式的值,返回一个大于或等于该值的最小整数。 FLOOR()函数下界函数,计算数值表达式的值,返回一个小于或等于该值的最大整数。四舍五入函数 ROUND(, ),返回数值表达式
19、 1四舍五入的值,数值表达式 2表示保留的小数位数。 【知识模块】 程序设计基础 4 【正确答案】 A 【试题解析】 是求余运算符,结果的正负号与除数一致。如果被除数与除数同号,那么运算结果即为两数相除的余数;如果被除数与除数异号,则运算结果为两数相除的余数再加上除数的值。 【知识模块】 程序设计基础 5 【正确答案】 B 【试题解析】 选项 A)中的 EMPTY()函数判断表达式的计算结果是否为 “空 ”值,这里 EMPTY( NuL L )的返回值为逻辑假;选项 C)中的 AT()函数是求子串位置的函数,其函数值为数值型,本选项函数的返回值为 0;选项 D)中的 ISNULL()函数是空值
20、 (NULL值 )测试函数,判断一个表达式的运算结果是否为 NULL值,本选项该函数的返回值为逻辑假,即 F;选项 B)中的 LIKE()函数是比较两个字符串对应位置上的字符是否匹配,选项 B)中的两个表达式对应的字符都匹配,其中问号 (?)是通配符,可表示一个任意字符,因此函数返回 T。 【知识模块】 程序设计基础 6 【正确答案】 A 【试题解析】 根据题意,变量 x的值为 “男 ”, LEN()函数用来返同指定字符串的长度,由于一个汉字占两个字符,所以 LEN(x)=2, Y=4。 IIF()是条件测试函数,基本命 令格式如下: IIF(, , ) 其中,测试 的值,若为逻辑真 ( T
21、),则返回 的值,若为逻辑真 ( F ),则返回 的值。 和 的值不要求相同。 本题中,由于 Y=4,所以逻辑表达式 “Y。执行该命令时,如果指定文件存在,则打开修改:否则,建立一个指定名字的程序文件,而程序文件的扩展名是 prg。 App是应用程序的扩展名, exe是可执行文件的扩展名。 【知识模块】 程序设计基础 14 【正确答案】 B 【试题解析】 扩展名为 prg的文件是程序文件,而运行程序文件的命令是 “do程序文件名 ”。 【知识模块】 程序设计基础 15 【正确答案】 C 【试题解析】 利用 DO命令可以执行 prg程序文件、 mpr菜单程序和 qpr。查询程序等。其中程序文件为
22、默认执行的文 件,可省略文件扩展名,而执行菜单文件和查询文件时扩展名不能少。 frx 文件是报表文件,打印报表时可先打开报表文件,然后再单击 “打印 ”按钮打印报表。 【知识模块】 程序设计基础 16 【正确答案】 B 【试题解析】 本题考查建立修改程序文件的命令。在 Visual FoxPro中,程序文件可以通过两种方式建立。 菜单方式:执行【文件】菜单中的【新建】命令,打开程序文件编辑器,然后在编辑器窗口中输入程序内容,最后保存文件。 程序文件的默认扩展名是 prg,如果指定其他扩展名,那么在打 开和执行程序文件时都要显示指定扩展名。 命令方式: MODIFY COMMAND 用于建立或修
23、改程序文件。 【知识模块】 程序设计基础 17 【正确答案】 B 【试题解析】 本题考查用命令创建文件。 CREATE FORM是创建表单文件,CREATE OUERY是创建查询文件。 CREATE VIEw命令是创建视图,其不能建立文件。 【知识模块】 程序设计基础 18 【正确答案】 B 【试题解析】 本题考查向数据库中插入一个记录的 SOL命令 INSERTINTO。 其语法格式如下: 格式 1: INSERT INTO dbf_name(fname1, fname2, ) VALUES(eXpression 1, eXpression2, ) 格式 2: INSERT INTO dbf
24、_name FROM ARRAY ArTayName FROM MEMVAR。 【知识模块】 程序设计基础 19 【正确答案】 A 【试题解析】 DELETE表示逻辑删除,逻辑删除不影响 RECCOUNT()函数的统计结果。 【知识模块】 程序设计基础 20 【正确答案】 C 【试题解析】 For循环中的语句 a(i)=a(i-1)+a(i-2)是指定每个元素的值为它的前两项的和,这个元素必须只能从第 3项开始指定。由于前两项分别是 1、 1,所以数组 a的 8个元素分别是 1, 1, 2, 3, 5, 8, 13, 21:元素 a(7)的值是 13。 【知识模块】 程序设计基础 21 【正确
25、答案】 C 【试题解析】 在用双等号 (=)比较两个字符串时,只有两个字符串完全相同时,运算结果才可能是逻辑真 T,在用单等号 (=)比较两个字符串时,运算结果与SET EXACT ON OFF的设置有关: ON先存较短的字符串的尾部加上若干个空格,使两个字符串的长度相等,然后进行精确比较;当处于 OFF状态时,只要右边字符串与左边字符串的前面部分内容相匹配,即可得到逻辑真 T。根据程序的结构,最后的运行结果为 three。 【知识模块】 程序设计基础 22 【正确答案】 B 【试题解析】 题目给出的程序段中,用到了 DO WHILEENDDO 循环结构。执行该语句时,先判断 DO WHILE
26、处的循环条件是否成直,如果条件为真,则执行 DO WHILE和 ENDDO之间 的命令序列。当执行到 ENDDO时,返回到 DO WHILE,再次判断循环条件是否为真,以确定是否再次执行循环体。若条件为假,则结束该循环语句,执行 ENDDO后面的语句。循环体中还用到了两个算术运算符和,其中是求余运算,是取整运算。根据所给初值和循环条件,可以判断出第一次循环后 y=3, x=7654;第二次后 y=34, x=765;第三次后,y=345; x=76,第四次后 y=3456, x=7:第五次后 y=34567, x=0;第六次对条件 x 0进行判断,结果为似,故退出循环,执行结束,最终 y的值即
27、为 34567。 【知识模块】 程序设计基础 23 【正确答案】 A 【试题解析】 题干中给出的程序功能是将一个整数中的各位数字从个位数开始累加。每次循环中将个位数累加后,将该位从整数中删除,这样原来十位上的数字就成为个位数,直到所有数字累加完毕。其中, MOD(x, 10)语句是得到个位数字, x=int(x 10)语句是将个位数字删除。 【知识模块】 程序设计基础 24 【正确答案】 D 【试题解析】 本题考查的是 DO WHILE循环语句的使用,其中涉及到一个累加的计算,依次对变量 x的值,即 本题中的 12345,从后向前对各位数进行相加,最后输出,即输出 5+4+3+2+1的计算值。
28、 【知识模块】 程序设计基础 25 【正确答案】 D 【试题解析】 本题中的循环条件是在 x值大于零时就进行循环计算 y=x10+y*10和 x=int(x 10)的操作,第一次循环 y=7, x=3456;第二次 y=76,x=345;第三次 y=765, x=34;第四次 y=7654, x=3;第五次 y=76543, x=0。 Y的最终结果时 76543。 【知识模块】 程序设计基础 26 【正确答案】 B 【试题解析】 本题考查对简单的循环语句、 Visual FoxPro操作符及函数的掌握。在此程序中,首先为将变量 x和 Y分别赋值为 34567和 0,然后进入循环。而表示去余数,
29、则 34567 10的结果为 7,并将其值赋给 Y,接下来,将 x值除10取整后的值 (3456)赋值给 x,此时 x的值 0,再次进行循环。此时 Y的值为7,执行 Y=x 10+Y*10语句后, Y的值为 76,而 x的值经除 10取整后,为 345再次进行循环,依次类推,直至 x的值等于 0时退出循环,此时 Y的值为 76543。 【知识模块】 程序设计基础 27 【正确答案】 D 【试题解析】 根据题干中的程序可知,从第 3项开始,各项的数值等于前两项之和,所以 a(3)=2, a(4)=3, a(5)=5, a(6)=8。 【知识模块】 程序设计基础 28 【正确答案】 B 【试题解析
30、】 ACCEPT命令格式: ACCEPTto 当程序执行到该命令时,暂停往下执行,等待用户从键盘输入字符串。当用户以回车键结束输入时,系统将该字符串存入指定的内存变量,然后继续往下执行程序。 程序结构是指程序中命令 或语句执行的流程结构。顺序结构、选择结构和循环结构是程序的三种基本结构。 IFENDIF 语句是选择结构中的条件语句。按照顺序执行的原则无论是否执行 IF语句,语句 S=1赋值语句都会执行。所以本程序段的返回值是 1。 【知识模块】 程序设计基础 29 【正确答案】 C 【试题解析】 本题考查程序的顺序结构和分支结构,基本语法格式如下: IF条件表达式 命令组 ENDIF 在题目的
31、的程序中,如果变量 A的值等于 10,则把 1赋于变量 S,但在条件语句之外又重新定义 S的值为 2,因此, 不管 IF语句是否成立, S的值始终为 2。 【知识模块】 程序设计基础 30 【正确答案】 B 【试题解析】 LOOP和 EXIT都可以出现在循环体内。 LOOP表示结束本次循环,开始下一次循环; EXIT表示结束循环语句的执行,跳出循环执行后面的语句。 【知识模块】 程序设计基础 31 【正确答案】 C 【试题解析】 Visual FoxPro中过程式的返回语句为 RETURN。 RETURN结束当前程序的执行,返回到调用它的上级程序,若无上级程序则返回到命令窗口。 【知识模块】
32、程序设计基础 32 【正确答案】 C 【试题解析】 调用模块程序一般有两种格式: 格式 1通过 DO命令调用,格式2是在过程名或文件名后面加括号,括号中包括若干个实参变量。本题采用的是利用格式 2的方式凋用模块程序。采用格式 2调用模块程序时,默认情况下都以按值方式传递参数,如果要改变传递方法,必须通过 SET UDFPARMS命令进行设置。但是,有一点需要注意,不论是设置何利,传递方式,凡是用括号括起来的实参,全部都是按值传递,它不受 SET UDFPARMS语句的影响。 本题中 x和Y都是按值传递, 形参值的变化不会影响到实参值的, x值等于 3, Y值等于 5。 【知识模块】 程序设计基
33、础 33 【正确答案】 D 【试题解析】 模块程序可以接收程序传递过来的参数,参数传递的方式有两种:按值传递和按引用传递。其中当按值传递时,形参变量值改变时,不会影响实参变量的取值,即形参变量的值不传回;当按引用传递时,形参变量值改变时,实参变量也发生改变。题干中参数 A和 B都是按值传递,不会影响实参变量的取值, A和 B的值不会改变。 【知识模块】 程序设计基础 34 【正确答案】 B 【试题解析】 带参数程序的调用有两种格式: 格式 1: DO WITH, , 格式 2: (实参表 ) (, , ) 采用格式 1调用模块程序时,如果实参是常量或一般形式的表达式,则为按值传递。如果实参是变
34、量,则为按引用传递。该格式不受UDFPARMS值的设置影响。 依据题干, PROCEDURE test实现两个变量的交换。 【知识模块】 程序设计基础 35 【正确答案】 C 【试题解析】 本题考查过程调用 中实参与形参的关系。主要有以下四点: 实参可以是常量、变量,也可以是一般形式的表达式; 调用时,实参传递给形参; 形参数目不能少于实参数目; 形参多于实参时,多余的形参初值为逻辑假。 【知识模块】 程序设计基础 36 【正确答案】 A 【试题解析】 本题考查形参与实参的传递及变量的作用。本题中的 procl(n)模块调用是采用按值传递的方式,形参变量值的改变不会影响实参变量的值,因此, n
35、的值在实参中还是等于 1, n+1的输出结果为 3。 【知识模块】 程序设计基础 37 【正确答案】 A 【试题解析】 本题考查形参与实参的传递及变量的作用。在 DO proclWITH(n)过程调用命令中,变量 n用圆括号括起来的,所以,不管什么情况下,都是按值传递方式,形参变量值的改变不会影响实参变量的值,程序的输出结果为 3。 【知识模块】 程序设计基础 38 【正确答案】 D 【试题解析】 本题考查 RETURN语句的语法。 RETURN语句的返回语句,其功能是返回程序调用处或命令窗口。该语句可省略,因为在每个程序执行的最厉,系统都会自动执行 1个 return语句。 【知识模块】 程序设计基础 39 【正确答案】 D 【试题解析】 本题考查带参数的过程调用,语句 SET UDFPARMS TOREFERENCE语句,表示内存变量是按引用传递。所以实参变量 Y是引用传递, (x)是按值传递。在执行过程 PLUS时, A1=3, A5=5,过程 PLUS运行完后, A1=8, A2=13,因为实参变量 Y是引用传递, (x)是按值传递,所以实参变量 Y的值等 A2=13, x的值等于 3。 【知识模块】 程序设计基础