VFP语言基础复习

更新时间:2023-10-16 02:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VFP语言基础复习

第一部分:复习要点

一、数据及数据容器

1、数据类型:类型表示符,数据形式,用途,固定长度 字符型表示

货币型的小数位数

日期型表示{},格式,8位

日期时间型:表示方式,缺省值,日期与时间可单独

备注型:4字节,扩展名fpt

通用型:

2、常量:类型,表示方法(浮点、货币、字符定界符、逻辑常量、传统日期、严格日期、空串、空日期) 3、变量:意义,命名规则,赋值方法,访问方法(内存变量与有字段同名),显示,保存与恢复,作用域 4、数组:含义,定义方法,元素个数,赋值(元素或整体),数组的访问

二、运算符

1、运算符分类,表示方法,优先顺序 2、几个重要问题:

(1)字符运算的连接问题(+ - $) (2)日期运算的限制(+,-) (3)关系运算的要求与结果

(4)关系比较的依据与排序方法,字符串的模糊比较与精确比较及其设置(SET EXACT ON|OFF) (5)逻辑运算的意义与计算 (6)模运算问题

三、函数

1、函数学习的几个要求:函数的功能、函数名、格式、参数要求、函数的返回值、函数的计算 2、掌握几种典型的函数:

MAX/MIN,INT,MOD,ROUND,RAND,TRIM/ALLTRIM,LEN,AT,SUBSTR/LEFT/RIGHT/,DATE,DAY/YEAR/MONTH ASC/CHR,VAL/STR,DTOC/CTOD,BETWEEN,IIF,FILE,MESSAGEBOX,GETFILE

四、表达式

1、表达式的概念与构造,表达式与数学表达式的相互转换 2、关系表达式与逻辑表达式的构造:将书面语言变成表达式 3、名称表达式与宏替换及其应用

表示方法:名称表达式--(字符表达式),宏替换--&变量名

作用:名称表达式命令或函数中的名称(字段名、变量名、菜单名、文件名等),宏替换--类似

区别: 名 称表达式比宏替换快

宏 替换可以替换整个命令,名称表达式不行;宏替换可以作为表达式的一部分,后者也不行 有 些命令、函数中不能使用名称表达式

举例:

I=“1” J=“2”

X12=“Good” ?X&I&J

?

x='1? y='2? c='x+y? ?&c ?(c)

4、空值的意义,空值对运算的影响 等价于没有任何值

排序优先于其它数据

NULL的运算:逻辑运算,数值运算,日期运算

第二部分 程序设计

1. 基本概念

程 序:为解决某一问题而设计的一系列指令。 主程序:通常被用户直接执行的程序。 子程序:在程序中被调用的程序。

源程序: 由人用源语言编写的计算机程序,必须翻译成机器语言后才能被执行。 目标程序: 是源程序经过编译后所产生的机器语言程序。 可执行程序:

源程序被编译后产生的可被机器直接执行的程序,具有 .EXE 扩展名。在VFP中是指由项目管理器连编生成的、可脱离VFP环境运行的程序。 应用程序:

指为完成专门工作而设计的一组相互联系的例行程序和子程序。在VFP中是指一组 Visual FoxPro 程序、表单、菜单和其他文件经项目管理器连编后形成的单个程序,不能脱离VFP环境运行,扩展名为.APP。 例行程序:

按某种顺序排列的、使计算机能执行某种任务的指令集合,可以是一种专用的程序或作为程序的一部分。它可由若干个子程序组成。 2. 程序控制 (1) 顺序语句

即按程序中的语句顺序依次执行。 (2) 分支语句

条件语句: 情况语句: DO CASE CASE 情况1 IF 条件 命令组1 [ ELSE 命令组2 ] ENDIF [OTHERWISE 其它命令组 ] ENDCASE 命令组1 CASE 情况2 命令组2 ? 3. 循环语句

FOR 变量 = 初值 TO 终值 [STEP 步长 ] FOR 命令组 循环语句(预知循环次数) ENDFOR | NEXT DO WHILE 条件 DO WHILE 命令组 循环语句(未知循环次数) ENDDO SCAN [ 范围 ] [FOR | WHILE 条件 ] SCAN 命令组 循环语句(针对全部记录) ENDSCAN 循环结构中的LOOP命令和EXIT命令: LOOP是短路语句,表示从此开始下一次循环; EXIT是退出语句,表示跳出循环。 4. 子程序

子程序的的形式可以是一个程序文件,也可以是一个过程或自定义函数。

子程序 总是被其他程序调用而不单独自定义函数 过程 特点 执行,可以调用其他子程序,不一定要返回一个值。 能以一个独立的文件储存,也可包含是一个程序段,是程序的组成在调用程序中,必须返回一个值。 部分,一般放在程序的最后。 与程序相同,只是在子程序的结FUNCTION 函数名 尾加需一条返回命令: 或:MODIFY COMMAND 函数名 RETURN [ 表达式 |TO MASTER |TO 程序文件名] 定义方法 命令组 RETURN 表达式 注:用此命令定义的函数以独立的文件形式储存。 调用DO 子程序名[WITH 参数表 ] = 函数名 ( 参数表 ) 方法 DO 过程名 WITH 参数表 PARAMETERS 数表 PROCEDURE 过程名 PARAMETRS 参数表 命令组 RETURN

3. 创建应用程序 方法一:

在命令窗口中输入: MODIFY COMMAND 程序名 方法二:

单击文件菜单 → 新建 → 程序 → 新文件 → 在编辑窗口中编辑程序 → 完成后关闭 → 给出合适的程序名及保存位置 。

程序的注释: 方法1: * | NOTE <注释内容> 可出现在程序中的任何地方 方法2: && <注释内容> 一般用于命令的尾部 给程序加注释的目的是为了提高程序的可读性。 面向过程的程序设计三步曲: 输入 → 处理 → 输出 4. 修改应用程序 方法一:

在命令窗口中输入: MODIFY COMMAND 程序名 | ?

注: ? 表示不知道程序名,要从打开对话框中选定。

方法 二:

单击文件菜单 → 打开 → 选择所需程序并打开 → 在编辑窗口中对程序进行修改 → 完成后关闭退出。 5. 执行应用程序

方法一: 在命令窗口中输入: DO 程序名 | ?

方法二:从程序菜单中选择执行→从打开对话框中选择所需程序并执行之。 6. 程序设计的基本步骤 (1)对问题进行说明 (2)分解问题 (3)编制各模块 (4)测试并完善各模块 (5)组装全部模块 (6)整体测试

7、程序编制中的常用算法 (1)累加、连乘 (2)求素数 (3)穷举

(4)求最大、最小值 (5)排序

(6)数组元素的插入、删除 (7)数制转换 (8)加密与解密 (9)查找

(10)字符处理 (11)数据压缩 8、关于阅读程序 (1)了解程序功能 (2)分析算法

(3)程序结构分析:输入(初始化)--处理--输出结果 (4)关键语句 (5)程序控制结构

(6)手工走程序、记录变量结构 (7)得出结果

第三部分 典型例题

13. 自定义函数RV()实现的功能是:将任意给定的一串字符倒序返回,如执行函数:RV(“ABCD”),则返回“DCBA”。完善函数RV()的程序代码: FUNCTION RV PARAMETERS cH L=0 McH=\

DO WHILE L

McH = McH +SUBSTR(cH, ______ ,1) L=L+1 ENDDO

RETURN__________ ENDFUNC

3. 下列表达式中,合法的是____23______.

A. Year(Date())-{2000/08/02} C. Date()+{2000/08/02}

B. Date()-(2000/08/02) D. A、B、C均对

2. MOD(9,-2)的返回值为___ ___。(异号为余数加除数)

10. 下列自定义函数NTOC()的功能是: 当传送一个1 - 7之间的数值型参数时,返回一个中文形式的\星期日- 星期六\例如: 执行命令? NTOC(4), 显示\星期三\。 FUNCTION NTOC PARAMETERS N LOCAL CH

CH=\日一二三四五六\

MCH=\星期\ RETURN MCH ENDFUNC

20. 表达式SUBSTR(\语言\的返回值是:_____________。 22. 下列程序的功能是计算:

S=1/(1*2)+1/(3*4)+1/(5*6)+?+1/(N*(N+1))+?的近似值,当1/(N*(N+1))的值小于0.00001时,停止计算。 S=0 I=1

DO WHILE .T. P=____________ S=S+1/P IF 1/P<0.00001 ___________ ENDIF I=I+2

ENDDO

6. 在Visual FoxPro 中创建数据库后,系统自动生成的三个文件的扩展名分别为___26___。 A. .PJX、.PJT、.PRG C. .FPT、.FRX、.FXP

B. .DBC、.DCT、.DCX D. .DBC、.SCT、.SCX

1. 表达式\的值是___ ___. LEN(ALLTRIM(\的值是___ ___。 2. 下列命令中,不能使程序跳出循环的是___24___。 A.LOOP

B.EXIT

C.QUIT

D.RETURN

3. 表达式{09/18/2000}-{09/20/2000}的值是___ ___;(要注意严格格式与常规格式) 表达式INT(6.26*2)%ROUND(3.14,0)的值是___ ___。 4. 执行下列程序段后,X(1,1)和X(2,2)的值分别为___ ___。 程序清单如下: DIMENSION X(6,10) X=123

5. 调用系统对话框的系统函数MessageBox()的语法如下: MESSAGEBOX(cMessageText[,nDialogBoxType[,cTitleBarText]]) 某应用程序在执行过程中出现了如下图所示的对话框:

根据上图所示对话框所显示的有关信息,完善下面程序段: Local nSelect

nSelect=MessageBox(\删除吗?\删除确认\

IF nSelect=6 SELECT js DELETE ENDIF

如果在出现对话框时选择“否”,则上列程序执行后,变量nSelect的值是__ _ _。 6.下列哪一组的数据类型是一致的 22 。 A.CTOD(\ B.ALLTRIM(\ C.EOF(),RECCOUNT(),DBC()

D.STR(3.14,3,1),TYPE(\ 7.DIMENSION 命令用来对 23 进行声明。 A.对象

B.变量

C.字段

D.数组

8.下列程序用来计算长方形的面积,请将它写完整: X=3 Y=5 S=0

DO (27) WITH X,Y,S ?S

PROCEDURE AREA (28) S1=X*Y RETURN

9.在VFP5.0命令窗口中执行 ? STR(2345.278,7,2)命令后,返回的结果是___。

A.2345.278 B.2345.27 C. 345.278 D.2345.28

10.在VFP5.0中,将字符型数据转换成日期型数据的函数是_____。 A.DTOC() B.CTOD() C. DATE() D. STR() 11. 以下的四组函数,返回值的数据类型一致的是_____。 A. DTOC(DATE()),DATE(),YEAR(DATE()) B. ALLTRIM(〃VFP5.0〃),ASC(〃A〃),SPACE(8) C. STR(3.14,3,1),DTOC(DATE()),SUBSTR(〃ABCD〃,3,1) D. EOF(),RECCOUNT(),DBC()

12.设XB为某表中的字符型字段,其宽度为2,则与XB=\男\女\等价的表达式为_____。 A.BETWEEN(XB,男,女) B.BETWEEN(XB,\男\女\) C.INLIST(XB,男,女) D.INLIST(XB,\男\女\) 13. VFP中程序控制结构有_____、_____、_____和_____四种。 14. 将VFP默认路径设置为D:\\USER的命令是_____。

15.已知N=\则表达式X&N&M的值为______。 16. 表达式YEAR(DATE()+10)的数据类型为_______。

17. 已知XX=“Englishbook ”,YY=“book”。则XX+YY=________________ XX-YY=_________________。

18. 在VFP5.0命令窗口中执行 ? ATC(\学习\认真学习计算机\)命令后,返回的结果是______ 。

A.2 B.5 C.7 D.9 (AT()区分大小写,而ATC不区分) 19. 函数SUBSTR(\)的返回值是________。 A. ualFoxP B. FoxPro5 C. FoxP D. FoxPro5.0 20. 下列关于数据操作的说法中,正确的是__________。 A. 货币型数据不能参加算术运算

B. 两个日期型数据可以进行加法运算

C. 字符型数据能比较大小,日期型则不能 D. 一个日期型数据可以加或减一个整数

21.在VFP5.0中,将日期型数据转换成字符型数据的函数是__________。

A.DTOC() B.CTOD() C.DATE() D.STR()

22. VFP的循环语句有 _______(其中FOR是指FOR…ENDFOR结构语句)。 A. DO WHILE,FOR和SCAN B. DO WHILE,FOR和LOOP C. FOR,SCAN和LOOP D. DO CASE和DO WHILE

23. 表达式STR(YEAR(DATE()+10))的数据类型为_______________。

22.在Visual FoxPro系统中,表达式LEN(DTOC(DATE(),1))的值为(22)。

A.4 B. 6 C. 8 D.10

6. 表达式LEN(TRIM(STR(24)))的计算结果为(6);(STR函数的默认值为10位数字,不带小数)

7. 依次执行一下命令之后,最后一条命令的输出结果是(8)。

SET EXACT OFF x=”6.0”

?IIF(“6.0” = x ,”Visual FoxPro” –x, “Visual FoxPro” + “5.0”) 15. 阅读下列程序,并填写运行结果。

CLEAR x=”OK”

STORE “学习” TO y ok=’努力’ ?&x+(y)

23. 以下表达式中不能返回字符串值“FoxPro”的是___23___。 A “Fox” + “Pro”

B TRIM(“Fox ” – “Pro”) C ALLTRIM (“Fox” + “Pro”) D “Fox ” - “Pro ”

24. 在系统 Visual FoxPro 中,以下函数返回值不是数值型的是__24____。

A. LEN(“Visual FoxPro”) B. AT(“This”, “ThisForm”) C. YEAR(DATE())

D. LEFT (“ThisForm”, 4)

1. 函数MOD(-42,-3)的返回值为_____(1)____

2. 设n=234,m=432,k=”m+n”,表达式1+&k的值是___(2)____

12.完善下列程序,以实现通过字符串变量操作竖向显示“天长地久”、横向显示“地久天长”的功能。程序清单如下:

SET TALK OFF

STORE “天长地久” TO ch CLEAR n=1

DO WHILE n<8

?__Substr(ch,n,2) n=n+2 ENDDO

?____Substr(ch,5,4) ?? SUBSTR(ch , 1, 4 ) RETURN

14.在连编应用程序之前应设置应用程序的主程序。下列程序是某应用程序的主程序main.prg,请根据命令行中的注释信息完善该程序。

CLEAR ALL

_SCREEN.Visible=.f. SET TALK OFF &&关闭显示

**************设置Visual FoxPro主窗口属性*********** WITH _SCREEN

.Caption=’《库存管理系统》’ .Picture=’pict\\softface.jpg’ .WindowState=2 .ControlBox=.f. ENDWITH

_SCREEN.Visible=.t. SET SYSMENU ON

____Do____mainmenu.mpr &&执行菜单程序mainmenu.mpr _____Do form______Loginfonm &&运行表单文件:Loginfonm.scx READ EVENTS &&启动事件循环 RETURN

1、 程序改错(5分)

下列程序的功能是:显示10000以内所有回文数的个数及其平均值。所谓回文数是指左右数字完全对称的自然数。例如:11、121、1221等都是回文数。要求:

1、 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2、 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 STORE 0 TO nCount,nSum FOR n=11 to 10000

c1=STR(n) &&alltrim(str(n)) c2=SPACE(0) FOR m=1 TO LEN(c1) C2=SUBSTR(c1,m,1)+c2 ENDFOR IF c1=c2

nCount=nCount+1

nSum=nSum+c1 &&val(c1) ENDIF ENDFOR

WAIT WINDOW”回文数个数及其平均值分别为:”STR(nCount)+”,”+STR(nSum/nCount) 2、 程序改错(5分)

下列程序的功能是验证例题:若一个三位数是37的倍数,则将这个三个数字循环移位得到的另两个三位数也是37的倍数(例如:148是37的倍数,481、814也是37的倍数)。要求: 1、 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2、 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 lResult=.t FOR n=100 TO 999

IF MOD(n,37)#0 &&=0 c=ALLERIM(STR(n)) c1=LEFT(c,1) c2=SUBSTR(c,2,1) c3=RIGHT(c,1)

IF MOD(VAL(c2+c3+c1),37)#0 OR MOD(VAL(c2+c3+c1),37)#0 lResult=.f. RETURN ENDIF ENDIF ENDFOR

WAIT WINDOW IIF(lResult,”命题成立”,”命题不成立”) 3.程序改错(5分)

下列程序的功能是:实现二进制字符窜数据压缩。压缩算法是: 字符窜首字符+该字符个数+分隔符+另一个字符个数+分隔符+??

例如,二进制字符窜为“11110000111111111000111110000”压缩后显示为“14*5*9*3*5*4”(字符

窜首字符为“1”、4个“1”、5个“0”、9个“1”??,分隔符为“*”)。要求: 1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString=‘111100000111111111000111110000’ cResult=LEFT(cSring,1) nCount=1

FOR n=2 TO cString &&len

IF SUBSTR(cString,n,1)=SUBSTR(cString,n-1,1) nCount=nCount+1 ELSE

cResult=cResult+ALLT(STR(nCount))+’*’ nCount=nCount+1 &&nCount=1 ENDIF ENDFOR

cResult=cResult+ALLT(STR(nCount)) WAIT WINDOWS’压缩后为’+cResult

4.程序改错(5分)

下列程序的功能是将小写金额(假设小于0万有且有1位小数)转换为中文大写形式显示。例如,213.0转换为“贰佰壹拾叁元零角”,3002.8转换为“叁仟零贰元捌角”。要求: 1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

nMoney=10040.5 &&赋初值 cMoney=ALLT(STR(nMoney,7,1)) cs1=’零壹贰叁肆伍陆柒捌玖’

cS2=RIGHI(‘万仟佰拾元’,(LEN(cMoney)-2)*2) cRt=SPACE(0)

FOR n=1 TO LEN(cMoney)-2 ch=SUBSTR(cMoney,n,1)

cRt=cRt+IIF(ch=\零”,””,SUBS(cS1,ch*2+1,2)) &&val(ch)*2+1

cRt=cRt+IIF(ch=”0”,””,SUBS(cS2,n*2-1,2))&&去掉重复零 ENDFOR

cRt=cRt+IIF(RIGHT(cRt,2)=”零”,’元’,”\

cRt=cRt+IIF(RIGHT(cMoney,1)=’0’,’’,SUBS(cS1,VAL(RIGHT(cMoney,1))*2+1,2)+’角’)&&小数部分

WAIT WINDOWS’大写金额为:’+cRt

5.程序改错(5分)

下列程序的功能是计算一个英文句子中包括几个英文单词(假设各单词间以空格或标点符号分隔)。其基本算法是首先在字符串左边加一个空格,然后对字符串中的每个字符依次进行如下的处理:如果该字符为英文字母,且左边的字符不是英文字母,则英文单词个数加1。要求: 1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString=’A modem is a device that connects your computer to the Internet.’ cString=SPACE(1)+cSring nCount=0

FOR n=1 TO LEN(cString)

c=SUBSTR(cString,1,n) &&(cString,n,1)

IF BETWEEN (c,’A’,’Z’) OR BETWEEN(c,’a’,’z’) c=SUBSTR (cString,n-1,1)

IF (BETWEEN(c,’A’,’Z’) OR BETWEEN(c,’a’,’z’)) &&! nCount=nCount+1 ENDIF ENDIF ENDFOR

WAIT WINDOWS’英文单词个数为’+STR(nCount)

6.程序改错(5分)

下列程序的功能是:对于数列1,1,2,3,5,8,??(从第3项开始,每一数列项的值为前2项之和),求前多少项的和刚好不大于100。要求:

1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句的数目。 a1=1 a2=1

nSum=a1+a2 &&第1、2项之和 nCount=2 &&项数,初值为2 Do WHILE nSum<100 &&a2中存放数列之值 x=a1 a1=a2 a2=x+a1

nSum=nSum+a1 &&nSum+a2 nCount=nCount+1 &&ncount-1 Enddo

nCount=nCount+1

WAIT WINDOWS ’前’+STR(nCount)+’项的和刚好不大于100‘

7.程序改错(5分)

下列程序的功能是:将一个用字符串表示的正整数序列重新排列为一个新的正整数序列字符串。新序列排列的规则是:序列左边为奇数、右边为偶数,且奇、偶数分别从序列的两端开始依次向序列中间排放。例如,若原序列为“31,58,71,5,82,45,54,41,2”,则新序列为“31,71,5,45,41,2,54,82,58”。注:“,”为英文逗号。要求:

1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句的数目。 cString=‘31,58,71,5,82,45,54,41,2’ STORE SPACE(0)TO cLeft,cRight n=1

DO WHILE n#0

n=AT(cString,“,”) IF n=0 &&n<>0

c=SUBSTR(cString,1,n-1) cString=SUBSTR(cString,n) &&n+1 ENDIF

IF MOD(VAL(c),2)=0

cRight=c+“,”+cRight &&\ ELSE

cLeft=cLeft+“,”+c &&c+\ ENDIF ENDDO

cResult=cLeft+“,”+cRight &&\应加上最后一个即cString WAIT WINDOWS‘结果字符串为’+cResult

8.程序改错(5分)

下列程序的功能是:从给定的字符串中找出所有的数(单个的数字或连续的数字都算一个数),并显示这些数的平均值(假定无小数)。例如:字符串“abc32skfkj262ksf8k99kfsk24kf“处理后显示平均值为85,要求:

1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

cString=‘abc32skfkj262ksf8k99kfsk24kf’

cTemp=SPACE(0) &&该变量用于暂存字符串中取出的一个数字字符串 STORE 0 TO nSum,nCount DO WHILE LEN(cString)>0 c=LEFT(cString,1)

IF BETWEEN(c,‘0’,‘9’) cTemp=c+cTemp &&cTemp+c ELSE

IF LEN(cTemp)>0

nSum=nSum+cTemp &&val(cTemp) nCount=nCount+1 cTemp=SPACE(0) ENDIF ENDIF

cString=SUBSTR(cString,2) ENDDO

nAverage=nSum/nCount

WAIT WINDOW‘平均值为’+STR(nAverage)

9.程序改错(5分)

下列程序的功能是:将一个英文字符串中的相同字符调整到一起。例如:对于字符串“ASDSYDA”显示“AASSDDY”。要求:

1. 项目中有一个程序文件PCODE,将下列程序输入到其中并进行修改。

2. 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString=’ASDSYDA’ cResult=SPACE(0) FOR n=1 TO LEN(cString) c=SUBSTR(cString,n,1) m=AT(c,cResult) IF n=0 &&m=0 cResult=cResult+c ELSE

cResult=SUBSTR(cResult,1,m)+c+SUBSTR(cResult,1,m) &&插入相同字符,后一个为subs(cresult,m+1) ENDIF ENDFOR

WAIT WINDOWS’字符串处理后结果为’+cResult

10.下列的自定义函数YS()的功能是:当传送一个字符型参数时,返回一个删除所有内含空格之后的字符型数据。例如,执行命令?YS(“A B CD”),显示“ABCD”。(注:OCCURS()函数的功能是返回前一个字符表达式在后一个字符表达式中出现的次数。) FUNCTION YS PARAMETERS zz

IF OCCURS(SPACE(1),zz)>0 &&如果空格在变量ZZ中出现的次数大于0 n=OCCURS(SPACE(1),zz) FOR x=1 TO n

c=AT(APACE(1),zz,1)

zz=SUBSTR(zz,1,c-1)+subs(zz,c+1) ENDFOR ENDIF RETURN zz ENDFUNC

11. 在实际应用中,常使用DO CASE??ENDCASE语句实现根据不同的条件表达式结果进行不同处理的功能。使用DO CASE??ENDCASE语句时,各CASE<条件表达式>子句的不同排列顺序,有时会产生不同的运行结果。设有KCSJ表(考试成绩表),表中含有“成绩”字段(CJ N(3))和“考试等级”字段(KSDJ C(10))。下列程序段的功能是:为KSDJ字段填写相应的值:成绩均在90分以上(包括90分)为“优秀”;60分以上(包括60分)为“合格”;60分以下为“不合格”。正确的CASE<条件表达式>子句的排列顺序号(程序中&&后面给出的序号)应为:③、①、②或 ③、②、①。 USE kscj UCAN DO CASE

CASE cj>=60 &&①

REPLCE ksdj WITH“合 格” CASE cj<60 &&② REPLCE ksdj WITH“不合格” CASE cj>=90 &&③ REPLCE ksdj WITH“优 秀” ENDCASE ENDSCAN USE

12、程序改错(5分)

下列程序的功能用于计算数列1/1!,l/2!,1/3!,1/4!,??,1/n!:之和(注:n!=1*2*3*4....*n),

当某一数列项的值小于0.0l时停止计算。要求:

① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;

② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

SET DECI TO 2 n=l nM=l nSum=O D0 WHILE .T.

nM = nM / n &&nM=1/(n*nM) IF nM<0.01

LOOP &&exit

endif

nSum=nSum+ nM nM= nM +1 &&n=n+1 ENDDO

WAIT WINDOWS ’该数列之和为’+STR(nSum,10,2)

13.程序改错(5分)

下列程序的功能用于将十六进制数转换成十进制数表示。要求: ① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改; ② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

cNumber=’4FC7’ &&赋初值(用字符串表示的十六进制数) nResult=0

FOR n=LEN(cNumber) TO 1 &&step -1 C=LEFT(cNumber,1)

IF BETWEEN(c, ’0’,’9’) nResult=nResult*16+c &&val(c) ELSE

nResult=nResult*16+10+ASC(c)-ASC(’A’) ENDIF

CNumber=SUBSTR(cNumber,2) ENDFOR

WAIT WINDOWS ’十进制数表示为’+STR(nResult)

14、程序改错(5分)

下列程序的功能是将一个字符串中的各个单词的首字母组成其缩写形式(大写字母),其中,字符串由多个英文单词组成,且各单词之间用一个空格分隔。其基本算法是:从字符串中的单词中取其第一个字母,然后去掉该单词,如此重复直到字符串长变为0。例如,对于字符串“central processing unit”,生成其缩写形式“CPU”。要求:

① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;

② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

cString=’Central proceSSing unit’ &&赋初值

cString=ALLTRIMtUPPER(cString)) cResult=SPACE(0) IF LEN(CString)=0

DO WHILE LEN(cString)>0 CResult=cReSUlt+LEFT(CStrlng) n=AT(SPACE(1),cString)

cString=ALLTRIM(SUBSTR(cString,n)) END ENDIF

WAIT WINDOWS’缩写形式为’+cResult

15、程序改错(5分)

下列程序的功能是对一个字符串进行加密。其基本算法是对字符串中的每一个字符进行转换,转换后的字符的ASCII码等于原字符的ASCII码值加该字符在字符串中的位置值,例如,字符串“ABC”加密后为“BDF”,其中A—B(第1个字符)、B—D(第2个字符)、C—F(第3个字符),要求: ① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;

② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

CString=’12345cz’ &&赋初值 cResult=SPACE(0) IF LEN(CString)=0

FOR n=l T0 Cstring

c=SUBSTR(CString,n,1)

cResult=cResult十CHR(ASC(C)+1) ENDFOR ENDIF

WAIT WINDOWS ’加密后为’+cResult 16、程序改错(5分)

下列程序用于计算一个字符串中包括多少个汉字(假设这些汉字均属于GB2312字符集)。其基本算法是从字符串中依次取一个字符,如果其AECII码值大于127,则为一个汉字内码的第一个字节。要求:

① 项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;

② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString=’微软(Microsoft)公司开发的视窗(Windows)操作系统’ &&赋初值 nCount=0 n=LEN(cString) FOR m=1 tO n

IF ASC(SUBSTR(cString,m,1))>127 nCount= nCount+1 n=n+1

ENDIF

ENDFOR

WAIT WINDOWS’汉字个数为’+nCount

本文来源:https://www.bwwdw.com/article/6ldf.html

Top