第二章 VFP语言基础
- 格式:doc
- 大小:75.00 KB
- 文档页数:13
第二章VFP语言基础2.1 程序设计概述1. 程序设计方法简介2.数据类型VFP 包含下列数据类型:3. 数据容器VFP中用来存储数据的容器有:常量、变量、数组、记录和对象。
(1)常量(constants):一个在操作过程中保持不变的数值或字符串。
常用的常量类型(2)变量(variables):是内存中的一个存储单元的位置,其中的内容可以变化,但标识该存储位置的名称(即变量名)不变。
变量的命名习惯:类型变量代号如:cStud 、nCj 、dCsrq ——分别代表一个字符型、数值型、日期型的变量名变量的赋值方式:1)用STORE 命令如:STORE "王兰" TO cStud2)用赋值操作符= 如:cStud = "王兰"变量的作用域: 即变量起使用的有效范围。
变量的访问:当变量和字段同名时,字段有优先被访问权。
要在变量名前加m. 或m -> 以示区别,如m.cStud(3)数组(array):是存储在一个变量中由单个变量名引用的有序数据集合。
在VFP中,一个数组中的数据不必是同一种数据类型。
常用的有一维数组,二维数组。
数组元素的标识:通过一个数值下标来引用,如AA[2],AA[2,3]数组类型的声明:私有数组——用DECLARE 或DIMENSION定义全局数组——用PUBLIC命定义局部数组——用LOCAL定义数组元素的赋值:用赋值语句:如AA=45用SCATTER从当前记录中取特定字段的值赋给数组:如:scatter fields xh, xm, xb to aa(数组长度、类型自动与所给字段相同)用COPY TO ARRAY从当前记录中取所有字段的值赋给数组:如:copy to array aa(数组长度、类型自动与表中全部字段相同)把数组中的数据传给当前表中的当前记录:gather from 数组名[fields 字段名表]用数组向当前表添加记录:append from array 数组名[for 条件] [[fields 字段名表](用二维数组可以同时添加多条记录)数组处理的常用函数:排序SORT(),搜索ASCAN(),删除ADEL(),插入AINS()(4)记录:表中的一行,由字段组成。
第二章VISUAL FOXPRO 基础2.1 数据类型数据类型就是对数据的允许取值以及值的范围进行的说明。
使用场合:字段(表文件特有),内存变量,常量数据类型:(1)字符型(C)最多254个字符组成(2)数值型(N)由数字,小数点和正负号组成。
最多允许输入20位数字,其精度可精确到15位。
(3)日期型(D)表示一个日期,长度固定为8个字节(4)日期时间型(T)表示时间和日期,长度固定为8个字节。
(5)逻辑型(L)二值类型,用于描述只有两种可能的逻辑量,如是/否,失败/成功,合格/不合格,男/女等(6)货币型(Y)表示货币值,长度固定为8个字节。
前面加$,小数点后保留四位小数如:$123.0177(7)备注型(M)也称记事型。
用于把数据中较大的文本块以固定格式存放在此类型的字段中。
弥补字符型数据长度不能超过254个字符的限制。
(8)通用型(G)存放由其他应用程序传来的数据,其传媒为剪贴版。
可存放照片、声音等多媒体信息。
(9)整型(N)4个字节,不带小数(10)浮点型(F)等价于数值型(11)双精度型(N)存放精度较高,位数固定的数值。
(12)二进制字符型(13)二进制备注型2.2常量与变量1.常量(常数):一个具体的值.5种类型的常量:(注意:区别于表内数据的表示方法)(1)数值型常量:整数或实数例如:45,456.12等(2)字符型常量:由定界符括起来的由字符,汉字,空格或数字所组成的字符串。
定界符: 双引号或单引号或方括号注意:①定界符一定要在英文输入法或者中文输入法的英文标点符号、半角(默认)的状态下输入。
例:”ABCD”, …1234‟, [数据库]②定界符内的字符只是简单的字符标识例:?‟3+4‟③当某一种定界符本身是字符型常量的组成部分时,应选用另一种定界符来表示该字符串。
(3)逻辑型常量只有两个值,.T. 或.F. ,长度为1注意:两边一定要加点(只要不在表里,这两个逻辑值都要加点)(4)日期型常量:必须用花括号和^括起来,长度固定为8个字节例如:{^2004/07/08 } 或者{^2004-07-08 }(5)日期时间型常量:包括日期和时间的合成。
第二章VFP语言基础一、选择题:1.下列四个函数或表达式中,返回值(或计算结果)的数据类型为字符型的是________A. DISKSPACE()B.BETWEEN()C.[^2014-3-20]-[^2000-3-20]D.DOW(DATE())2.人事档案数据库,内容较多的个人简历应用________字段较为合适A. 数值型B. 字符型C. 备注型D. 逻辑型3.以下关于NULL值说法错误的是________A.NULL值等价于没有任何值B. NULL值与0,空字符串("")及空格相同C.NULL值排序优先于其他数据D. 在计算过程中或大多数函数中都可以用到NULL值4.在Visual?FoxPro中,?对于字段值为空值(NULL)叙述正确的是________A. 空值等同于空字符串B. 空值表示字段还没有确定值C. 不支持字段值为空值D. 空值等同于数值05.逻辑表达式.NULL. OR .F.的计算结果为________A.NULLB. F.C.0D.产生错误6.在Visual FoxPro 系统中,下列命名中不能作为变量名的是________ 。
A. 2014 姓名B. 姓名C. 姓名2014D. _2014 学生7.以下名称命名不合法的是________A. 2xB. x_2C. nvar2D._aver_gz8.下列数据中,不是常量的是________?A. NAMEB."年龄"C. "91/01/02"D.T.9.在VFP中,下列字符型常量"thank you"表示法中,错误的是________?A. "thank you"B. 'thank you'C. (thank you)D. [thank you]10.在Visual FoxPro 中,根据变量的作用域来分,内存变量可分为________A. 字段变量、数组变量和局部变量B.字段变量、数组变量和私有变量C. 数组变量、局部变量和全局变量D.私有变量、局部变量和全局变量11.STROE 1 TO A,B,C,D的结果是________?A. 使A,B,C,D四个变量的值都为1B. 只使A值为1,其它变量的值为OC. 只使A的值为1,其它变量的值为FD. 只使A的值为.F.,其它变量的值为112.以下赋值语句正确的是________?A.STORE 10 TO X,YB.STORE 10,1 TO X,YC.X=10,Y=1D.X,Y=1013.关于内存变量的调用,下列说法错误的是________A. 在程序中直接使用而由系统自动隐含建立的变量都是私有变量B. 私有变量能被本层模块和下层模块程序调用C. 全局变量需要先定义才能使用,而局部变量可直接使用D. 局部变量能只能被本层程序调用14.如果内存变量和字段变量均有变量名“姓名”,那么引用内存变量的正确方法是________A. M.姓名B. M->姓名C. 姓名D. A和B都可以15.在Visual FoxPro 中,如果希望一个内存变量只限于在本过程中使用,说明这种内存变量的命令是________A. PUBLICB. P RIV A TEC. LOCALD. 在程序中直接使用的内存变量(不通过选项A)、选项B)、选项C)说明)16.设变量dd=253.141592,执行命令?ROUND(dd,3)的显示结果是________A. 253.142B. 253.141C. 253.140D. 253.141617.以下有关数组的叙述中,错误的是________A. 可以用一维数组的形式访问二维数组B. 在同一个环境下,数组名可以与简单变量名重复,两者没有影响C. 在可以使用简单内存变量的地方都可以使用数组元素D. 一个数组中各元素的数据类型可以相同,也可以不同18.使用DECLARE命令定义数组后,各数组元素在没有赋值之前的数据类型是________?A. 无类型B. 字符型C. 数值型D. 逻辑型19.用DIMENSION a(2,3)命令定义数组a后再对各元素赋值:a(1,2)=2,a(1,3)=3,a(2,1)=4,a(2,2)=5,a(2,3)=6,然后再执行命令?a(5),则显示结果是________A. F.B. 变量未定义C. 3D. 520."father" $ "grandfather"的运算结果为________A. T.B.F.C.6D. 021.2**2-15%4的运算结果为________A.1.00B. -1.00C. 3.00D. -3.0022.{^2008/05/10}>{^2008/06/10}的运算结果为________A.T.B. F.C. 0D. 123."AB"$"ABCD"的运算结果为________A.1B. T.C. F.D. 024.进行字符串比较时,使命令:?“我们大家”=“我们”,结果为逻辑假的设置是________A. SET EXACT ONB.SET EXACT OFFC. SET COLLATE TO"Machine"D. SET COLLATE TO "Stroke"25.执行命令SET COLLATE TO "Machine"之后,如下4个字符串"ABC","abcd","ABCDE"及"af"中的最大者为________A."ABC"B. "abcd"C. "ABCDE"D. "af"26.abs(30-10)的运算结果为________A.10B. 20C. 30D. F.27.store 40 to gnnumber1;store 2 to gnnumber2;abs(gnnumber2-gnnumber1)的运算结果为________A.38B. -38C. 42D.f28.MOD(24,-5)的计算结果是________A.5B. 0C. -1D. 129.round(1234.156, 2)的计算结果是________?A.1234B.1234.16C.1234D. 1234.1530.函数INT(12.25*2) 的返回值是________ 。
A.12B. 25C. 25.5D. 2631.函数MOD(23,-5) 的返回值是________ 。
A.-3B. 3C. -2D. 232.cvar=" vfp 6.0 ";trim(cvar)的运算结果为________A." vfp 6.0"B. "vfp 6.0"C. "vfp 6.0 "D. "vfp6.0"33.cvar="abcd";len(cvar+"123")的运算结果为________A.3B. 127C. 7D. 134.left('abcdef ', 4)的运算结果为________?A. "abcdef"B. "abcd"C. "cdef"D. 435.right('abcdef ', 4) 的运算结果为________?A. "abcdef"B. "abcd"C. "cdef"D. 436.atc("ab","ABC")的返回结果为的运算结果为________A.1B. 0C.f.D. 337.?like("ab*","abcde")的返回结果为________A.1B. T.C. F.D. 038.下列函数中,函数值是“奥运会”的是________A. SUBSTR("2008 奥运会",5,6)B. SUBSTR("2008 奥运会",6)C. RIGHT("2008 奥运会”,1,6)D. LEFT("2008 奥运会",6)39.STR(102.36,8,3)+SUBS(“12A1”,3,2)的结果是________A.102.362A1B. 102.36A1C. 102.360A1D. 102.3612A140.在下列4个函数中,返回值为字符型数据的是________A.TTOC()B.V AL()C. DOW()D. FILE()41.使用命令创建一个表或修改表结构时,字段的数据类型可以使用单个字符表示.例如,数据类型为“货币型”,应使用字符________表示。
A.YB. FC. BD. M42.STORE ({^2008-11-12 04:59:23 PM}) TO T;SEC(T)的返回结果为________A.4B. 16C. 59D. 2343.STORE {^2008-11-12} TO D;YEAR(D)的返回结果为________A.DB. 2008C. 11D. 1244.x=100;y=300;if(x>100,x-50,x+50)的结果为________A. 100B. 300C. 150D. .f.45.下列选项中不能返回逻辑值的是________A. EOF()B. BOF()C. RECNO()D. DELETEED()46.store .null. To x;x, isnull(x)的返回结果为________A. null. .t.B. t. .null.C. .null. .null.D. .t. .t.47.STORE "2.25E3" TO C;3*V AL(C)的结果为________A. 6.75B. 6750C. 6750.00D. 2.2548.type("1+1=3")的返回结果为A. DB. CC. ND. L49.?DTOC({^2006/08/01})+"是我的生日" 的返回结果是________A. "08/01/06是我的生日"B. "20060801是我的生日"C. "2006/08/01是我的生日"D. "06/08/01是我的生日"50.在下列函数中,函数的返回值为数值型的是?A. TYPE()B. EMPTY()C. DTOC()D. MESSAGEBOX()51.在Visual FoxPro系统中,下列返回值是字符型的函数是________.A. V AL()B. DA TETIME()C. CHR()D. MESSAGEBOX()52.设N=44,M=55,K=N+M,表达式1+&K的值是________A. 4456B. 100C. 1+M+ND. 数据类型不匹配53.在下面的表达式中,运算结果为逻辑真的是________A.LIKE("edit","edi?")B.EMPTY(.NULL.)C.AT("a","123abc")D.EMPTY(SPACE(200))54.在下列函数中,函数值为数值的是________A.BOF()B.CTOD('01/01/96')C.A T('人民’,‘中华人民共和国’)D.SUBSTR(DTOC(DATE()),7)55.以下不是VFP的合法表达式的是________A."学">"生"B. "学"+"生"C. "学"-"生"D. "学".or."生"56.在下面的Visual FoxPro表达式中,运算结果不为逻辑真的是________?A.EMPTY(SPACE(0))B.LIKE("xy*","xyz")C. AT("xy","abcxyz")D.ISNULL(.NULL.)57.以下表达式中不能返回字符串值“FoxPro”的是________?A.“Fox” + “Pro”B.TRIM(“Fox ” –“Pro”)C.ALLTRIM (“ Fox” + “Pro”)D.“Fox ” - “Pro ”58.在Visual FoxPro系统中,表达式LEN(DTOC(DA TE________,0))的值为________A.4B. 6C. 8D. 1059.设n=234,m=432, k="m+n",表达式1+&k的值是________A. 667B. 234433C. 234D. 43260在下面的Visual FoxPro表达式中,不正确的是________?A.{^2008-05-01 10:10:10 AM}-100B.{^2008-05-01}-DA TE()C.{^2008-05-01}+DA TE()D.{^2008-05-01}+10061.在下面的表达式中,运算结果为逻辑真的是________A.LIKE("AB*","ABCD")B.LIKE("ABC","AB")C.AT("A","BCDEF")D.EMPTY(.NULL.)62.执行以下命令的s2的结果为________s1="2008年奥运会祝贺中国成功举办"s2=substr(s1,13,8)+right(s1,4)+left(s1,12)+substr(s1,21,4)A. 祝贺2008年奥运会中国成功举办B. 祝贺2008年奥运会中国成功举办C. 祝贺中国举办2008年奥运会成功D. 祝贺中国2008年奥运会举办成功63.在下列表达式中,运算结果为数值的是________A. [8888]-[122]B.LEN(SPACE(5))-1C.CTOD("04/05/99")-30D. 800+200=100064.下列程序段的执行结果是________ DIME a(8) a(1)=1 a(2)=1 for i=3 to 8 a(i)=a(i-1)+a(i-2) next ?a(7)A. 5B. 8C. 13D. 2165.下面程序的运行结果是________ SET EXACT ON s="ni"+SPACE(2) IF s= ="ni" IF s="ni" "one" ELSE "two" ENDIF ELSE IF s="ni" "three" ELSE "four" ENDIF ENDIF RETURNA. One B . two C. three D. four66.下列程序段执行以后,内存变量y的值是________ x=76543 y=0 DO WHILE x>0 y=x%10+y*10 x=int(x/10) ENDDOA. 3456B. 34567C. 7654D. 7654367.下列程序段执行以后,内存变量y的值是________ x=12345 y=0 DO WHILE x>0 y=x%10+y*10 x=int(x/10) ENDDOA. 345B. 3456C. 54321D. 7654368.下面程序计算一个整数的各位数字之和,在下划线处应填写的语句是________ SET TALK OFF INPUT "x=" TO x s=0 DO WHILE x!=0 s=s+MOD(x,10) ________ ENDDO s SET TALK ONA. x=int(x/10)B. x=int(x%10)C. x=x-int(x/10)D. x=x-int(x%10)69.下列程序段执行以后,内存变量y的值是________ CLEAR x=1234 y=0 DO WHILE x>0 y=y+x%10 x=int(x/10) ENDDO yA. 54321B. 1234C. 51D. 1570.下列程序段执行时在屏幕上显示的结果是________ DIME a(6) a(1)=1 a(2)=1 FOR i=3 TO6 a(i)=a(i-1)+a(i-2) NEXT ?a(6)A. 5B. 6C. 7D. 871. 下列程序段执行时在屏幕上显示的结果是________ x1=20 x2=30 SET UDFPARMS TOV ALUE DO test WITH x1,x2 xl,x2 PROCEDURE test PARAMETERS a,b x=a a=b b=x ENDPROA.30 30B. 30 20C. 20 20D. 20 3072.下面关于过程调用的陈述中,哪个是正确的________A. 实参与形参的数量必须相等B. 当实参的数量多于形参的数量时,多余的实参被忽略C. 当形参的数量多于实参的数量时,多余的形参取逻辑假D. 当形参的数量多于实参的数量时,多余的形参取逻辑真73.下面程序的运行结果是________ SET TALK OFF n=1 proc1(n) ? n+2 PROCEDURE proc1 PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURNA. 3B. 10C. 11D. 1274.下面程序的运行结果是________ SET TALK OFF n=1 DO proc1 WITH (n) ? n+2 PROCEDURE proc1 PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURNA. 3B. 10C. 11D. 1275.如果一个过程不包含RETURN语句,或者RETURN语句中没有指定表达式,那么该过程________A. 没有返回值B. 返回0C. 返回.F.D. 返回.T.76.下列程序段执行以后,内存变量X和Y的值是________ CLEAR STORE 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 ENDPROCA. 5 8B. 8 13C. 5 13D. 3 1377.下列叙述中正确的是________A. 算法就是程序B. 设计算法时只需要考虑数据结构的设计C. 设计算法时只需要考虑结果的可靠性D. 以上三种说法都不对78.假设当前表、当前记录的“科目”字段值为“计算机”(字符型),在命令窗口输入如下命令将显示结果________ m=科目-"考试" mA. 计算机B. 考试C. 计算机考试D. 计算机考试79.下面关于过程和函数调用的陈述中,哪个是正确的________A. 过程调用参数默认传递方式是值传递B. 函数调用参数默认传递方式是值传递C. 过程调用参数传递时在实参前加“@”强制设为值传递D. 函数调用参数传递时在实参前两边加“()”强制设为值传递80.在DO WHILE…ENDDO 循环结构中LOOP 语句的作用是________A. 该语句在DO WHILE…ENDDO 循环结构中不起任何作用B. 转移到DO WHILE 语句行,开始下一次判断和循环C. 终止循环,将控制转移到本循环结构ENDDO 后面的第一条语句继续执行D. 退出循环,返回到程序开始处81.在SCAN…ENDS 循环结构中LOOP 语句的作用是________A. 该语句在循环结构中不起任何作用B. 转移到SCAN 语句行,开始下一次判断和循环C. 终止循环,将控制转移到本循环结构ENDS 后面的第一条语句继续执行D. 退出循环,返回到程序开始处82.不属于程序三种基本控制结构的是________A. 顺充结构B. 分支结构C. 循环结构D. 逻辑结构83.在程序中执行命令________ 将退出VFP返回到操作系统A. RETURNB. CANCELC. QUITD. EXIT84.内在变量按其在程序中的使用范围分类不可能是________A. 私有变量B. 全局变量C. 局部变量D. 循环变量85.下列语句中,可给内存变量赋值的语句是________A. REPLACEB. W AITC. QUITD. ACCEPT86.下列语句中,不是输出语句的是________A. ?B. W AITC. ??D. ACCEPT87.下列语句中,是VFP输出语句的是________A. REPLACEB. WAITC. QUITD. ACCEPT88.用W AIT命令给内在变量输入数据时,内存变量所获得的数据是________A. 任意长度的字符串B. 一个字符串和一个回车符C. 数值型数据D. 一个字符89.不能将LOOP作为有效命令使用的程序控制语句是________A. FOR ENDFORB. SCAN ENDSCANC. DO CASE ENDCASED. DO WHILE ENDDO 90在下面的DO循环中,一共要循环________次M=5 N=1 Do while n<=m N=n+1 EnddoA. 1B. 6C. 4D. 591.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2592.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2593.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2594.下列程序的运行结果为________ Store 0 to x,y Do while X<5 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=6C. y=4D. y=395.下列程序运行后,屏幕上显示的数据为________ CLEAR STORE "ABCDEF" TO C CC=SPACE(0) FOR I=1 TO LEN(C) CC=SUBSTR(C,I,1)+CC ENDF ?CCA. ABCDEFB. FEDCBAC. ABCD. DEF96.下列程序运行后,屏幕上显示的数据为________ CLEAR STORE "12AB315" TO C CC=SPACE(0) FOR I=1 TO LEN(C) CC=SUBSTR(C,I,1)+CC ENDF ?CCA. 12B. AB315C. 513BA21D. BA2197.下列程序运行后,屏幕上显示的第3行数据为________ CLEAR For i=4 to 15 If i=int(i/4)*5 ?i Endif EndforA. 5B. 10C. 15D. 2098.下列程序运行后,屏幕上显示的数据为________ CLEAR M=”WUD”N=space(0) For i=1 to len(m) J=ASC(substr(m,I,1)) N=n+chr(j-2) Endf ?nA. ABCB. DEFC. USBD. WYZ99.下列程序运行后,进入死循环,要想退出死循环应按键盘上的________ 键DO WHILE .T. ?RAND________ ENDDOA. ENTERB. ESCC. F1D. CTRL100.下列程序运行后,屏幕上显示的数据为________ CLEAR S=0 FOR I=1 TO 10 STEP 2 IF MOD(I,3)=0 S=S+I ENDIF ENDFOR ?SA.12B. 14C. 16D. 18二、填空题:1. 备注型字段的符号表示为________2. 日期型字段的符号表示为________3. 货币型字段的符号表示为________4. 通用型字段的符号表示为________5. 备注型与通用型字段的宽度固定为________.6. 日期型字段的宽度固定为________.7.表达式{^2000/09/18}-{^2000/09/20}的值为________.8.运行下列程序后,显示结果为________.CLEARy=dtoc(date________,1)y=.null.?type("y")9.运行下列程序后,显示结果为________.CLEARy=.null.?type(""y"")10.运行下列程序后,显示结果为________.CLEARi=0n=0do while i<=6if mod(i,2)=0n=n+1endifi=i+1enddo?n11.运行下列程序后,显示结果为________.CLEARi=0y="22222222"for i=1 to len(y)x=left(y,i)?space(20-2*i)+x+"*"+x+"="+alltrim(str(val(x)*val(x))) endfor?12.执行下列程序,显示的结果是________.one="WORK"two=""a=LEN(one)i=ado while i>=1two=two+substr(one,i,1)i=i-1enddo?two13.两个日期型数据相减得到的数据类型为________型。