第一章
一、 选择题
1,D 2,A 3,B 4,B 5,C 6,B 7,C 8,D
本题中所练习的都是本章所学过的基本知识,如果对本章内容掌握较好,对这些简单的问题是不难回答的。 二、 填空题
1、 数据模型不仅表示反映事物本身的数据,而且表示(事物与事物之间的联系) 2、 用二维表的形式来表示实体之间联系的数据模型叫做(关系数据模型) 3、 二维表中的列称为关系的(属性);二维表中的行称为关系的(元组) 4、 在关系数据库的基本操作中,从表中取出满足条件元组的操作称为(选择);把两个关系中相同属
性值的元组联接到一起形成新的二维表的操作称为(联接);从表中抽取属性值满足条件列的操作称为(投影)。
5、 自然联接是指(去掉重复属性的等值联接)
6、 Visual FoxPro一允许在主关键字字段中有重复值或(空值)。 7、 在Visual FoxPro的表之间建立一对多联系是把(一方)的主关键字字段添加到(多方)的表中。 8、 为了把多对多的联系分解成两个一对多联系所建立的“纽带表”中应包含(两个表的主关键字) 9、Visual FoxPro 6.0是(32位)型微机(关系数据库开发系统),它支持标准的面向过程的程序设计方式,还支持(面向对象)程序设计方法。
第二章
一、选择题 1,[D]
分析:内存变量的数据类型包括字符型(C)、数值型(N)、货币型(Y)、逻辑型(L)、
日期型(D)和日期时间型(T)。 2,[B]
分析:日期型常量的严格格式有两个要点:一是要用花括号“{ }”括起来,二是不要忘记写脱字符“^”。 3,[C]
4,[D] 分析:教程第76页表3.7“不同类型数据的“空”值规定“中规定了各种数据类型的空值规定,希望大家把这个表的内容记住,在以后的学习中会带给大家很大的帮助的。 5,[A] 分析:本题是利用运算符的优先级来进行解题。在此我和大家一起来学习一下Visual FoxPro的运算符优先级,在这种语言中共有六种运算符:算术运算符、字符串运算符、日期运算符、关系运算符、逻辑运算符、赋值运算符。其中:算术运算符包括:一元运算符“+”和“-”(也就是正号和负号)、乘方“^“、*、/、和%(乘、除和余数)、+和-(加和减)。字符串运算符包括:+和-(精确连接和非精确连接)。日期运算符包括:+和-(加和减)。关系运算符包括:<、>、=、<=、>=、<>、#、!=、$、== 。逻辑运算符包括:.NOT.或!(逻辑非) 、.AND.(逻辑与)、.OR.(逻辑或)。最后给大家补充一种运算符,那就是前面所提到的赋值运算符:=。 下面我用一个图来表示一下这六种运算符的优先级:
算术运算符 字符串运算符 日期运算符 高 关系运算符
逻辑运算符
低赋值运算符
本题中的题目是:设D=5>6,如果我们没学习运算符的优先级,那么我们无从下手,当我们学习了运 算符的优先级后,可以看到该表达式中有两个运算符:分别是赋值运算符“=”和关系运算符“>”, 根据运算符的优先级我们知道关系运算符的优先级高于赋值运算符,因此先进行关系运算,得到结 果.F.,然后进行赋值运算,把逻辑型数据.F.赋给变量D,因此变量D是逻辑型变量,最后由数据类 型测试函数VARTYPE()进行数据类型测试,得到结果L。因此本题选择答案(A)。
6,[C]、7,[A] 分析:本题练习宏替换函数,为了让大家容易理解:我们利用数据类型函数测试函数 VARTYPE()进行上机演示一下:
启动Visual FoxPro 6.0,在命令窗口中依次输入如下命令并按回车执行: N=886
? VARTYPE(N) M=345
? VARTYPE(M) K=“M+N” ? VARTYPE(K) ? K ? &K
? VARTYPE(&K) ? 1+&K
下图是上述命令在Visual FoxPro 6.0界面中运行的情况:
从上机操作结果我们可以看到:变量M和变量N的数据类型都是数值型(N),变量K的数据类型是字符型(C),对变量K使用宏替换函数后,它的数据类型变成了数值型,这是为什么呢?这就是宏替换函数的灵活性,宏替换函数的作用就是把字符串变量中的内容作为“宏”替换出来,那么什么叫做宏呢?在计算机语言中宏是一个应用非常广泛的概念,简单地说宏就是一串字符串,但它并不是实际意义上的字符串,也就是说它看起来是字符串,但在程序中不一定作为字符串来使用,在不同的条件下它的数据类型会不同,例如在本题中&K的结果是1231,这个结果是怎么来的呢?是因为宏替换函数将变量K中的字符串“M+N”替换出来,此时的M+N不再是字符串了,而是一个算术表达式,由于我们在前面的赋值语句中已经对M和N分别赋值,因此经过计算以后,就得出了1231这个结果。
下面我们再来看一下本章习题中第三大题的第二题: X=STR(12.4,4,1) Y=RIGHT(X,3) Z=”&Y+&X” ? Z,&Z
大家不妨将本题上机操作一下,结果是什么呢?结果是:2.4+12.4 14.80 这又是怎么得出来的? 为什么,Z是2.4+12.4而不是这两个数的和呢?原因就是在&Y+&X的两边有引号定界符“和”,而在引号定界符下是字符串,因此在这里变量Z是一个字符变量,在这里2.4+12.4是一个字符串,而不是一个算术表达式。而&Z的结果为什么是14.8呢?这还是因为宏替换函数的作用,因为现在&Z的两边不再有引号定界符,现在&Z的结果是一个算术表达式,而不是一个字符串,是算术表达式就应该有结果,计算后结果是14.8。怎么样,宏替换函数灵活吧!,在以后的内容中它还有更灵活的用途。 8、本题所提供的四个供选择的答案都是错误的。正确的答案应当是0.00,因为题中的取子串函数表达式SUBS(”奔腾 586”,5,1)的结果是一个空串,经函数VAL()转换后结果是0.00。求字符串长度表达式LEN(“Visual FoxPro”)的结果是13。最后两个表达式结果相乘得出答案是0.00。大家可以将本题上机操作一下,看一下结果。在命令窗口中输入:
? VAL(SUBS(“奔腾 586”,5,1)*LEN(“Visual FoxPro”)
回车执行即可得出结果。
我想出现这种结果的原因可能是印刷排版错误,如果本题中的”奔腾”和586之间的空隙不看成是空格, 那么答案就应该是65.00。总之这一道题的答案值得推敲,这需要大家上机进行各种可能的验证。
针对这道题我还要给大家解释一下:题目中将取子串函数SUBSTR()写成SUBS(),这是Visual FoxPro中为了提高输入和编译效率而默认的书写格式,任何大于四个字符的函数名,只写前四个字母就可以识别并编译。
9、[D],分析:当字符串比较时,分为三种情况,第一种情况是精确比较,比较运算符是“==”,这种情况的两个字符串必须完全相同。结果才能为.T.,其余情况均为.F.。
第二种情况是当SET EXACT 设置为OFF时,这时,比较运算符右端的字符串与左端的字符串前面部分相同即可得到结果.T.。也就是说,在比较时从两个字符串的左端逐一字符比较,如果右端的字符串是左端字符串的一个子串、或者完全相等结果就为.T.。
第三种情况是在较短的字符串尾部加上空格,再进行比较。也就是说从两个字符串的左端逐一字符比较,无论左端的字符串是右端字符串的子串,还是右端字符串是左端字符串的子串,或者完全相等这三种情况结果都为.T.。其他情况都为.F.。本题中SET EXACT 设为OFF,我们根据第二种情况进行比较, “A”=X,结果为.F.因此条件测试函数得出结果为:A BCD。如果本题将SET ECACT 设置为ON,答案就是[C] 大家不妨上机验证一下。 二、填空题
1,[337.201]、2,[15]、3,[字符型]、4,[D和C]
这里我给大家提醒一下:DATE()、TIME()、DATETIME()这三个函数的数据类型分别是:日期型、字符型和日期时间型,TIME()虽然函数值是系统时间,但要注意它的函数值是字符型的。 三、上机题
1.假定系统当前日期是2002年9月21日,则结果为:今天是:2002年9月21日 假定系统当前日期是2002年10月1日,则结果为:今天是:2002年10月01日 2. 2.4+12.4 14.80
3. 7 586个人计算机 奔腾586个人计算机 奔腾586个人计算机 4. 5 100.00 88991
5.假定系统当前日期是2002年9月21日,则结果为:2002年9月21日
第四章
一、选择题 1,[D] 分析:在Visual FoxPro 中,打开表的命令是 USE table name。打开数据库的命令是 OPEN DATABASE database name。大家不要认为打开表的命令是 USE tablename 而误认为打开数据库的命令是 OPEN database name。正确的命令格式是在OPEN后面加上DATABASE后再加上数据库的名字。 2,[D] 3,[D] 4,[C] 5,[C] 二,填空题
1,实体完整性 2,主 普通 3,SET RELATION TO eExpression1 INTO nWorkAreal1|cTableAlias1 4,逻辑表达式 5,32767 三,上机题
为了大家今后做练习方便,我们要为自己设置一个默认的文件夹MYVFP,这个文件夹不要放在系统盘中,一般我们放在D盘中,大家当然也可以放在自己常用的驱动器中,我们先在电脑的D盘中新建文件夹MYVFP 然后我们启动Visual FoxPro 6.0 ,单击“工具”菜单下的“选项”命令,弹出“选项”对话框,选中“文件位置”选项卡。如下图所示:
单击这里
单击列表框中的的“默认目录”,再单击选项卡右下角的 弹出“更改文件位置”对话框
选中对话框左下角的复选框“使用默认目录”
单击这里