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



为什么会“益出”


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


为什么会“益出”
发表于:2007-05-05 14:55:55 楼主
private   sub   command1_click()
dim   i   as   integer
dim   j   as   integer
dim   s   as   integer

for   i   =   2   to   1000
        for   j   =   1   to   i
       
           
                s   =   s   +   j           →为什么这里会益出,那里出错了?
                if   i   =   s   then
        print   i
              exit   for
              end   if
           
        next
    next
   
             
end   sub
发表于:2007-05-05 15:23:301楼 得分:0
s的值超出了integer的范围。。应声明为long
你可以debug一下   s的值
发表于:2007-05-05 15:37:092楼 得分:0
楼上     我刚刚试过了     不行
发表于:2007-05-05 16:03:103楼 得分:0
你exit   for   循环的条件判断式在双循环结束前不会满足,建议代码修改如下:

private   sub   command1_click()
dim   i   as   integer
dim   j   as   integer
dim   s   as   integer
for   i   =   2   to   1000
        for   j   =   1   to   i
                s   =   s   +   j           '→为什么这里会益出,那里出错了?
                debug.print   ,   s
                if   i   <   s   then
                        print   i
                        exit   for
                end   if
        next
next
end   sub
发表于:2007-05-05 18:41:154楼 得分:0
dim   i   as   long
        dim   j   as   long
        dim   s   as   long
       
        for   i   =   2   to   1000
                list1.clear
                for   j   =   1   to   i
                       
                        list1.additem   cstr(j)
                        list1.additem   cstr(i)
                        s   =   s   +   j  
                        if   i   =   s   then
                                print   i
                                exit   for
                        end   if
               
                next
        next
发表于:2007-05-05 20:54:325楼 得分:0
不明白程序的意图。按照原先的程序,就算不溢出,也没有结果。

option   explicit

sub   main()
dim   i   as   integer
dim   j   as   integer
dim   s   as   long

for   i   =   2   to   1000
        for   j   =   1   to   i
       
           
                s   =   s   +   j         '   →为什么这里会益出,那里出错了?
                if   i   =   s   then
                        debug.print   i
                        exit   for
              end   if
           
        next
    next

end   sub


结果是空白
发表于:2007-05-05 21:11:496楼 得分:0
s和i不可能相等的,再说,重复计算1到i的等差数列和,这个数值应该是十分庞大了。。
private   sub   form_click()
  dim   i   as   integer
  dim   s   as   long
  dim   j   as   integer
     
        for   i   =   2   to   1000
            for   j   =   1   to   i
                s   =   s   +   j
              doevents
            next
        next
       
    label1.caption   =   s
end   sub
s=167166999
发表于:2007-05-05 21:15:597楼 得分:0
通过跟踪,s=1,i=2.   s=2,i=3.以后的值总是s> i。


快速检索

最新资讯
热门点击