计算机考试二级VB常用算法(1):排序
1.算法描述
累加形式:V=V+e
乘法形式:V=V*e
其中:V为变量,E为递增表达式。累加和连续乘法一般通过循环结构来实现。
注意:在执行循环体之前,需要给变量V一个初始值。一般累加时初始值为0;乘法时将初始值设置为1。
例如
查找N!结果。
Private Sub命令1_Click()
Dim n%,i%,S&
n = Val(InputBox(" input n "))[/Br/]S = 1[/Br/]for I = 1 to n[/Br/]S = S * I[/Br/]next I[/Br/]prints S[/Br Br/]拼写错误:
Private子命令1 _ click ()
Dim n%,i%,S &[/Br/]n = Val
s = s * i
接下来我
打印s '输出s的值是n,不是n!
End Sub
应用示例
根据下列公式求自然对数e的近似值。
要求:误差小于0.00001
Private subcommand 1 _ click()
Dim I %,n & t!,e!
E = 2
I = 1
T = 1
do while T > 0.00001
I = I+1
T = T/I
E = I;”项目总和为:“;E
printexp (1)'与上一句的输出值进行比较,证明算法的正确性
End Sub
解题技巧
1)由于这类题往往是按照精度要求进行评估的,我们无法预测具体的循环次数,所以这类题一般使用Do循环,很少使用For循环。设置循环变量和一般变量,注意每个变量的初始值;
2)分解通项表达式中的各个因子,分别用一个循环变量表示各个因子;
3)如果步骤2中的某些因素过于复杂,无法直接用变量表示,此时可以考虑使用函数过程;
4)根据步骤1、2、3写出通项表达式;
5)根据精度要求(往往是一个关系表达式比如通项小于10负多少次),写出满足精度要求后跳出循环的语句。通常,如果一般术语表达式> 10 (-n),则使用exit do。注意,这句话通常需要放在累加或者连乘之前。
图解
以2002年春季电脑上的06试卷为例
根据x值计算:
n = 1,2,...
要求:n项的绝对值小于等于10-6。
1。因为循环数不确定,所以确定Do循环结构,定义循环变量为N(初始值1);用户输入的值用X表示;术语一般用dblCos表示;累加值用sum表示,初始值为0;
2。分解通式
的组成可以分解为三部分:
可以表示为:(-1) (n+1)
可以表示为:x (2 * (n-1)) [/
所以定义过程,并且输入值为n,返回值为
, 于是就有:
私有函数comp(n As long)As long
dim I As long
dim result As long
result = 1 '这里注意,由于是连续乘法,I = 1到2 *(n-1)
result = result * I
next I
comp = result
end function
注意:由于参数是按地址传递的,对于 !)
4。根据步骤1、2、3写出通项dblCos的表达式:
dbl cos =(-1)(n+1)* x(2 *(n-1))/comp(n)
5。根据精度要求,知道:
如果abs(dblCos)最终程序是Private Sub command 1 _ Click()
Dim n As Long,dblCos As Double,x As Double
x = Val(Text1。text)
n = 1
do
dblcos =(-1)^(n+1)* x ^(2 *(n-1))/comp(n)
if ABS(dblcos)sum = sum+dblcos
n = n+1
loop
print sum
end sub
函数comp(n as long)
dim I as long I = 1to 2 *(n-1)
result = result * I
next I
comp = result
end function
注意:如果在运行时调试无限循环,可以按Ctrl+。 (或者Ctrl+滚动条锁定)
2。实用练习。补充码(7)2003年秋2)
这个程序的作用是求下列序列中前n项的和。
S(x,n)=x/2+2!*x^3/2*4+3!*x^5/2*4*6+……+n!*x^2n-1/2*4*6……2n
option explicit
private sub command 1 _ click()
dim x as single,s As Single
Dim n As Integer,I integer
x =输入框("输入x:","求数列之和",1)
n =输入框("输入n:","求数列之和",1)
for I = 1 to n
s I)
下一个i
Label1 .caption = _(1)_
text 1 = s
end sub
私有函数fun(x为Single,n为整数)为single
_ _(2)_ _
p = 1
for I = 1 to n
_ _(3)_ _ _ _ _ _
下一个I
fun=x^(2*n-1)*p
end函数
0条评论