高手看一下这个VB程序有什么问题导致死循环?

作者&投稿:张荆 (若有异议请与网页底部的电邮联系)
VB问题 程序貌似死循环了~

a=val(inputbox("输入界面","输入界面"))
因为inputbox函数返回的是字符型

这段代码本身没什么问题,也不是一个死循环
问题出在你的for循环的步长step上
可以想象一下,你把一个数分成1w份,然后以这个步长来循环,可想而知要循环10000此
然后还有在循环里面有个小循环
当然会慢了。

下面这段有问题:
line2:p = 2 * Pi * a
t = 2 * a * alpha
h = Vs / (v0 * Pi * p * (p - 2 * t) * (3 - thetaStar / Pi))
n = Vs / (2 * Pi * p * (p - 2 * t) * h) + thetas / (2 * Pi) + 0.5
If t < tMin Or h / (p - t) > M Then
If a < aMax Then
a = a + aDelta
GoTo line2
这是一个死循环。
首先我们来看(1)当t < tMin 或者h / (p - t) > M 时,进入第二个if 语句,(2)当a < aMax 时又进入第个if语句,再做一个简单的计算(a = a + aDelta)后,就执行了一个转移语句:GoTo line2,那就是这一段的头。
那么,再次执行这一段时,我们看到a、p、t、h、n都重新计算了,但不难发现首先是a变了,才引起其它的值的变化,如果a不变,那所有的数值等于重新计算了一遍。其数值大小并不会有任何变化。
能引起a变化的语句只有a = a + aDelta一句,但是,查遍本段以及前面的所有语句,并没有对aDelta赋过值,也就是说,aDelta只是系统默认的零!那样,a = a + aDelta执行完毕后,a = a + aDelta = a + 0 = a,没有变不是?
也就是再一次回到line2后,再计算的所有那些值还跟上一次相同,不会有任何变化,所以,还得走到本段的末尾那一句GoTo line2。

这不是典型的死循环吗?

你的程序其它部分有没有错误,我没有做检查。因为对你程序的专业不熟悉,不知道如何修改,你先把这个毛病修改好了,再继续检查才行。

没运行不好说.
调试要领:
死循环时,按下ctrl+Pause Break 键,打断程序,看看运行的参数

看得头晕,善意的忠告:尽量别用goto,不然程序很乱,不好看


VB6.0:请看一下这段代码哪里有问题,运行的时候提示“无效的过程调用或参...
在不改变代码功能的前提下,增加语句数量,这样当程序调试中出现错误时,更容易定位错误出现在哪一行代码。运行的结果,错在 “t2 = Left(strTemp, t1 - 1)”一行,在立即窗口中查询 t1 的值为 0 ,这样t1-1 的值为 -1,Left函数的第二个参数不合法。t1 为 0 ,可能是因为字符串 strTemp 中...

一个VB程序全部源代码在哪看
不知道你说的这个VB程序是编译后的可执行文件还是源程序,如果是源程序,那么你用VB打开其工程文件就能看到了。如果是可执行文件,那对不起,你要看到代码那就很难了,要是随随便便就能看到软件的代码,那么所有程序员的饭碗就都是纸糊的了

vb程序的“子函数或程序未定义”,请高手看看
If a < b Then k = a a = b b = k End If If a < c Then k = a a = c c = k End If If b < c Then k = b b = c c = k End If Print a, b, c End Sub 此题是将键盘上输入的三个数,由大到小排列并输出来。你的所有else部分是多余的。你的这三个数的比较...

vb编程是什么意思,主要干嘛的?
它是一门编程语言,很容易入门,由于很多编程语言的原理都有相似之处,所以,学了VB后对其它语言也更容易上手。 VB能解决很多问题,如可编程来记录每天发生的事情,随时调用来看;还可自己做浏览器上网;自己做一个像QQ那样的聊天工具,页面完全由自己设计;还有很多很多好处,如果愿意当一个网络高手,就必须要学会看代码,而...

高手来看看用VB编程显示九九乘法表的问题!!!
EXIT FOR 是跳出本层FOR循环,也就是说会跳到第一个NEXT 的后面,然后给i变量加1,再执行 For j = 1 To 9 这个语句

谁帮我看看这个关于判断是否为闰年的vb程序做的为什么不能正常用...
Select Case A Mod 4 Case 0

这段vb编程代码是是什么意思?
Then print '如果K能整除5,则输出 Print n '输出n k = k + 1 'K累加1 End If '结束if Next n '下一步 Print '输出 Print "100-300之间的整数为"& k '输出K为所求 End Sub '结束Click事件 说实话,这段代码实在有些……有些不合规范……而且代码有问题,请楼主核实下,谢谢……

哪位vb高手可以帮我解释一下下面程序的意思?
Private Sub Form_KeyPress(KeyAscii As Integer) '捕捉按键 If KeyAscii <> 13 Then '如果是回车键 13 是回车键的ASCII码 If CurrentX >= ScaleWidth Then '判断当前鼠标坐标是不是在窗体范围内(在=true)Print '不在的话什么也不输出 End If Print Chr(KeyAscii); '在的话输出当前按键码 Else...

下面一小段vb的程序,看不懂,希望大家帮忙注释一下
Set cn = New ADODB.Connection 将一个新的数据连接对象赋给cn cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\MyLike.mdb;" ‘cn打开jet.oledb的在你程序目录下的mylike.mdb的数据库 sql = "select * from path" ’这个是sql语句,选择所有记录从path表中 S...

这一段VB程序段是什么意思?
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)这括号里的四个参数是由VB自动传递到这个事件过程中的,其中Button代表的是按下的鼠标键(比如左键为1),Shift代表键盘上Shift、Ctrl、Alt这三个键的状态(比如Ctrl按下则为2),X和Y则是鼠标在窗体...

立山区17589286430: 哪位高手帮我看一下这个vb程序有什么问题 -
敖习儿泻: Option Explicit'加上上面这一句,以免变量名输错了.Dim a&, b&, c&, d&, e&, g&Private Sub Form_Click()g = 0 '这里要初值!For b = 2 To 10 Step 2a = jc(b)g = ...

立山区17589286430: 请高人帮我看看这个VB语句哪有问题?
敖习儿泻: 从程序语句上看没有问题,我估计有以下几种可能性,你自己仔细检查一下:1、虽然你的帖子中文件路径的书写都是正确的,但不排除你在程序中不小心用了全角的冒号或引号等这类隐性错误;2、从你的程序看,你所谓的按钮控件实际上不是命令按钮(CommanButton),而是选项按钮(OptionButton),虽然看起来与你遇到的错误没什么关系,但说明你的编程习惯不好,这就有可能存在隐性问题;3、从一般习惯上来说,绝大部分JPEG文件的扩展名是“.jpg”,比较少见“.jpeg”,所以,有可能你的文件格式不对,如果你没有装载其它图形控件的话,系统认识的文件格式非常有限,很有可能就不能识别你的文件.最好是换一张其它图片试试..

立山区17589286430: VB程序有问题,请高手看一下代码哪里出错 -
敖习儿泻: 重新定义一个m& 将picture1.print s=s*(-1)^(j-1) 改为picture1.print m=s*(-1)^(j-1) 否则s的值被改变符号,等到执行到s=s*10+j时,就不是预期效果了

立山区17589286430: 请高手看看这段vb代码有什么错误,应该怎么办? -
敖习儿泻: Dim n, passn, sumPrivate Sub Command1_Click()Dim score As Doublepassn = 0: sum = 0: n = 0For i = 1 To 50score = InputBox("请输入分数", "成绩...

立山区17589286430: 那位大侠帮我看下这个vb登录界面的代码有什么问题?? -
敖习儿泻: MsgBox "用户名不存在!", vbCritical, "用户登录验证"exit sub '此处添加End Ifstrsql = "select * form 系统用户表 where 用户...

立山区17589286430: 高手看下这个简单的VB程序错在哪里?
敖习儿泻: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Text1.Text = "我喜欢" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) ...

立山区17589286430: 请高手来帮我看一段VB代码! -
敖习儿泻: 我在Win 2003、VB6.0环境下测试你的代码正常.可以在任务栏显示窗体,也是谈入谈...

立山区17589286430: vb高手帮我看下那个问题. -
敖习儿泻: If txtusername.Text = "洪恩软件" And txtPassword.Text = "123456" Then Else不要这个else

立山区17589286430: 大家帮我看看这个VB程序到底是哪里出了问题,我是真的看不出来了.求高手!
敖习儿泻: Me.AutoRedraw = True Dim i, sum, fact, m fact = 1 For i = 1 To 9 fact = fact * i m = i Mod 2 Select Case m Case 0 '你原程序有误的地方 sum = sum Case Else '你原程序同样有误的地方 sum = sum + 1 / fact End Select Next i Print sum

立山区17589286430: 请VB高手看看 这个程序哪里有错(不难)在线等求解 -
敖习儿泻: Dim a() As Integer, b(2, 3) As Integer, v As Variant Dim i As Integer, j As Integer i = 1 'b从1开始,而i从0开始 因此下面的语句就会越界,这里手动设置从1开始 Print "B数组个元素值" For i = i To 2 For j = 1 To 3 b(i, j) = Int(10 * Rnd) Print b(i, j); ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网