VFP复习题第5章.doc
第五章一、填空 共64题 (共计64分)第1题 (1.0分) 题号:309以下程序的功能是将英文字母组成的字符串加密.加密的算法是:如果是大写字母,用原字母后面的第4个字母代替原字母,否则用原字母后的第2个字母代替原字母,如原文"China",加密后的密文是"Gjkpc",完善下列程序:m=space(0)c="China"for i=1 to 【len(c)】 nc=asc(substr(c,I,1) if nc>64 【and】 nc<91 &&该字母的ASC值在64之91之间,表明该字母是大写 m=m+【chr(nc+4)】 else m=m+chr(nc+2) endifendf第2题 (1.0分) 题号:1178完善下列程序,其功能是显示如下所示的文字图形. 金 字字 大大大 宝宝宝宝 塔塔塔塔塔 【程序清单】 CLEAR c="金字大宝塔" n=LEN(c)/2 FOR i=1 TO n ?SPACE(70-i) FOR j=1 【TO i】 ? SUBS(C,2*i-1,2) =INKEY(0.5) ENDFOR ENDFOR第3题 (1.0分) 题号:1273请写出x的值【30】,y值是【-2】 X=26 y=0 if int(x/2)=x/2 y=mod(x,3) x=x+4 endif if int(x/3)=x/3 y=Mod(x,-4) endif ? x,y第4题 (1.0分) 题号:291如果当前日期是2000年4月1日,并且命令 ?date()在屏幕上返回 04/01/00, 则命令行 ?date()+10在屏幕上返回的值为【04/11/00】第5题 (1.0分) 题号:294已知N="1",M="2",X12="GOOD",则表达式X&N&M的值为【GOOD】第6题 (1.0分) 题号:307已知有三个文件分别程序文件、查询文件、表单文件,文件名都是a,请问运行程序文件的命令是【do a】、运行查询文件的命令是【do a.qpr】、运行表单文件的命令是【do form a】第7题 (1.0分) 题号:1206执行下列程序后,输出到屏幕的结果为【3】。 【程序清单】 CLEAR cstring="VisualFoxPro" nresult=0 m=LEN(cstring) FOR n=1 to m c=SUBSTR(cstring,n,1) IF !BETWEEN(ASC(c),ASC("A"),ASC("Z") LOOP ENDIF nresult=nresult+l ENDFOR ?nresult 第8题 (1.0分) 题号:1179完善下列自定义函数STR_RV(),其功能是将一个字符串(假设所有字符均为ASCII和GB2312字符集中的字符)进行"反序".例如,STR_RV("ABCD")的返回值为"DCBA". 【程序清单】 FUNCTION str_rv() PARAMETERS c P=SPACE(O) DO WHILE LEN(C)>0 x=ASC(【LEFT(c,1)】) IF x>127 &&ASCII码值大于127的字符为汉字(x为半个汉字的机内码) i=2 ELSE i=1 ENDIF P=LEFT(C,i)+P C=SUBSTR(c,i+1) ENDDO 【RETURN P】 ENDFUNC第9题 (1.0分) 题号:281完善程序题.下列程序的功能是统计一个字符串中各个字符的个数(假设字符串仅由大写英文字母A,B,C,D组成):cStr='AABBDDCABCDAADBCAACCDDDDBB' &&字符串赋初值STORE 0 TO nA,nB,nC,nD, &&计数变量for i=1 to 【len(cStr)】 C=LEFT(【cStr,1】) do case case C="A" nA=nA+1 case C="B" nB=nB+1 case C="C" nC=nC+1 case C="D" nD=nD+1 【ENDC】EndF第10题 (1.0分) 题号:303在Visual FoxPro中,基类的事件集合是固定的,不能进行扩充.基类的最小事件集包括Init 事件、Destroy 事件和【error】事件第11题 (1.0分) 题号:1251完善下列程序,是程序的结果如下图所示 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 788=56 7*9=63 8*8=64 8*9=72 9*9=81 *程序* CLEAR FOR i=1 TO 9 FOR j=1 TO 9 If i<=j ? STR(I,1)+"*"+STR(j,1)+"="+【str(i*j,2)】 +SPACE(2) ENDIF ENDFOR 【?】 ENDFOR第12题 (1.0分) 题号:286如果2002年3月18号是星期一,则以下命令在屏幕上显示【2】x=2002/03/18?dow(x)第13题 (1.0分) 题号:1177执行以下程序段后,屏幕显示的运行结果为【15】 . 【程序清单】 CLEAR x=12 Do WHILE .T. x=x+1 IF x=INT(x/4)*5 ?x ELSE LOOP ENDIF IF X>10 EXIT ENDIF ENDD0第14题 (1.0分) 题号:302已知在命令行输入 ?at("e", "Hello everyone!",3)其返回值为9,则?at("e", "Hello everyone!",2)返回值为【7】第15题 (1.0分) 题号:289下面程序执行以后,屏幕上显示【.f.】x=.t.y=.f.z=not(x and (y or x)?z第16题 (1.0分) 题号:1290使程序的运行结果如下所示: 1*9+2=11 12*9+3=111 123*9+4=1111 1234*9+5=11111 12345*9+6= *9+7= *9+8= *9+9= *9+10=完善下列程序: SET TALK OFF CLEAR x=space(0) For i=1 to 【9】 x=x+allt(str(i) ?STR(VAL(x)+"*9+"+ 【str(I+1 )】 +"="+ ALLT(STR(VAL(x)*9+ i+1) ENDFOR第17题 (1.0分) 题号:274使用LOCAL、PRIVATE和PUBLIC关键字可以指定变量的作用域.在命令窗口中创建的任何变量或数组均为【全局】性变量.第18题 (1.0分) 题号:277函数LEN(STR()的返回值为【10】,函数LEN(DTOC(DATE()的返回值为【8】第19题 (1.0分) 题号:1335下面有两段程序代码,它们的功能【相同】(注:答"相同"或"不相同").【程序一清单】nSum=0p=1FOR i=1 TO 10p=p*inSum=nSum+pENDFOR?nSum 【程序二清单】nSum=0FOR i=1 to 10nSum=nSum+fJC(i)ENDFOR?nSumFUNCTION fJCPARAMETERS xp=1FOR n=1 TO x p=P*nENDFORRETURN pENDFUNC 第20题 (1.0分) 题号:282完善程序题.下列自定义函数DeleteSpace()的功能是将一个字符串中的所有空格删除:FUNCTION DeleteSpacePARAMETERS cStrcResult=SPACE(0)FOR n=1 TO 【len(cstr)】 IF SUBSTR(cStr,n,1)=SPACE(1) 【loop】 ENDIF cResult=cResult+SUBSTR(cStr,n,1)ENDFORRETURN 【cResult】ENDFUNC第21题 (1.0分) 题号:1271完善下列程序,其功能是统计一个仅由数字组成的字符串中各种数字字符的个数: Clear cStr="" Store 0 To n0,n1,n2,n3,n4,n5,n6,n7,n8,n9 Do while Len(cStr)>0 C=Left(cStr,1) n&C=【n&c.+1】 cStr=【SUBS (cStr,2)】 Enddo ? n0,n1,n2,n3,n4,n5,n6,n7,n8,n9第22题 (1.0分) 题号:1230以下程序产生1000个0-100之间的随机整数,并且统计互不相同的数据个数. CLEAR n=1000 DIMENSION x(n),p(n) &&数组P用于存储数是否相同的标识 FOR i=1 T0 n x(i)=INT(RAND()*100) ENDFOR s=O FOR i=1 T0 n-1 FOR j=i+l TO n IF x(i)=x(j) p(i)=.T. 【Exit】 ENDIF ENDFOR ENDFOR FOR i=1 TO n IF !p(i) s=s+1 ENDIF ENDFOR ?s第23题 (1.0分) 题号:1272实现如下表达式的和:1+3+5+7+9+11,请完善如下程序:s=0 For I=1 to 11 if mod(I,2)=0 【LOOP】 EndIf s=s+i EndFor ?s第24题 (1.0分) 题号:300完善下列程序,以实现通过字符串变量操作竖向显示"天长地久"、横向显示"地久天长"的功能.程序清单如下: SET TALK OFF STORE "天长地久" TO ch CLEAR n=1 DO WHILE n<8 ?substr【(ch,n,2)】 n=n+2 ENDDO ?substr【(ch,5)】 ?SUBSTR(ch,1,4)第25题 (1.0分) 题号:1204一只球从100米的高度自由落下,每次落地后反弹回原高度的一半.下列程序的功能是:计算并显示当它在第10次落地时,总共经过的距离和第10次反弹的高度. 【程序清单】 CLEAR S=100 h=50 FoR i=1 TO 9 s=s+h*2 h=【h/2】 ENDFOR ?"球在第10次落地时,共经过了:'+ALLT(STR(s,10,6)+"米" ?"球第1O次反弹的高度是:"+ALLT(STR(h,10,6)+"米"第26题 (1.0分) 题号:1202执行下列程序后,输出到屏幕的结果为【3】. 【程序清单】 CLEAR cstring="VisualFoxPro" nresult=0 m=LEN(cstring) FOR n=1 to m c=SUBSTR(cstring,n,1) IF !BETWEEN(ASC(c),ASC("A"),ASC("Z") LOOP ENDIF nresult=nresult+l ENDFOR ?nresult 第27题 (1.0分) 题号:1316运行下列程序后,显示的运行结果的第二行为 【11*11=121】 SET TALK OFF CLEAR Y="" FOR I=1 TO LEN(y) X=LEFT(y, i) ?SPACE(20-i*2)+x+"*"+x+"="+ALLT(STR(VAL(x)*VAL(x) ENDFOR第28题 (1.0分) 题号:1343下列自定义函数 NTOC ()的功能是:当传送一个 17 之间的数值型参数时,返回一个中文形式的"星期日 星期六".例如,执行命令? NTO ( 4 ),显示"星期三". FUNCTION NTOCPARAMETERS nLOCAL chch="日一二三四五六"mch="星期"=SUBSTR(ch,【2*n-1】,2)RETURN mchENDFUNC第29题 (1.0分) 题号:279函数或过程的参数可以是变量或数组元素,并可以通过值或引用传递.如果希望自定义函数修改参数,并将修改后的值返还给主程序,则应通过【引用】传递函数.第30题 (1.0分) 题号:1291运行下列程序后,显示的运行结果为 【FoxPro】. ?TT("123E%n w$O4q*5n6") FUNCTION TT PARA cstr cResult=space(0) FOR n=1 to LEN(ALLT(cStr) c=SUBSTR(cStr,n,1) IF !BETWEEN(c,"A","Z") and !BETWEEN(c,"a "," z") LOOP ENDIF cResult=cResult+CHR(ASC(c)+1) ENDFOR RETURN cResult ENDFUNC第31题 (1.0分) 题号:297设有一表文件xs.dbf 且已在当前工作区中打开,则使用命令COPY TO 【xs type xls】,可以将该表的数据复制到Excel文件xs.xls中.第32题 (1.0分) 题号:1203执行下列程序后,输出到屏幕的结果为【300】 . 【程序清单】 CLEAR STORE 5 TO ml,m2 STORE 1 TO m3,m4 DO PA WITH ml,m2,m3,m4 ?m4 PROCEDURE PA PARAMETER a,b,c,d d=b2-4*a*c DO CASE CASE d<0 d=100 CASE d=0 d=200 CASE d>0 d=300 ENDCASE RETURN第33题 (1.0分) 题号:308已知STUDENT表有20条记录,执行以下代码后,屏幕显示的是【10】clearclose alluse studenti=0scan i=i+1 skipendscan?i第34题 (1.0分) 题号:288在自定义函数中,定义形式参数的关键字为【para】第35题 (1.0分) 题号:1286在 VFP 中,每个对象都具有属性,以及与之相关的【事件和方法】.其中,属性是定义对象的特征或某一方面的行为.第36题 (1.0分) 题号:1314完善下列程序,以显示71000以内能被7整除且含有数字5的所有证书(例如35、 56、 105等). FOR n=7 TO 1000 【step 7】 ch=ALLT(STR(n) IF "5"$ch ?n ENDIF ENDFOR第37题 (1.0分) 题号:293表达式STR(YEAR(DATE()+10)的值的数据类型为【字符 】型第38题 (1.0分) 题号:1249完善下列程序,计算3+33+333+3333+33333+前十项之和。 CLEAR m=3 n=0 s=0 FoR i=1 TO 10 n=【n*10+3】 s=s+n ENDFor第39题 (1.0分) 题号:1327运行以下程序后, VFP 主窗口显示的结果是 【6】 .【程序清单】CLEARi=0n=0DO WHILE i<=10IF MOD(i,2)=0n=n+1ENDIFi=i+1ENDDO?n第40题 (1.0分) 题号:287循环语句中跳过当前循环,直接进入下一轮循环的语句是【loop】第41题 (1.0分) 题号:298依次执行以下命令之后,最后一条命令的输出结果是【Visual FoxPro6.0】SET EXACT OFFx="6.0"?IIF(x="6.0" ,"Visual FoxPro"-x , "Visual FoxPro" +"5.0")第42题 (1.0分) 题号:1242.在VFP命令窗口中输入并执行命令【_Screen】.FontSize=20,可以使VFP主窗口中输出文本的字号设置为20.第43题 (1.0分) 题号:278命令关键字和函数名一般可以缩写为前四个字母,但MEESSAGEBOX()函数的缩写为【messageb()】第44题 (1.0分) 题号:1246执行下列主程序后,输出结果为【22】 *主程序* CLEAR Public x, y ,z X=3 Y=4 Z=5 Do pp ? x+y+z *过程* Procedure PP LOCAL x X=5 Y=7 Z=x+y EndPROC第45题 (1.0分) 题号:310完善以下用户自定义函数,使得当输入09之间的整数时,函数返回对应的中文:function ntoc parameter pdi cstr="零一二三四五六七八九" cresult=substr(cstr,【pdi*2+1】,【2】) return 【cresult】endfunc第46题 (1.0分) 题号:283下列程序段用一句命令表示为【y=iif(x>=85,"优秀",iif(x>=60, "及格", "不及格")】DO CASECASE X>=85Y= '优秀'CASE X>=60 and x<85Y='及格'OTHERWISEY='不及格'ENDCASE第47题 (1.0分) 题号:306执行以下程序,屏幕显示为:【10】和【15】x=8DO WHILE .T.x = x + 1IF x = INT ( x / 4 ) * 5 ? xELSELOOPENDIFIF x > 10 EXITENDIFENDDO第48题 (1.0分) 题号:305完善下列程序,使其具有如下功能:将任意输入的十进制正整数转换为十六进制数形式并显示.(提示:字母A的ASCII 码为65;INPUT语句用于从键盘上输入一个数据)SET TALK OFFCLEARINPUT "请输入任一正整数" TO num &&输入一个数,并赋予变量numnum 1 = numxnum = SPACE ( 0 )y ="IIF(MOD(num,16)>9,CHR(【55+mod(num,16)】),str(MOD(num,16),1)"DO WHILE num > 15 xnum =&y + xnum num = INT (【num/16】)ENDDOxnum =&y+xnumWAIT WINDOW STR(【num1】) +"转换为十六进制后为"+xnum第49题 (1.0分) 题号:275在定义数组时,使用DECLEAR和【dim】声明的数组属于"私有数组",而使用PUBLIC命令声明的数组属于"全局数组",使用LOCAL命令声明的数组属于"局部数组".第50题 (1.0分) 题号:1201下列程序用来计算数列2/1,3/2,5/3,155/18,173/19,192/20,的前20项之和.阅读程序并完善,使它能实现要求的功能. 【程序清单】 CLEAR m=2 s=0 FOR i=1 TO 20 s=s+m/i m=【m+i】 ENDFOR ?s第51题 (1.0分) 题号:280完善程序题.下列程序的功能是计算下列数列1!,2!,3!,n!的前10项之和:nResult=0nMult=【1】FOR n=1 TO 10 &&计数变量 nMult=nMult*n nResult=【nResult+nMult】ENDFOR?nResult第52题 (1.0分) 题号:1234在面向对象的程序设计中,通过类可以简化应用程序的设计,因为类具有【继承性】、多态性、封装性、抽象性等特点.第53题 (1.0分) 题号:1250完善下列程序,使两个程序的功能相同。 程序清单1 CLEAR S=0 P=1 For i=1 to 20 P=【P*I】 S=S+P ENDFOR ? s 程序清单2 CLEAR S=0 N=1 For i=1 to 20 M=1 For n=1 to i M=M*n Endfor S=S+M Endfor ? S第54题 (1.0分) 题号:295下列程序用来求0100偶数之和,请将它写完整STORE 0 TO N, SDO WHILE .T. IF N>100 【Exit】 ELSE S=S+N ENDIF N=N+2ENDDO第55题 (1.0分) 题号:1229本题程序求以下正项级数的近似值: 【程序清单】' CLEAR i=0 sn1=O DO WHILE .T. i=i+1 sn1=sn1+l/(i*(i+1)*(i+2) sn2=【sn1+1/(i+1)*(i+2)*(i+3)】 IF ABS(sn2-snl)<0.0001 【Exit】 ENDIF ENDDO ?sn2第56题 (1.0分) 题号:285设定日期显示格式中,年的表示是否显示4位数的命令是【set cent】on|off第57题 (1.0分) 题号:1312在VFP中,利用可是化开发工具(表单设计器)创建表单和对象.通过对对象属性的修改、方法程序的调用来处理对象.相对引用对象时,所设计的关键字THIS、THISFORM、THISFORMSET只能在方法程序或【事件】处理代码中使用.第58题 (1.0分) 题号:296运行下列程序段以后,显示内容的前两行为:【ABCDE】和【BCDE】SET TALK OFFS="ABCDEF"N=LEN(S)K=1DO WHILE K<=N ? SUBS(S,K,N-K) K=K+1ENDDO第59题 (1.0分) 题号:292VFP系统中,程序控制分为顺序、分支和【循环】.第60题 (1.0分) 题号:1200完善下列程序,使两个程序的功能相同(求一个数列的前20项之和). 【程序清单1】 【程序清单2】 CLEAR CLEAR s=0 s=0 FOR i=1 To 20 FOR i=l TO 19 STEP 2 s=s+(-1)*(i+1)/(【i*2+i】) s=s+1/(i*(i+1)-1/(i+1)*(i+2) ENDFOR ENDFOR ?s ?S第61题 (1.0分) 题号:290下面的程序是给具有20个元数的一元数组赋整数值,并使其值的范围在099之间,完成程序(已知rand()是随机变量,其随机产生的值在0.01.0之间.提示:函数 int()返回其参数的整数部分)dime mm(20)for i=1 to 20 【mm(i)=int(rand()*100)】endf第62题 (1.0分) 题号:312当人机交互改变对象的值时发生的事件是【interactivechange】,该事件在组合框、列表框等对象中被常常使用第63题 (1.0分) 题号:301运行下面的程序字段后屏幕显示的运行结果是:【33】 SET TALK OFF STORE 4 TO N ?S(N) FUNCTION S PARAMETERS X Y=1 P=0 FOR i=1 TO X Y=Y*i P=P+Y ENDF Return P ENDF第64题 (1.0分) 题号:1329有如下程序代码: DIMENSION xx4ta=TYPE("xx1")xx1="VFP"xx=1113tb=TYPE("xx1")则这段程序运行后,变量 ta 和 tb 的值分别是 【L】和【N】 . 二、单项选择 共22题 (共计22分)第1题 (1.0分) 题号:269对于表单对象来说,下列事件中最后发生的事件是(D)A:load B:init C:activate D:destroy第2题 (1.0分) 题号:277下列四个语句中返回值在1-100之间的是(B)A:int(rand()*101) B:int(rand()*100)+1C:int(rand()*100) D:int(rand()*101)+1第3题 (1.0分) 题号:261DIMENSION命令用来对(D)定义A:对象 B:变量 C:字段 D:数组第4题 (1.0分) 题号:271已知一张数据表Student有20条记录,以下程序执行后返回数值是(C)close