资源描述
湖南省计算机水平考试二级VFP强化培训班
讲授内容:
1. 常量与运算符号
常用几种常量:字符型、数字型、日期型、逻辑型
运算符号:数字运算符、关系运算符、逻辑运算符
2. 体现式与函数
弄清常用几种类型体现式和常用函数
3. 选用构造(if--endif、if—else--endif、do case--endcase语句)
4. 循环构造(do while--enddo、for--endfor、exit和loop语句)
5. 数组
6. 改错和填空常用问题分析和举例
7.程序设计
常量与运算符号
常量:
数字型常量
字符型常量
日期型常量
逻辑型常量
运算符号:
算术运算符号:+ - * / ^ ** %
关系运算符号:> >= < <= = = = != <> # $
逻辑运算符号:not and or
体现式与函数
一、体现式
注意事项:尤其要弄清括号使用,乘号不能省,运算先后次序
二、函数
某些常用函数:如 int mod sqrt year date round len right substr left 等选用构造
1. 格式
格式1:
if (体现式)
语句序列
endif
格式2:
if (体现式)
语句1
else
语句2
endif
2. 功能
重要是进行条件判断,然后根据条件与否满足来进行对应不一样处理,实现分支构造程序设计
3. 执行过程
过程:先进行判断条件,再进行不一样处理.
4. 注意
(1) 体现式可以是关系体现式、逻辑体现式,其体现式值是为逻辑值.
常用关系运算符号:
> >= < <= = == != # <>
逻辑运算符号:
not and or
if a>b>c
if a!=b ,b!=c
if mod(7/3)=0
以上三种条件都是错误
(2) if语句嵌套搞不清晰时,尽量使用单if语句。如:
if (a>0)
if (b>10)
c=c+1
endif
endif
可改成:
if (a>0 and b>10)
c=c+1
endif
5. do case --endcase语句
格式:
do case switch
case 体现式1
语句序列1
case 体现式2
语句序列2
…
case 常量n
语句序列n
[default
语句序列n+1]
endcase
注意:
(1) 体现式为关系或逻辑体现式
(2) 体现式成果是逻辑值
循环构造
1. do while--enddo语句
格式:
do while 体现式
循环体语句
enddo
2. for--enddo语句
格式:
for x=a to b step c
循环体语句
endfor
对于上述二种循环构造要理解下面几种问题:
(1) 体现式是循环控制条件,与if语句中体现式同样。
(2) 二种循环语句执行过程。
3. exit和loop语句
数组
1. 数组定义
格式:dime 一维数组(常量)
二维数组:dime 数组名(常量1,常量2)
注意:
(1) 数组元素下标从1开始到长度
dime a(5)
数组元素有:a(1) a(2) a(3) a(4) a(5)
下标从1变化到5
dime b(2,4)
数组元素有:
b(1,1) b(1,2) b(1,3) b(1,4)
b(2,1) b(2,2) b(2,3) b(2,4)
数组没送初始值时,一律为.F.
2. 数组引用
引用数组元素名(直接方式)和引用数组名。
a=100
体现把a数组中所有元素送初值为100
a(1)=”1111”
改错题
clear
s=0
for n=10 to 200
*下行有错
if mod(n,6)=0 and mod(n,8)=0
*下行有错
s=sqrt(s+n)
endif
endfor
?round(s,0)
单击”考生文献夹”,进入下面界面
首先看清题目,有几种错误提醒行,则必要改正几种错误。每一种错误在提醒行下一行。运行程序,填上对旳答案。先后不要加空格,数据输出不要在中文输入状态
程序填空题:
单击考生文献夹,进入下个界面
set talk off
x=0
do while x<=7
y=_____
if _______
?y
endif
endfor
return
程序改错题举例:
1. 变量赋初值错误。(一般状况:求和变量初值为0,求积初始值为1)。
如下程序求[1,1000]之间能被5 和 7 整除数之和。请改正程序中错误,并运行修改后程序,给出对旳程序运行成果,填入对应窗口。
clear
/*下行有错*/
sum=1
for i=1 to 1000
/*下行有错*/
if mod(i,5)=0 or mod(i,7)=0
sum=sum+i;
?sum
return
2. 运算出错。常用错误:%用/,=用!=,or用and,可反过来用。
如下程序求[1,1000]之间能被5 和 7 整除数之和。请改正程序中错误,并运行修改后程序,给出对旳程序运行成果,填入对应窗口。
clear
/*下行有错*/
sum=1
for i=1 to 1000
/*下行有错*/
if mod(i,5)=0 or mod(i,7)=0
sum=sum+i;
?sum
return
3. 边缘条件出错误,应当是<= 或>=时,只有<或>
如下程序求[1,500]之间能被3 或5整除数之和。请改正程序中错误,并运行修改后程序,给出对旳程序运行成果.
clear
sum=0
i=1
/*下行有错*/
do while i<500
if mod(i,3)=0) or mod(i,5)=0
sum=sum+i
endif
i=i+1
enddo
?sum
4. 算法出错
下面程序是求500以内所有素数之和。请修改程序中错误,使它能得出对旳成果,并给出对旳成果。程序:
clear
s=0
for x=2 to 500
f=1
for y=2 to x-1
/*下行有错*/
if x/y=0
f=0
endif
endfor
if f=1
s=s+x
endif
endfor
?s
return
8.体现式出错(“*”导致错误)
T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))
当M为70时,求出上述体现式值。
CLEAR
/*下行程序有错*/
T=0
FOR I=2 TO 70
/*下行程序有错*/
T=T+1/I*(I+1)
ENDFOR
?T
RETURN
9.成果是求个数,不是求累加和。
下面程序是求[20,1000]之间同步满足除4余3或除5余4条件数个数。请修改程序中错误,使它能得出对旳成果,并给出对旳成果,填入对应窗口。
程序:
clear
count=0;
for i=20 to 1000
if mod(i,4)=3 or mod(i,5)=4
/*下行有错*/
count=count+i;
endif
endfor
?count
Return
10.for语句三个体现式出错。
下面程序是求体现式值:
s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+
(1*2*3*....*n)/(3*5*7*.....(2*n+1))
当n=20时,程序运行成果(按四舍五入保留10位小数)。程序:
clear
/*下行有错*/
s=0
t=1
/*下行有错*/
for i=1 to 20 step -1
t=t*i/(2*i+1);
s=s+t
endfor
?round(s,0)
return
11.奇偶数问题
下面程序是求[20,160]之间所有偶数平方和。请修改程序中错误,使它能得出对旳成果,并给出对旳成果,填入对应窗口。
程序:
clear
sum=0
/*下行有错*/
for i=160 to 20
/*下行有错*/
if (mod(i/2)!=0)
sum=sum+i*i;
endif
endfor
?sum
return
程序填空题举例:
1.编写求10000以内所有完数之和(该数等于其不反复因子相加,因子波及1。例如6=1+2+3是完数,不过8¹1+2+4,因此不是完数。)8659
SET TALK OFF
CLEAR
SUM=0
FOR X=1 TO 10000
s=1
FOR I=2 TO X-1
IF ______1_____
s=s+i
ENDIF
ENDFOR
IF X=S
SUM=SUM+1
_______2______
ENDFOR
?SUM
SET TALK ON
1. X%I=0
2. ENDIF
2.该程序是求10000之内能被3和7整除个数。477
SET TALK OFF
X=0
Y=0
DO WHIL X<=10000
___1___
Y=Y+1
X=X+1
LOOP
ENDIF
X=X+1
___2___
?Y
SET TALK ON
1. IF X%3=0 AND X%7=0
2.ENDDO
3.求数列1/2,3/4,5/8,7/16,9/32……前20项之和,显示这个成果。2.99995899
SET TALK OFF
S=0
N=1
D=2
I=1
DO WHILE I<=20
___1___
N=N+2
___2___
I=I+1
ENDDO
?S
RETURN
1. S=S+N/D
2. D=D*2
4.计算下列数列前6项之和。X-X2/2!+ X3/3!- X4/4!+……
当输入X为2时,成果为多少?0.8444
SET TALK OFF
S=0
___1___
INPUT “X=” TO X
FOR I=1 TO 6
T=-T*X/I
S=S+T
___2___
?”S=”,S
RETURN
答案:
1. T=-1
2. ENDFOR
5.输出6到1000之间所有”完数”个数(一种数因子和等于其自身,如 6=1+2+3,28=1+2+4+7+24) 3
SET TALK OFF
A=0
FOR I=6 TO 1000
S=0
FOR J=1 TO ___1___
IF I%J=0
S=S+J
ENDIF
ENDFOR
IF ___2___
A=A+1
ENDIF
ENDFOR
?A
RETURN
1.I-1
2.S=I
6.在6到5000内找出最大一对亲密数对,若a,b为一对亲密数对,则a因子和等于b,b因子和等于a,且a不等于b。 2924 2620
SET TALK OFF
FOR A=5000 TO 6 STEP -1
B=0
C=0
FOR I=1 TO A-1
IF A%I=0
B=B+I
ENDIF
ENDFOR
FOR I=1 TO B-1
IF B%I=0
___1___
ENDIF
ENDFOR
IF ___2___
?A,B
EXIT
ENDIF
ENDFOR
RETURN
1. C=C+I
2. A=C AND A<>B
程序设计
1.素数
[100,999]范围内同步满足如下两个条件十进制数. ⑴其个位数字与十位数字之和除以10所得余数是百位数字;⑵该数是素数;求有多少个这样数? 15
2. 取数字
设某四位数千位数字平方与十位数字平方之和等于百位数字立方与个位数字立方之和,例如,对于四位数:3201,
3^2+0^2=2^3+1^3,试问所有这样四位数之和是多少?97993
3. 分硬币
把一张一元现金,换成一分、二分和五分硬币,每种至少8枚,问有多少种方案? 80
4. 勾股、弦数 A,B,C是三个不不小于或等于100正整数,当满足1/A^2+1/B^2=1/C^2关系时,称为倒勾股数。求130<A+B+C<150且A>B>C倒勾股数有多少组。 1
5.完数因子
求在[10,1000]之间所有完数之和。各真因子之和(不波及自身)等于其自身正整数称为完数。例如:6=1+2+3,6是完数。 524
6.平方数
若一种四位正整数是另一种正整数平方,且各位数字和是一种平方数,则称该四位正整数是“四位双平方数”。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是“四位双平方数”。求所有“四位双平方数”之和。81977
7.Fibonaci(累加数列)
已知 f(n)=f(n-1)+2f(n-2)-5f(n-3),f(0)=1,f(1)=2,f(2)=3,求f(0)+f(1)+…f(30)。-750874
8.a,b,c,d,e类
设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件所有四位数abcd和。 3665
9.方程
求方程8x-5y=3,在|x|<=150,|y|<=200内整数解。试问这样整数解有多少组? 50
10.其他
已知A<B,A和B均为正整数,且A*B=716699,求A+B最小值。 1836
展开阅读全文