VFP-For循环语句
解决问题:
编程计算1到100的累加之和。 CLEAR S=0 && S存放和值 N=1 FOR I=1 TO 100 STEP 1 && I为循环变量 S=S+N && Sn-1+N赋Sn N=N+1 ENDFOR Y ? ”S=”,S RETURN && 输出S的最终值
N
本例执行过程分析
I 1 2 N 1 2 S 0, 0+1 1,1+2
循环结构介绍
在解决实际问题时,有许多操作,特别是对大量数据的处理,往往 需要重复进行。在程序中这种处理要求反复执行某段程序,而且每次 使用的数据都按一定规律变化,这种程序结构称为循环结构。
VFP提供了三种循环结构语句:
条件(当)循环 DO WHILE / ENDDO语句 步长(计数)循环 FOR / ENDFOR循环语句
功能:将10到20中第一个能被3整除的数找出来。
【例2】 求300以内能被17整除的所有整数。 clear for x=1 to 300 if x%17!=0 loop else ?x endif endfor
【例3】
• 为数据表中的“序号(C,4)”字段顺序编号
– 即按照记录的物理顺序对记录的“序号”字段填入一个序号值;
ENDFOR
循环体中可以包含EXIT命令和LOOP命令: LOOP | EXIT
省略 STEP <步长> 时,等价于 STEP 1 LOOP 和 EXIT 语句通常与IF 分支语句相结
合使用 ,以决定是否结束本次循环或是否彻 底退出循环
将初值赋给循环变量 N
循环变量<=终值
Y
循 环 体
语句序列 LOOP循环短路命令
S=S+1/X
ENDFOR ?“倒数和 S=”,S
LOOP
ENDIF
RETURN
FOR循环结构语句的局限性
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
如题目改为: 计算1到100的累加和,但 当和值达到4000时停止计 算,并输出当时的结果
并首记录的序号值为“1”;依此类推,逐一进行编号 – 每次填写共分字段 REPLACE 序号 WITH 数值 – 填写操作从首记录开始,一直到末记录结束;需要进行的替换操 作的次数就是记录的总数
流程与程序代码
打开数据表
统计记录数赋值N
N I<=N Y 指针定位:指向第I号记录 替换“序号”:用I替换“序号字段值”
数据表扫描循环 SACN / ENDSACN语句
1、FOR„ENDFOR语句(步长(计数)循环)
该语句通常用于已知循环次数情况下的循环结构。
FOR 循环变量=初值 TO 终值 [ STEP 步长 ] <语句序列> [ IF <逻辑表达式>
格式:
步长是循环控制变量在每一次循环后变化的数值 执行EXIT命令时,退出整个循环 ENDIF] 可为正数;也可为负数 执行LOOP命令时,结束本次循环
N和I的作用不同,但数
值变化的过程是一样 的,可以“合二为一”
3
4 5
3
4 5
3,3+3
6,6+4 10,10+5
99 100
99 100
…+99 … +100
修改后的程序例
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
【例1】给出一个程序,请说出程序的功能。 clear For n=10 to 20 if n%3=0 ?n exit endif endfor
关闭数据表 结束
【例4】任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X ENDFOR
?“倒数和 S=”,S
RETURN
完善程序:增加判断输入值是否为“0”
CLEAR S=0 FOR N=1 TO 10 INPUT “X=” TO X IF X=0
必须首先确定循环的次数 如不能事先确定,将无能为力
课后作业
1、求n的阶乘。
2、计算1~100之间的偶数和。
Visual FoxPro
§5.2.3循环结构程序设计
——For循环语句
主讲人:胡凤娇
重庆文理学院 软件工程学院11级计科班
复习
1、顺序结构常用的程序语言和格式 输入语句 INPUT “提示文字”;变量列表 输出语句 PRINT “提示文字”;变量列表 赋值语句 变量=表达式 2、条件结构常用的程序语言和格式 IF (1) 条件成立 THEN (2) 条件成立 THEN IF 语句1 语句 ELSE END IF 语句2 END IF
循环问题的提出:编写程序,用于计算1到10的累加之和。
CLEAR NSum=1 NSum=NSum+2 如果将1到10的累加和 NSum=NSum+3 改为1到100累加和,我 …... 们又该怎么办呢? NSum=NSum+9 NSum=NSum+10 ? [1到10的累加之和为 ]+STR(NSum) RETURN
EXIT循环断路命令
循环变量自动增加一个步长
FOR循环命令说明
• 首先将初值赋于循环控制变量 • 如果不超过终值,就执行语句序列
• 之后循环控制变量的值自动增加步长
• 再与终值比较,如果仍不超过终值,则再次执行语句序列 • 如此反复,直到循环变量的值超过终值时退出循环,执行ENDFOR
语句后面的语句
VFP命令总汇
一、第四章 VFP基本命令1.创建: CREATE表名达式[P 69]2.打开数据库:USE 表名[P 73]3. 追加记录:APPEND [BLANK][P 74]成批追加:APPEND FROM 表名[FIELDS 字段名表][FOR 条件式]4.显示记录:LIST/DISPLAY[范围][字段名表][FOR <条件式>][P 76]5. 修改数据库结构:MODIFY STRUCTURE [P 87]6.记录定位:(1)绝对移动:GO/GOTO n/Top/Bottom [P 81](2)相对移动:SKIP ±n7. 插入记录:INSERT [BEFORE] [BLANK] [P 82]8. 删除记录:(1)作标记:DELETE[范围][FOR 条件式][P 85](2)撤消标记:RECALL[范围][FOR 条件式](3)彻底删除:PACK(4)全部清空:ZAP9.修改记录:[P 82](1)编辑修改:EDIT/CHANGE[范围][FIELDS 字段名表][FOR 条件式](2)浏览修改:BROWSE[FIELDS 字段名表][FOR 条件式]10.替换记录:REPLACE[范围][FOR 条件]字段名1 WITH 表达式1,……11.数据查询:[P 97]顺序查询:LOCATE [范围][FOR 条件式]CONTINUE12. 表文件复制:[P 88](1) 表文件复制:COPY TO 新表名[范围][FIELDS 字段名表][FOR 条件式](2) 表文件结构复制:COPY STRUCTURE TO 新表名[FIELDS 字段名表]13. 建立索引:INDEX ON 索引表达式TAG 索引名[P 95]14. 指定主控索引:SET ORDER索引名[P 96]14.索引查询: FIND 字符串/常数和SEEK 表达式[P 97]15.选择工作区:SELECT区号/别名[P 101]16.建立关联:SET RELATION TO 关键字表达式INTO 区号/别名[P 102][注意:临时关联条件是两个表有相同字段;子表对此字段建立索引,并设为主控索引;父表对此字段建立关联]二、第五章程序设计基础1.命令文件的建立、修改和运行 [P114](1)建立程序:MODIFY COMMAND程序名(2)修改程序:MODIFY COMMAND程序名(3)运行程序:DO程序名2.结束命令: [P116](1)CANCEL(结束当前程序,清除程序中定义的变量,返回到交互方式状态)(2)RETURN(结束当前程序,返回到程序调用处)(3)QUIT (退出VFP )3.交互式输入命令:[P117](1)ACCEPT[提示信息]TO 内存变量(只能输入字符型数据)(2)INPUT[提示信息]TO内存变量(主要输入数值型数据)(3)W AIT[提示信息][TO内存变量](常用于暂停)4.格式化输入、输出命令[P122](1)格式化输出命令:@ 行,列SAY表达式(2)格式化输入、输出命令:@ 行,列[SAY表达式]GET 内存变量/字段READ [ SA VE ]5.顺序结构[P123](1)功能:顺次、逐条地执行程序中的命令。
vfp程序设计知识点总结
vfp程序设计知识点总结Visual FoxPro(简称VFP)是一种基于Windows的关系型数据库管理系统和编程语言。
它提供了丰富的功能和工具,用于开发数据库应用程序。
本文将总结VFP程序设计中的关键知识点,并探讨其应用。
一、VFP环境配置VFP程序设计之前,首先需要进行环境配置。
安装VFP软件后,可以通过设置和调整各种选项来满足具体需求,例如界面风格、编辑器设置、代码库配置等。
二、基本语法1. 变量和数据类型:VFP支持多种数据类型,包括字符型、整数型、逻辑型、日期型等。
声明变量时,需要指定数据类型,并赋予初始值。
2. 控制结构:VFP支持常见的控制结构,如条件语句(if-else)、循环语句(for-loop、while-loop)、选择语句(switch-case)等,用于根据不同情况执行相应的代码块。
3. 函数和过程:VFP提供了大量内置函数用于字符串处理、数学计算等操作。
同时,也可以通过自定义函数和过程来扩展VFP的功能,提高代码的复用性和可读性。
三、数据库操作1. 连接数据库:VFP可以连接各种类型的数据库,如Visual FoxPro数据库、SQL Server数据库等。
通过设定数据库连接字符串和使用相应的驱动程序,可以实现与数据库的交互。
2. 数据查询:使用SQL语句或者VFP内置的查询命令,可以实现数据的查询和分析。
通过指定查询条件和选择输出字段,可以灵活地获取所需的数据。
3. 数据处理:VFP提供了各种数据处理的功能,如数据排序、筛选、统计等。
可以通过内置函数和命令,快速实现对数据的操作。
四、用户界面设计1. 窗体设计:VFP提供了窗体设计器,可以通过拖拽和设置属性来创建用户界面。
可以添加各种控件,如按钮、文本框、列表框,以及设计和调整布局。
2. 报表设计:VFP内置了报表设计器,可以生成多种格式的报表,如表格、图表、交叉表等。
可以自定义报表的样式、布局和数据源,实现灵活的报表生成。
2020年全国计算机二级vfp全真模拟考试题库及答案(共九套)
2020年全国计算机二级vfp全真模拟考试题库及答案(共九套)2020年全国计算机二级vfp全真模拟考试题及答案(一)1.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( D ).A)快速排序 B)冒泡排序C)直接插入排序 D)堆排序【解析】除了堆排序算法的比较次数是O(nlog2n ),其他的都是n(n -1)/2.2.设 X="11",Y="1122", 下列表达式结果为假的是( D ).A)NOT(X==Y)AND (X$Y) B)NOT(X$Y)OR (X<>Y)C)NOT(X>=Y) D)NOT(X$Y)【解析】字符串精确比较运算符"==",只有当两个字符串完全相同时,才会是逻辑真,所以X==Y为逻辑假;子串包含测试运算符$,如果运算符前的字符串是运算符后的字符串的一个子字符串,则为逻辑真,所以X$Y为逻辑真;大于等于运算符>=,是对两个字符串自左向右逐个进行比较,一旦发现两个对应字符不同,就根据两个字符的排序序列决定两个字符串的大小,X、Y的前两个字符相同,所以比较第3个字符,由于X只有两个字符,则第3位X小于Y,所以X小于Y,故X>=Y为逻辑假;X<>Y为逻辑真.由以上可得:A)选项中,由于NOT的优先级高于AND,所以先比较NOT(X==Y)为逻辑真,由于X$Y也为逻辑真,所以NOT(X==Y)AND (X$Y)为逻辑真.B)选项中,由于NOT的优先级高于OR,所以先比较NOT(X$Y)为逻辑假,由于X<>Y也为逻辑真,所以NOT(X$Y)OR (X<>Y)为逻辑真.C)选项中,X>=Y为逻辑假,则NOT(X>=Y)为逻辑真.D)选项中,X$Y也为逻辑真,则NOT(X$Y)为逻辑假.3.以下是与设置系统菜单有关的命令,其中错误的是( A ).A)SET SYSMENU DEFAULT B)SET SYSMENU TO DEFAULTC)SET SYSMENU NOSAVE D)SET SYSMENU SAVE【解析】设置系统菜单的命令格式:SET SYSMENU ON | OFF | AUTOMATIC | TO[<>]| TO[<>]| TO[<>]| SAVE | NOSAVE.所以B)选项的SET SYSMENU TO DEFAULT、C)选项的SET SYSMENU NOSAVE、D)选项的SET SYSMENU SAVE都符合这个格式,A)选项中缺少TO关键字,格式不正确.4.在下面的Visual FoxPro表达式中,运算结果不为逻辑真的是( D ).A)EMPTY(SPACE(0)) B)LIKE('xy*', 'xyz')C)AT('xy', 'abcxyz') D)ISNULL(.NULL.)【解析】Space函数返回由指定数目组成的字符串,Space(0)返回空字符串,Empty函数判断指定的表达式的运算结果是否为空,故A)选项为真;Like函数比较前后两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回值为逻辑真,否则为逻辑假,前字符串可包含通配符,故B)选项为真;At函数如果前字符串是后字符串的子串,返回前字符串首字符在后字符串中第几次出现的位置,函数值为数值型,故C)返回的不为逻辑真;Isnull函数判断一个表达式的值是否为空值,故D)选项为真.5.在Visual FoxPro中,用于建立或修改程序文件的命令是( B ).A)MODIFY <文件名> B)MODIFY COMMAND <文件名> C)MODIFY PROCEDURE<文件名> D)MODIFY PROGRAM<文件名> 【解析】用命令方式建立和修改程序文件的命令格式是:MODIFY COMMAND <文件名>.6.在Visual FoxPro中,程序中不需要用PUBLIC等命令明确声明和建立,可直接使用的内存变量是( B ).A)局部变量 B)私有变量 C)公共变量 D)全局变量【解析】内存变量的作用域中,全局变量在任何模块中使用,私有变量不需要通过PUBLIC和LOCAL命令事先声明,而在程序中直接使用,局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用.7.执行USE sc IN 0命令的结果是( B ).A)选择0号工作区打开sc表 B)选择空闲的最小号工作区打开sc 表C)选择第1号工作区打开sc表 D)显示出错信息【解析】在多个工作区打开某个表时,可使用命令:USE <表名> IN <工作区号>,而最小的工作区号是1,如果指定为0,则选择编号最小的空闲工作区,所以USE sc IN 0的结果是选择空闲的最小号工作区打开sc表.8.在查询设计器环境中,"查询"菜单下的"查询去向"不包括( C ).A)临时表 B)表 C)文本文件 D)屏幕【解析】查询去向包括:浏览、临时表、表、图形、屏幕、报表文件、标签文件.四个选项中,查询去向不包括文本文件.9.Modify Command命令建立的文件的默认扩展名是( A ).A)prg B)app C)cmd D)exe【解析】Modify Command命令用于建立和修改程序文件.程序文件的默认扩展名是prg.10.扩展名为mpr的文件是( B ).A)菜单文件 B)菜单程序文件 C)菜单备注文件 D)菜单参数文件【解析】mpr是菜单程序文件的扩展名,菜单文件的扩展名是mnx,菜单备注文件的扩展名是mnt,菜单参数文件不存在.11.在菜单设计中,可以在定义菜单名称时为菜单项指定一个访问键.规定了菜单项的访问键为"x" 的菜单名称定义是( C ).A)综合查询<(x) B)综合查询/<(x) C)综合查询(<x) D)综合查询(/<x)【解析】在指定菜单名称时,如果要设置菜单项的访问键,方法是在要作为访问键的字符前加上"<"两个字符.为"综合查询"设定访问键"x"的正确方法是:综合查询(《x).12.计算每名运动员的"得分"的正确SQL命令是( D ).A)B)C)D)【解析】本题考查SQL数据更新语句.该语句的基本命令格式为:UPDATE 数据表名 SET 字段名=更新表达式值 WHERE 条件表达式.当不使用WHERE子句时,则更新全部记录.套用UPDATE的命令格式,本题的正确答案为D).13.在Visual FoxPro中,报表的数据源不包括( D ).A)视图 B)自由表 C)查询 D)文本文件【解析】数据库的报表总是与一定的数据源相联系,在设计报表时,首先要确定报表的数据源.报表的数据源通常是数据库中的表或自由表,也可以是视图、查询或临时表.当数据源中的数据更新之后,使用同一报表文件打印的报表将反映新的数据内容,但报表的格式不变.文本文件不能作为报表的数据源,因此本题选D).2020年全国计算机二级vfp全真模拟考试题及答案(二)1.下列叙述中正确的是( A ).A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间【解析】链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误.链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误.2.在软件开发中,需求分析阶段可以使用的工具是( B ).A)N-S图 B)DFD图 C)PAD图 D)程序流程图【解析】在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B).3.在面向对象方法中,不属于"对象"基本特点的是( A ).A)一致性 B)分类性 C)多态性 D)标识唯一性【解析】对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好.所以选择A).4.设置文本框显示内容的属性是( A ).A)Value B)Caption C)Name D)InputMask【解析】文本框的Value属性是文本框的当前内容;Name属性指定在代码中用以引用对象的名称;InputMask属性指定在一个文本框中如何输入和显示数据;文本框无Caption属性.5.在Visual FoxPro中可以建立表的命令是( A ).A)CREATE B)CREATE DATABASE C)CREATE QUERY D)CREATE FORM【解析】用命令方式建立数据库表的是在命令窗口利用 OPEN DATA 命令先打开数据库,然后利用CREATE命令打开表设计器进行数据表设计.6.为了隐藏在文本框中输入的信息,用占位符代替显示用户输入的字符,需要设置的属性是( D ).A)Value B)ControlSource C)InputMask D)PasswordChar 【解析】文本框的Value属性是文本框的当前内容;ControlSource 属性为文本框指定一个字段或内存变量,运行时,文本框首先显示该变量的内容;InputMask属性指定在一个文本框中如何输入和显示数据;PasswordChar属性指定文本框控件内是显示用户输入的字符还是显示占位符;指定用作占位符的字符.7.假设某表单的Visible属性的初值为.F.,能将其设置为.T.的方法是( B ).A)Hide B)Show C)Release D)SetFocus【解析】表单的Hide方法用于隐藏表单,该方法将表单的Visible属性设置为.F.;Show方法用于显表单,该方法将表单的Visible属性值设为.T.,使之成为活动表单;Release方法用于从内存中释放表单;SetFocus方法让表单获得焦点,使其成为活动表单.所以符合此题的方法是Show.8.在Visual FoxPro中,编译或连编生成的程序文件的扩展名不包括( C ).A)APP B)EXE C)DBC D)FXP【解析】Visual FoxPro程序文件通过编译、连编,可以产生不同的目标代码文件,这些文件具有不同的扩展名:.exe(Visual FoxPro可执行文件),.app(Visual FoxPro应用程序文件)->.fxp(Visual FoxPro 编译版本).9.如果有定义LOCAL data,data的初值是( D ).A)整数0 B)不定值 C)逻辑真 D)逻辑假【解析】声明局部变量的命令是:LOCAL <内存变量表>.该命令建立指定的局部内存变量,并为它们赋初值逻辑假.F..10.执行如下命令序列后,最后一条命令的显示结果是( C ).DIMENSION M(2,2)M(1,1)=10M(1,2)=20M(2,1)=30M(2,2)=40?M(2)A)变量未定义的提示 B)10 C)20 D) .F.【解析】创建数组的命令格式有两种DIMENSION <数组名> (<下标上限1>[,<下标上限2])[...]DECLARE <数组名> (<下标上限1>[,<下标上限2])[...]两种格式的功能完全相同.数组创建后,系统自动给每个数组元素赋以逻辑假.F..可以用一维数组的形式访问二维数组.本题中M(2)与M(1,2)是同一变量,所以M(2)的值为20.11.如果在命令窗口执行命令:LIST 名称,主窗口中显示:记录号名称1 电视机2 计算机3 电话线4 电冰箱5 电线假定名称字段为字符型、宽度为6,那么下面程序段的输出结果是( A ).GO 2SCAN NEXT 4 FOR LEFT(名称,2)="电"IF RIGHT(名称,2)="线"EXITENDIFENDSCAN名称A)电话线 B)电线 C)电冰箱 D)电视机【解析】LEFT(<字符表达式>,<数值表达式>)功能是从字符表达式左边开始,截取<数值表达式>指定长度的字符串.RIGHT(字符表达式, 数值表达式):返回一个字符串右边的若干字符,返回值是字符型.本题是从2、3、4、5四条记录中,找出第一个字是"电",最后一个字是"线"的第一个符合的记录,并显示出来,由此可知第3条记录"电话线"符合.12.在下面的Visual FoxPro表达式中,运算结果为逻辑真的是( B ).A)EMPTY(.NULL.) B)LIKE(′xy?′, ′xyz′)C)AT(′xy′, ′abcxyz′) D)ISNULL(SPACE(0))【解析】EMPTY(<表达式>)根据指定表达式的运算结果是否为"空"值,返回逻辑真(.T.)或逻辑假(.F.),这里所指的"空"值与NULL值是两个不同的概念,函数EMPTY(.NULL.)的返回值为逻辑假,所以A)选项为逻辑假;LIKE(<字符串表达式1>,<字符串表达式2>)比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真,否则返回逻辑假,其中字符串表达式1中可包含通配符*和?,*表示若干个任意字符,?表示任意一个字符,所以LIKE(′xy?′, ′xyz′)为逻辑真;AT(<字符串表达式1>,<字符串表达式2>)的函数值为数值型,C)选项不正确;ISNULL(<表达式>)判断一个表达式的运算结果是否为NULL 值,若是NULL值则返回逻辑真,否则返回逻辑假,SPACE(<数值表达式>)返回由指定数目的空格组成的字符串,所以SPACE(0)为空字符串,ISNULL(SPACE(0) )为逻辑假.13.假设职员表已在当前工作区打开,其当前记录的"姓名"字段值为"李彤"(C型字段).在命令窗口输入并执行如下命令:姓名=姓名-"出勤"?姓名屏幕上会显示( A ).A)李彤 B)李彤出勤 C)李彤出勤 D)李彤-出勤【解析】C型字段即字符型字段,其表示方法是用半角单引号、双引号或方括号把字符串括起来,字符型变量的定界符必须成对匹配,如果某种定界符本身也是字符串的内容,则需要用另一种定界符为该字符串定界.本题输出结果为"李彤".14.设有学生选课表SC(学号,课程号,成绩),用SQL命令检索同时选修了课程号为"C1"和"C5"课程的学生的学号的正确命令是( D ).A)SELECT 学号 FROM SC WHERE 课程号= 'C1' AND 课程号= 'C5'B)SELECT 学号 FROM SC WHERE 课程号='C1' AND 课程号=(SELECT 课程号 FROM SC WHERE课程号= 'C5')C)SELECT 学号 FROM SC WHERE 课程号='C1' AND 学号=(SELECT 学号 FROM SC WHERE课程号= 'C5')D)SELECT 学号 FROM SC WHERE 课程号='C1' AND 学号 IN (SELECT 学号 FROM SC WHERE课程号= 'C5')【解析】这个查询不能用简单的查询实现,所以要用到嵌套查询,在嵌套查询中内外层的嵌套用IN而不用"=",D)选项正确.15.设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL命令是( D ).A)SELECT 学号,姓名,课程名,成绩 FROM S,SC,C WHERE S.学号=SC.学号AND SC.学号= C.学号B)SELECT 学号,姓名,课程名,成绩 FROM (S JOIN SC ON S.学号=SC.学号)JOIN C ON SC.课程号= C.课程号C)SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON S.学号= SC.学号ON SC.课程号= C.课程号D)SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON SC.课程号= C.课程号 ON S.学号= SC.学号【解析】SQL是顺序执行命令语句,在多表联接查询时,各条件短语的执行顺序会影响到最终的查询结果.检索学号、姓名和学生所选课程的课程名和成绩,应为SELECT S.学号,姓名,课程名,成绩.A)、B)选项错误,而C)选项格式错误,选项D)正确.16.设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,计算刘明同学选修的所有课程的平均成绩,正确的SQL语句是( D ).A)SELECT AVG(成绩)FROM 选课 WHERE 姓名="刘明"B)SELECT AVG(成绩)FROM 学生,选课 WHERE 姓名="刘明"C)SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.姓名="刘明"D)SELECT AVG(成绩)FROM 学生,选课 WHERE 学生.学号=选课.学号AND 姓名="刘明"【解析】SQL的核心是查询,它的基本形式由SELECT-FROM-WHERE查询块组成.其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,可以对单个表或多个表进行查询,WHERE说明查询条件,即选择元组的条件.要计算刘明同学选修的所有课程的平均成绩,应设置where条件为WHERE 学生.学号=选课.学号 AND 姓名="刘明",即D)选项正确.17.设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,并假定学号的第3、4位为专业代码.要计算各专业学生选修课程号为"101"课程的平均成绩,正确的SQL语句是( B ).A)SELECT 专业 AS SUBS(学号,3,2),平均分 AS AVG (成绩)FROM 选课 WHERE 课程号="101" GROUP BY 专业B) SELECT SUBS(学号,3,2)AS 专业, AVG(成绩)AS 平均分 FROM 选课 WHERE 课程号="101" GROUP BY 1C) SELECT SUBS(学号,3,2)AS 专业, AVG(成绩)AS 平均分 FROM 选课 WHERE 课程号="101" ORDER BY 专业D) SELECT专业 AS SUBS(学号,3,2),平均分 AS AVG (成绩)FROM 选课 WHERE 课程号="101" ORDER BY 1【解析】SUBSTR(<字符表达式>,<起始位置>[,<长度>])为取子串函数,从指定表达式值的指定起始位置取指定长度的子串作为函数值.要计算各专业学生选修课程号为"101"课程的平均成绩,应按学号分组,即GROUP BY 1.因此B)为正确选项.18.设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,查询选修课程号为"101"课程得分最高的同学,正确的SQL 语句是( D ).A)SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号="101" AND 成绩>=ALL(SELECT 成绩 FROM 选课)B)SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=ALL (SELECT 成绩 FROM 选课 WHERE 课程号="101")C)SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=ANY(SELECT 成绩 FROM 选课 WHERE 课程号="101")D)SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号="101" AND 成绩>=ALL (SELECT 成绩 FROM 选课 WHERE 课程号="101")【解析】查询的基本形式由SELECT-FROM-WHERE查询块组成.其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件,即选择元组的条件.内层"SELECT 成绩 FROM 选课 WHERE 课程号="101""语句查询出了选修课程号为101的成绩,外层格式正确的为D)选项.19.假定一个表单里有一个文本框Text1和一个命令按钮组CommandGroup1.命令按钮组是一个容器对象,其中包含Command1和Command2两个命令按钮.如果要在Command1命令按钮的某个方法中访问文本框的Value属性值,正确的表达式是( B ).A)This.ThisForm.Text1.ValueB)This.Parent.Parent.Text1.ValueC)Parent.Parent.Text1.Value D)This.Parent.Text1.Value 【解析】在容器的嵌套层次关系中,引用其中某个对象,需指明对象在嵌套层次中的位置.经常要用到的关键字是:Parent(对象的直接容器对象,即父对象);This(当前对象);ThisForm(当前表单);ThisFormSet(当前表单集).本题this.Parent 是CommandGroup1,this.Parent.Parent. 是CommandGroup1的Parent,即form1.所以要在Command1命令按钮的某个方法中访问文本框的Value属性值,正确的表达式是This.Parent.Parent.Text1.Value,即选项B).2020年全国计算机二级vfp全真模拟考试题及答案(三)1.支持子程序调用的数据结构是( A ).A)栈 B)树 C)队列 D)二叉树【解析】栈支持子程序调用.栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A).2.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( C ).A)10 B)8 C)6 D)4【解析】根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个.3.有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为( B ).A)选择 B)投影 C)插入 D)连接【解析】投影运算是指对于关系内的域指定可引入新的运算.本题中S 是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系.所以选择B).4.在Visual FoxPro中,有如下程序,函数IIF()返回值是( A ).*程序PRIVATE X, YSTORE "男" TO XY = LEN(X)+2? IIF( Y < 4, "男", "女")RETURNA)"女" B)"男" C) .T. D) .F.【解析】iif函数测试逻辑表达式的值,若为逻辑真,函数返回前表达式的值,否则返回后表达式的值;Len函数中一个中文字符占两个字符,所以Y的值为4,Y<4为假,iif()的结果为"女".5.计算结果不是字符串"Teacher"的表达式是( A ).A)at("MyTeacher",3,7) B)substr("MyTeacher",3,7)C)right("MyTeacher",7)D)left("Teacher",7)【解析】at(<字符表达式1>,<字符表达式2>,<数值表达式>)函数如果前字符串是后字符串的子串,返回前字符串首字符在后字符串中第几次出现的位置,表达式at("MyTeacher",3,7)不正确;substr函数从指定表达式值的指定位置取指定长度的子串作为函数,substr("MyTeacher",3,7)的值为"Teacher";left从指定表达式值的左端取一个指定长度的子串作为函数值,right("MyTeacher",7) 的值为"Teacher";right从指定表达式值的右端取一个指定长度的子串作为函数值,left("Teacher",7) 的值为"Teacher".6.下列程序段执行时在屏幕上显示的结果是( D ).DIME a(6)a(1)=1a(2)=1FOR i=3 TO 6a(i)=a(i-1)+a(i-2)NEXT?a(6)A)5 B)6 C)7 D)8【解析】For循环中的语句a(i)=a(i-1)+a(i-2)是指定每个元素的值为它的前两项的和,这个元素必须只能从第3项开始指定.由于前两项分别是1、1,所以数组a的六个元素分别是1,1,2,3,5,8;元素a(6)的值是8.7.下列函数返回类型为数值型的是( B ).A)STR B)VAL C)CTOD D)DTOC【解析】str函数把数值转换成字符串,返回值是字符型;val函数字符串转换成数值,返回值是数值型;ctod函数字符转换成日期,返回值是日期型;dtoc函数日期转换成字符,返回值是字符型.8.下列程序段执行时在屏幕上显示的结果是( B ).x1=20x2=30SET UDFPARMS TO VALUEDO test WITH x1,x2?x1,x2PROCEDURE testPARAMETERS a,bx=aa=bb=xENDPROA)30 30 B)30 20 C)20 20 D)20 30【解析】根据过程test的代码可以分析出:test的功能是将传递的两个参数互换.变量x1,x2的初始值是20、30,经过"DO test WITH x1,x2"的调用后,x1,x2的值互换,值分别是30、20.9.为当前表中所有学生的总分增加10分,正确的命令是( D ).A)CHANGE 总分WITH 总分+10B)REPLACE总分WITH 总分+10C)CHANGE ALL 总分WITH 总分+10D)REPLACE ALL 总分WITH 总分+10【解析】直接修改记录的值,可以使用REPLACE命令,其格式为: REPLACE FieldName WITH eExpression [, FieldName2 WITH eExpression2] … [FOR iExpression]本题中A)、C)选项不对.因要对所有学生的总分增加10分,所以要用ALL表示全部记录.10.在Visual FoxPro中,扩展名为mnx的文件是( D ).A)备注文件 B)项目文件 C)表单文件 D)菜单文件【解析】mnx是菜单文件的扩展名;备注文件的扩展名是fpt;项目文件的扩展名是pjx;表单文件的扩展名是scx.11.如果内存变量和字段变量均有变量名"姓名",那么引用内存变量错误的方法是( C ).A)M.姓名 B)M->姓名 C)姓名 D)M【解析】每一个变量都有一个名字,可以通过变量名访问变量.如果当前表中存在一个和内存变量同名的字段变量,则在访问内存变量时,必须在变量名前加上前缀M.(或M->),否则系统将访问同名的字段变量.12.MODIFY STRUCTURE命令的功能是( B ).A)修改记录值 B)修改表结构 C)修改数据库结构 D)修改数据库或表结构【解析】在命令窗口执行入MODIFY STRUCTURE命令,则打开表设计器,对表结构进行修改;修改数据库的命令是MODIFY DATABASE;修改记录值的命令是REPLACE.13.欲执行程序temp.prg,应该执行的命令是( B ).A)DO PRG temp.prg B)DO temp.prg C)DO CMD temp.prg D)DO FORM temp.prg【解析】运行程序文件的命令方式是: DO <文件名>.文件为扩展名为.prg的程序文件.14.关于视图和查询,以下叙述正确的是( C ).A)视图和查询都只能在数据库中建立 B)视图和查询都不能在数据库中建立C)视图只能在数据库中建立 D)查询只能在数据库中建立【解析】视图是数据库中的一个特有功能,视图只能创建在数据库里.而查询从指定的表或视图中提取满足条件的记录,可以不在数据库中创建.因此视图只能在数据库中建立,而查询可以不在数据库中建立.15.SQL的SELECT语句中,"HAVING <条件表达式>"用来筛选满足条件的( D ).A)列 B)行 C)关系 D)分组【解析】在SQL的SELECT语句中HAVING短语要结合GROUP BY 使用,用来进一步限定满足分组条件的元组,因此D)选项正确.16.设有关系SC(SNO,CNO,GRADE) ,其中SNO、CNO分别表示学号和课程号(两者均为字符型) ,GRADE表示成绩(数值型) .若要把学号为"S101"的同学,选修课程号为"C11",成绩为98分的记录插入到表SC中,正确的SQL语句是( D ).A)INSERT INTO SC(SNO, CNO, GRADE)VALUES ('S101', 'C11', '98')B)INSERT INTO SC(SNO, CNO, GRADE)VALUES (S101, C11, 98)C)INSERT ('S101','C11','98' )INTO SCD)INSERT INTO SC VALUES ('S101','C11', 98)【解析】插入命令:INSERT INTO <表名> [(<属性列1>,<属性列2>...)] VALUES (eExpression1[,eExpression2,...]),若插入的是完整的记录时,可以省略<属性列1>,<属性列2>...;另外,SNO、CNO为字符型,故其属性值需要加引号,数值型数据不需要加引号.17.以下有关SELECT短语的叙述中错误的是( B ).A)SELECT短语中可以使用别名B)SELECT短语中只能包含表中的列及其构成的表达式C)SELECT短语规定了结果集中列的顺序D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定【解析】SELECT短语中除了包含表中的列及其构成的表达式外,还可以包括常量等其他元素,在SELECT短语中可以使用别名,并规定了结果集中的列顺序,如果FROM短语中引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定.18.在SELECT语句中,以下有关HAVING短语的正确叙述是( A ).A)HAVING短语必须与GROUP BY短语同时使用B)使用HAVING短语的同时不能使用WHERE短语C)HAVING短语可以在任意的一个位置出现D)HAVING短语与WHERE短语功能相同【解析】HAVING子句总是跟在GROUP BY子句之后,而不可以单独使用,HAVING子句和WHERE子句并不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组.因此A)选项说法正确.19.在SQL的SELECT查询的结果中,消除重复记录的方法是( C ).A)通过指定主索引实现 B)通过指定唯一索引实现C)使用DISTINCT短语实现 D)使用WHERE短语实现【解析】SQL的核心是查询.SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成.其中SELECT说明要查询的字段,如果查询的字段需去掉重复值,则要用到DISTINCT短语;FROM 说明要查询的字段来自哪个表或哪些表,可以对单个表或多个表进行查询,WHERE说明查询条件,即选择元组的条件.因此C)为正确选项.20.在Visual FoxPro中,如果要将学生表S(学号,姓名,性别,年龄)中"年龄"属性删除,正确的SQL命令是( A ).A)ALTER TABLE S DROP COLUMN 年龄 B)DELETE 年龄 FROM S C)ALTER TABLE S DELETE COLUMN 年龄 D)ALTER TABLE S DELETE 年龄。
VFP程序(学生)
第一部分:程序入门一、选择结构(IF - ELSE - ENDIF)语句格式:IF〈条件〉〈语句序列1〉[ ELSE〈语句序列2〉]ENDIF说明:IF和ENDIF必须配对使用。
二、循环结构1、条件循环:语句格式:DO WHILE 〈条件表达式〉〈语句序列1〉[LOOP]〈语句序列2〉[ EXIT ]〈语句序列3 〉ENDDO说明:遇LOOP,则执行DO语句,测试条件决定是否继续循环;若遇EXIT,则直接跳出循环,执行ENDDO后语句。
注意:DO WHILE必须和ENDDO配合使用,DO WHILE语句前一定要有条件变量的初始值。
2、计数循环FOR〈循环变量〉=〈循环初值〉TO〈循环终值〉[STEP〈步长〉] 〈语句序列1〉[LOOP]〈语句序列2〉[EXIT]〈语句序列3〉ENDFOR/NEXT说明:使用和DO WHILE 基本一致,注意步长和ENDFOR语句。
三、程序举例:A类:简单整除,求和求个数e.g.:求[10,100]内能被2整除的整数的和(2530),个数(46)(试用for循环)set talk offclearn=0 &&设置计数变量s=0 &&设置求和变量i=10 &&设置循环变量do while i<=100 &&循环开始及结束if mod(i,2)=0 &&判断整除条件n=n+1 &&满足条件计数变量加1s=s+i &&满足条件,求和变量增加endif &&结束条件i=i+1 &&循环变量累加enddo &&此句使循环回到do while 处? n,s &&输出结果set talk onreturnA1.求[10,100]内能被7和9中至少一个数整除的整数的个数(22),和(1250)。
set talk offn=0s=0i=10do while i<=100if mod (i,7)=0.or.mod (i,9)=0n=n+1s=s+iendifi=i+1enddo?n,sset talk onreturnA2.求[10,100]内能被7但不能被9整除的整数的个数(12), (665)。
VFP第4、5部分(循环结构)
步长可正可负
* 仍计算阶乘 此处步长为负 仍计算阶乘,此处步长为负 clea Input "请输入自然数 to n 请输入自然数:" 请输入自然数 j=1 for i=n to 1 step -1 j=j*i endfor ? N, "!= ",j return
当循环
步长循环
input “请输入终值:” to n 请输入终值: 请输入终值 input “请输入步长:” to k 请输入步长: 请输入步长 i=1 do while i<=n <命令序列 命令序列> 命令序列 i=i+k endddo for i=1 to n step k <命令序列 命令序列> 命令序列 endfor|next
改变循环变量值 clea s=0 i=1 do while i<=100 s=s+i i=i+1 enddo ?"1+2+3+...+100=",s retu
例:求n的阶乘 的阶乘
clea Input "请输入自然 数:" to n j=1 for i=1 to n j=j*i endfor ? N, "!= ",j return * 100以内自然数求和 以内自然数求和 clea s=0 for i=1 to 100 s=s+i endfor ? "1+2+3+...+100=",s return
DO WHILE .T. 结构
• 此种表述的条件,必须设置强制退出的语 此种表述的条件, 句来完成退出循环, 句来完成退出循环,否则会出现死循环的 情形。 情形。 DO WHILE .T. … EXIT &&用来强制退出循环 用来强制退出循环 … ENDDO
9.3 VFP 6.0 程序设计基本语法结构
input “请输入X的值:” to x Do case case x >0 y=1 case x<0 y= -1 case x=0 y=0 endcase ?y
Y=
0 -1
例:求一元二次方程ax2+bx+c=0的根(设a不等于0) input "input a: " to a input "input b: " to b 2 input "input c: " to c del = b*b- 4*a*c do case case del>0 x1=(-b+sqr(del))/(2*a) case del=0 wait windows "方程有两个相等的实数根:" otherwise wait windows "方程有两个复数根:" endcase
三、循环结构-- SCAN…ENDSCAN
语法格式 SCAN [范围][FOR<条件>][ WHILE<条件>] <语句组> ENDSCAN
说明
– 该语句用于对表中记录进行类似处理 – SCAN语句自动控制记录指针移到 下一条记录,并执行循环体
示 例
显示教师表中记录号为双号教师的工号和姓名 use js
阅读程序,给出运行结果
s=1 i=0 do while i<10 if i%2=0 s=s+i endif i=i+1 enddo ?s 21 return
阅读程序,给出运行结果 clear for i=1 to 5 ? space(i) for j=1 to 11-2*i ?? „*‟ endfor Endfor Return
《VFP语言程序设计》考试试题及参考答案
《VFP 语言程序设计》考试试卷年级 专业 姓名 学号 座位号一、单项选择(在备选答案中选出一个正确答案,将答题卡上对应的选项涂黑。
每题2分,共50分)01.按照数据库管理系统采用的数据模型Visual FoxPro 是_____DBMS 。
A )层次型 B )混合型 C )关系型 D )网状型02.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)三者之间的关系是_____。
A )DBS 包括DB 和DBMS B )DBMS 包括DB 和DBSC )DB 包括DBS 和DBMSD )DBS 就是DB ,也就是DBMS 03.关系数据库管理系统存储与管理数据的基本形式是_____。
A )关系树B )二维表C )结点路径D )文本文件04.用户启动Visual FoxPro 后,若要退出Visual FoxPro 回到Windows 环境,可在命令窗口中输入_____命令。
A )EXITB )CLOSEC )SYSTEMD )QUIT 05.Visual FoxPro 的最大特点是______。
A) 面向过程编程技术 B) 面向对象编程技术 C) 结构化编程技术 D) 界面友好06.在Visual FoxPro 数据库管理系统中,下列数据是常量的是_____。
A )T B ).T. C )TOP D )02/10/9907.在Visual FoxPro 中,下列定义的变量名中,错误的是_____。
A )ABC B )3A C )A_3 D )A3 08.下列四个选项中,结果相同的是 。
A )LEET(″Visual FoxPro″,6)与SUBSTR(″Visual FoxPro″,1,6)B )YEAR(DA TE())与SUBSTR(DTOC(DATE()),7,2)C )AT(″5″,″36-5*4″)与LEN(″36-5*4″)D )假定A=″this ″,B=″is a string″,A-B 与A+B 09.在Visual FoxPro 中说明数组的命令是_____。
vf
实验四程序设计初步一、目的和要求1. 掌握顺序结构、分支结构、循环结构。
2. 掌握子程序、过程、函数的区别和具体应用。
二、实验原理VFP中包括三种基本控制结构:顺序结构、分支结构与循环结构。
常见的分支和循环结构如下所示。
分支语句格式:IF <逻辑表达式><语句序列1>[ELSE<语句序列2>]ENDIF多分支语句格式:DO CASECASE <逻辑表达式1><语句序列1>CSAE <逻辑表达式2><语句序列2>…CASE <逻辑表达式n><语句序列n>[OTHERWISE<语句序列n+1>]ENDCASEWHILE循环语句格式:DO WHILE <逻辑表达式><语句序列>ENDDOFOR循环语句格式:FOR <内存变量>=<数值表达式1> TO <数值表达式2> [STEP <数值表达式3>] <语句序列>ENDFORSCAN循环语句格式:SCAN [<范围>] [FOR< 逻辑表达式1>] [WHILE< 逻辑表达式2>]<语句序列>ENDSCAN应用程序一般包含多个模块,模块是可以命名的一个程序段,可以指主程序、子程序和自定义函数。
各种调用形式如下所示。
三、实验内容及步骤1.编一个程序,能根据记录号修改某设备的价格和部门。
*e4-1.prgclearuse sb@10,5 say "修改设备的价格"?input "请输入记录号:" to jlhdisplay 价格record jlhinput "请重新输入第"+str(jlh,1)+"个设备的价格:" to jg replace 价格with jgdisplay 价格use2.编一个程序,能打开任意表浏览。
VFP-For循环语句解读
关闭数据表 结束
【例4】任意输入的10个数值的倒数之和
CLEAR S=0 FOR N=1 TO 10 INPUT “X= ” TO X S=S+1/X ENDFOR
?“倒数和 S=”,S
RETURN
完善程序:增加判断输入值是否为“0”
CLEAR S=0 FOR N=1 TO 10 INPUT “X=” TO X IF X=0
解决问题:
编程计算1到100的累加之和。 CLEAR S=0 && S存放和值 N=1 FOR I=1 TO 100 STEP 1 && I为循环变量 S=S+N && Sn-1+N赋Sn N=N+1 ENDFOR Y ? ”S=”,S RETURN && 输出S的最终值
N
本例执行过程分析
I 1 2 N 1 2 S 0, 0+1 1,1+2
N和I的作用不同,但数
值变化的过程是一样 的,可以“合二为一”
3
4 5
3
4 5
3,3+3
6,6+4 10,10+5
99 100
99 100
…+99 … +100
修改后的程序例
CLEAR S=0 FOR I=1 TO 100 S=S+I ENDFOR ? ”S=”,S RETURN
【例1】给出一个程序,请说出程序的功能。 clear For n=10 to 20 if n%3=0 ?n exit endif endfor
EXIT循环断路命令
循环变量自动增加一个步长
FOR循环命令说明
• 首先将初值赋于循环控制变量 • 如果不超过终值,就执行语句序列
vfp中for循环语句中循环变量的计算次数
vfp中for循环语句中循环变量的计算次数下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
vfp中for循环语句中循环变量的计算次数该文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document vfp中for循环语句中循环变量的计算次数 can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop providesyou with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to knowdifferent data formats and writing methods, please pay attention!在Visual FoxPro(VFP)中,for循环语句是一种重要的控制结构,用于重复执行一段代码块,直到满足某个条件为止。
