a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 106|回复: 1

[考试试题] 计算机等级考试二级VB常用算法(1):累加和连乘

[复制链接]
发表于 2012-7-31 22:15:04 | 显示全部楼层 |阅读模式
  1、算法说明
$ c4 y  J. E% X, D* u. B4 M      累加形式:V=V+e
4 c% @" H5 N& K      连乘形式:V=V*e 6 t% n5 N( u- R1 i/ v4 m
      其中:V是变量,e是递增表达式。累加和连乘一般通过循环结构来实现。
2 }/ k4 j- l( O: g9 |      注意:需在执行循环体前对变量V赋初值。一般的,累加时置初值0;连乘时置初值为1.
% z3 K* }3 r+ C. I1 w* W. `      举例 : J& z) U2 @: S5 P
      求N!的结果。
8 @* V* `! \+ L* |! I1 J      Private Sub Command1_Click() , `" {, Y: D1 X4 y
      Dim n%, i%, s&
( o. X- D" K/ `3 n  z2 A      n = Val(InputBox("输入n")) , P. K+ x, ]' B+ @! l- {- U
      s = 1
3 n; V% a. F& I8 _" c: o      For i = 1 To n * B1 t# _9 J5 T. \, ^' A
      s = s * i 4 m3 H0 o5 u. j
      Next i
) N& [, x7 h* R" C# U      Print s & I, h# }7 e7 j# u& `2 m1 A
      End Sub $ n$ s% T+ s) E) g( h! X5 g
      错误的写法: * E4 b5 |; f/ ?6 z
      Private Sub Command1_Click()   V- Y# J7 H5 M
      Dim n%, i%, s& & G$ Q3 ]4 L9 x) t$ h) b; j
      n = Val(InputBox("输入n")) ) Z, B0 J6 J+ |% ~# D
      For i = 1 To n / S0 E4 U2 K( O1 ~' c3 V) @
      s = 1             ‘赋初值语句位置不对!
/ z$ D$ h. @8 U# C. K/ ]1 u  {      s = s * i
) w% e8 z" h) K$ o. A. m      Next i
5 b& K5 D) ^$ w4 T      Print s                ‘输出s的值为n,而不是n!
6 X7 R3 |% g* v; g1 T      End Sub
# _) c1 u- D3 b2 U& ~3 [      应用举例
9 J1 u3 `+ `. ~0 N( ~6 q. b      根据下列公式,求自然对数e的的近似值。 4 k/ p7 @1 y+ w( y
  
! ]) @4 H1 Y& o9 [3 _      要求:误差小于0.00001
- x4 [4 t& }% d5 ]0 F      Private Sub Command1_Click() . i9 T* [. a4 F1 ^
      Dim i%, n&, t!, e! : B2 O3 D7 U  q4 ?% v6 C
      e = 2
4 m; A3 a. K7 Q1 V& D      i = 1
- ~6 A; A* U8 u& X      t = 1
4 h8 P: [/ e9 c& O$ S7 |. Z- }9 Y      Do While t > 0.00001
. ?, e2 v2 h/ ^6 N      i = i + 1 1 t! W4 u0 R7 h; }
      t = t / i : Y2 O) H9 H* T/ ]# V, m# E
      e = e + t
! J# H, n/ H' `6 y      Loop
+ d! o! q& ]$ K7 J2 t5 k      Print "计算了"; i; "项目和是:"; e
$ ]' U6 O5 j4 \* F$ H' T+ Q      Print Exp(1)                              ‘与上句输出值进行对比以证明算法的正确性 % I. B! K1 [, `$ ^( q
      End Sub % n! n5 b/ E, v; v" [9 g8 o0 C
      解题技巧 * d' k5 G& X, @) k- Q
      1) 由于这类题目往往是根据精度要求来求值,因此我们不能预知具体循环次数,所以这类题目一般用Do循环,很少用For循环。设定循环变量和通项变量,注意各变量的初值;
/ D  V" t! }2 ?4 p      2) 分解通项表达式中各因子,并分别将各因子用循环变量表示; ( ^4 k7 V5 E9 L, L0 `
      3)  如果步骤2中有的因子比较复杂,难以直接用变量表示,此时可以考虑使用Function过程; $ ?9 R, ]  ], v1 n
      4)  根据步骤1、2、3,写出通项表达式;
$ R2 |6 j) @9 x; @2 }) K) f8 x      5)  根据精度要求(往往是通项小于10负多少次方这样一个关系表达式),写出一条满足精度要求后跳出循环的语句。通常是用:if  通项表达式>10^(-N) then exit do ,注意这句话一般需放在累加或者连乘式之前。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 22:15:05 | 显示全部楼层

计算机等级考试二级VB常用算法(1):累加和连乘

</p>5 P. o% B! T8 J, u  M  o  E' W
    实例说明
7 R+ X. e0 U; B" a# }      以2002年春上机试卷06编程题为例 % l5 Z9 G% M0 D9 V; U) D4 u3 e2 b
      根据X值计算:
$ l) X* g, B7 ?5 s2 U   ' w* W# |& B5 M4 F% z) C0 C. d( I; F
      n=1,2,……
) C" S! _( k0 r& A3 I, m" Q      要求:n项绝对值小于等于10-6为止。
  t. S$ c! G8 R6 O: H0 B) T      1、由于循环次数不确定,因此确定用Do循环结构并定义循环变量用n表示(初值1);用户输入的值用x表示;通项用dblCos表示;累加值用sum表示,初值为0;
4 ^* B; U. k6 u1 r& f      2、分解通项式的组成 ' t* O: z( p# G& E1 h/ m' f
   8 x( F' g$ a" U7 p# {
      可以分解为三部分:
  V6 P3 V9 |' @' i      可以表示为:(-1)^(n+1) 8 \8 O, M9 [/ q) Q* T
      可以表示为:x^(2*(n-1))
& n8 _9 ]  v7 D  {' b      比较复杂,难以直接表示 ( g% I. U2 ]+ E# R0 |4 ]  a
      3、由于步骤2中复杂, 此时考虑使用过程。
3 F- z* _4 Q" {      于是定义过程,输入值是n,返回值是 " ^0 W0 }: S% `8 G, f( N! j1 a
      于是有: 0 D" p2 m8 T, N9 g' t
      private Function comp(n as long)as long
3 y  [; n  U, i2 S6 O4 c1 K6 K0 t      dim I as long ) G) o8 f0 c% E! z; ?
      dim result as long
1 d" _5 D9 a* \0 J+ ^- E2 a      result=1    ‘此处注意,由于是连乘,初值为1 7 |! F  \, T* F/ \' ]
      for I=1 to 2*(n-1) ) j2 M/ n5 s) \( ~: a7 Q
      result=result*I
# \5 z( d; M' n$ M6 o" V+ i      next I 3 U. q+ ?" N( j. ?7 a$ z' c
      comp=result
5 `6 f' n+ w6 h! r      End Function
1 A0 c7 ^& r. }% }  H' H      注意:由于是参数按地址传递,因此对于本题,实参的值不能在过程中被改变!(也是改错题常考的地方!!)
. X* @# C9 g* `+ |      4、根据步骤1、2、3,写出通项dblCos的表达式:
! U+ Z8 C; i3 F( g. b. Y  Y: p      dblCos=(-1)^(n+1)* x^(2*(n-1))/comp(n) % W7 H& C( ?; [% i' Q5 A9 W
      5、根据精度要求知:
& Q: |7 U; `2 v* v& `, m% ?- @      If abs(dblCos)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-20 05:17 , Processed in 0.330015 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表