您的位置:程序门 -> vb -> 基础类



小菜菜学vb系列


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


小菜菜学vb系列[已结贴,结贴人:xuen30]
发表于:2007-02-22 17:22:28 楼主
春节放假,闲着没事,静下心来,看看vb,做了几个练习题,感觉还可以,请大家看看写怎么样?
练习1:编写一个程序,使用函数方式求s=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值
源代码如下:
function   sum(n   as   integer)
dim   a,   j,   c   as   integer
c   =   0
a   =   0:   j   =   1
for   i   =   1   to   n
a   =   a   +   j
c   =   a   +   c
j   =   j   +   1
next
sum   =   c
end   function
private   sub   command1_click()
dim   x   as   integer
dim   y   as   string
y   =   text1.text
x   =   val(right(y,   2))
x   =   sum(x)
text2.text   =   x
end   sub
希望大家提提意见,向同志们学习一下
发表于:2007-02-22 17:24:441楼 得分:0
执行结果,是你想要的么?
   

发表于:2007-02-22 17:28:222楼 得分:0
是啊,怎么我出错了吗,请指点,或留下qq,向你学习
发表于:2007-02-22 17:29:023楼 得分:0
我在等待你的回复,不管你在不在,先谢了!
发表于:2007-02-22 18:40:464楼 得分:15
没有简化,光是实现了:


function   sum(m   as   integer)   as   long
    dim   i   as   integer
    for   i   =   m   to   1   step   -1
        sum   =   sum   +   dosum(i)
    next   i
end   function

function   dosum(n   as   integer)   as   long
    dim   i   as   integer
    for   i   =   n   to   1   step   -1
        dosum   =   dosum   +   i
    next
end   function

private   sub   command1_click()
    dim   x   as   integer
    x   =   val(right(text1.text,   2))
     
    text2.text   =   sum(x)
end   sub

   

发表于:2007-02-22 18:42:555楼 得分:0
这是简化了:

function   sum(m   as   integer)   as   long
    dim   i   as   integer
    dim   j   as   integer
   
    for   i   =   m   to   1   step   -1
        for   j   =   i   to   1   step   -1
            sum   =   sum   +   j      '   dosum(i)
        next   j
    next   i
end   function
   

发表于:2007-02-22 19:24:336楼 得分:0
用其他语言来计算你这个n=10只要……
python一句代码:
sum(map(lambda   x:sum(range(1,x+1)),range(1,11)))

sml两句代码:
fun   range   x=   if   x=0   then   []   else   x::range   (x-1);
foldr   op+   0   (map   (fn   (x)=> foldr   op+   0   (range   x))   (range   10))

scheme三句代码:
(define   (range   x)   (if   (=   x   0)   ()   (cons   x   (range   (-   x   1)))))
(define   (sum   x)(if   (null?   x)   0   (+   (car   x)   (sum   (cdr   x)))))
(sum   (map   (lambda   (x)   (sum   (range   x)))   (range   10)))


放弃vb吧,呵呵   #-_-
发表于:2007-02-22 20:38:197楼 得分:0
为何要放弃vb?   n   =   100   呢?等于任意数呢?   只是抓其中的一小段!

for   i   =   1   to   m   :   for   j   =   i   to   1   step   -1:   sum   =   sum   +   j   :   next:   next
'这算几句?


msgbox   "sum= "   &   sum       '显示结果


写这一下简单,就表明其他的语言更适合所有的开发者?

往往是不了解、不熟悉的人才说这个语言咋样咋样。


   

发表于:2007-02-22 21:32:058楼 得分:0
呵呵.............我去........................................

咱直接折腾内存怎么样....

楼上帮我再踹你楼上一脚
发表于:2007-02-23 13:21:089楼 得分:5
1+2+3...n=(1+n)*n/2

--->   σ   (1+k)*k/2
        k=1   to   n
=(1+1)*1/2+(1+2)*2/2...   +(1+n)*n/2
=(1+n)*n/4+(2*n+1)*(n+1)*n/12
=(n+2)*(n+1)*n/6
化简完毕
所以
function   sum(m   as   integer)   as   long
    sum=m*(m+1)*(m+2)/6
end   function


快速检索

最新资讯
热门点击