vb高手来看看。怎么样将一堆数据中 使任意个数据之和等于定值

作者&投稿:阿界 (若有异议请与网页底部的电邮联系)
VB 怎么让000001加1后等于000002?~

用 Format 函数,下面是个例子:
Private Sub Command1_Click()
Static n As Long
n = n + 1
Print Format(n, "000000")
End Sub

原则上是-1,但是如果是Long(Integer等)转Boolean,只要是非0的,都可以表示True...0表示False

新手不容易记忆,倒底是0是False还是-1是False还是别的,你可以这样记

整数型的变量定义后默认为0,而布尔定义变量后默认为False,因此0表示False,非0则表示True..

是不是直接和这个差不多:
输入N个数字,输入其中几个数字的和A
需要输出所有和为A的数字的组合
例如:
输入 1,2,3,4,5,6,7,8
输入和 A=9
输出 (1,8),(2,7),(1,2,6)......
要列出所有可能组合,数字不能重复使用
但是如果输入的是3,3,3,3,3
输入和 A=9
输出 (3,3,3),(3,3,3)......
每个3都是不同的
做到不重不漏

刚巧做了个,用递归算法,留个邮箱,我可以把工程发给你

Dim number() As Integer '声明公共数组,本数组用来存储您输入的数
Dim cou As Integer '用来保存输入的数的个数
Dim sum As Integer '用来保存输入的数相加的和
Dim a, n As Integer 'a是您问题上的和A,n是我当前使用的临时数组的个数
Dim lsnumber() As Integer '用来保存正在进行相加的数
Private Sub Form_Load()
cou = 9 '初始化,用户输入了9个数,这个根据您的需要而定
sum = 0 '初始化,和为0
a = 9 '初始化,预计和为9
n = 0 '初始化,当前尚未使用任何lsnumber()数组的空间

ReDim number(cou - 1) As Integer '重定义数组长度,根据cou而定,数组下标从0到cou-1
ReDim lsnumber(cou - 1) As Integer '重定义数组长度,因为无法知道程序究竟用了多少个数相加 _
所以让这个数组的长度等于cou -1

For i = 0 To 8 'for循环用于给数组赋值,这个值您可以自己输入,我为了测试方便,就直接赋值了
number(i) = i + 1
Next
Text1.Text = Text1.Text & "层数 上次的和 这次加的数 和" & vbCrLf
Call searchnum(0) '重点,调用递归函数求解,传递值0给函数使用
End Sub

Function searchnum(ByVal num) '递归函数入口,没用过几次递归,所以就用我习惯的写法写了 _
不会用高手们的写法写
For i = num To cou - 1 '遍历number()数组中的每一个元素,下标从num开始

Text1.Text = Text1.Text & num & " " & sum & "+" '将当前操作的初始数组下标和上次运行得到的值输出到文本框中

sum = sum + number(i) '和累加
lsnumber(n) = number(i) '记录当前用来相加的数

Text1.Text = Text1.Text & number(i) & "=" & sum & vbCrLf '将当前相加的数和得到的结果输出到文本框中

If sum < a Then '如果当前的值小于我输入的和,再次调用这个递归函数
n = n + 1 '用来相加的数的个数加1
searchnum i + 1 '这儿调用自己本身传过去的值时i+1
ElseIf sum = a Then '如果这个和刚好是我输入的和,那么将它输出
pr n '输出这几个数,参见下面的模块
sum = sum - number(i)
'不排除剩下的没被检查过的数中还有和number(i)相等的数,所以继续循环
Else

sum = sum - number(i) '获得上次调用本程序后sum的值

End If
Next
'if语句用文字无法表述清楚,举个例子吧
'假设我有1,2,3三个数,输入的和为4 _
会出现这些算式:1+2+3=6 不满足 _
1+3=4 满足 _
2+3=5 不满足 _
这个程序就是计算了这些算式,每次计算加到3后就跳出这次调用,继续上次调用
If num > 0 Then
sum = sum - number(num - 1) '当这个递归函数要结束时,sum的值应该是上上次调用自身后的值,如果 _
num<=0,数组下标会越界
n = n - 1 '用来相加的数的个数应该减1
End If
End Function

Private Sub pr(ByVal leng) '输出保存在lsnumber()数组中的数
Text1.Text = Text1.Text & "满足要求的数:"
For i = 0 To leng
Text1.Text = Text1.Text & lsnumber(i) & " "
Next
Text1.Text = Text1.Text & vbCrLf
End Sub

VB 高手看看
答:你没有路径当前会出错了 将ConStr = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=zhan1616.mdb;Persist Security Info=False"改为 ConStr = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & app.path & "zhan1616.mdb;Persist Security Info=False"在数据库前加一个当前路径 如果还出错在...

急!两道VB题,请高手帮我看看怎么做!把输入的内容告诉我就行!在线...
答:1、数据信息text1:123456、显示文本框text2和命令按钮command1:private sub command1_click()if text1.text="123456" then text2.text="正确"else text2.text="错误"text1.text=""text1.setfoucs end sub 注:上述必须加一个命令按钮,否则第二个文本框一直显示错误信息,并清除第一个文本框的...

VB高手帮帮忙,帮我看看怎么改
答:For i = 0 To List1.ListCount - 1 s = s & List1.List(i)Next RS.Fields("备注")=s rs.update

vb过程太大,如何解决,速求vb高手
答:建议去百度或GOOGLE搜索一下,看看有没有相关信息或资料可以帮你。

有一个vb问题请高手来看看
答:Private Sub Form_click()Dim a(10)For i = 1 To 10 a(i) = Int(Rnd * 21) + 30 Print a(i);Next i Print For i = 1 To 5 t = a(i)a(i) = a(i + 5)a(i + 5) = t Next i Print "互换后的结果为"For i = 1 To 10 Print a(i);Next i End Sub ...

给我讲解一道VB的题,高手进
答:看前序,a为最开头的结点,所以必然为根结点,b则肯定为a的左子树,所以我们先在纸上把这两个画下来.下面看d,在前序里看到d在b后,所以很可能是b的左子树,但是不要太早定论 再看中序,从中序里我们看到dg和前序的顺序一样,所以我们这个时候可以肯定,d为b的左子树,而g肯定为b的右子树(中序中排...

高手来看看关于VB编程中的一段代码,帮忙解释一下
答:If Dir(App.Path & "\文件名.exe") = "" Then '如果当前路径下没有“文件名.exe”,那么 APP1 = LoadResData(101, "CUSTOM") '调用资源文件中的CUSTOM,赋值给数组APP1 Open App.Path & "\文件名.exe" For Binary As #2 '在当前路径下新建文件名.exe Put #2, , APP1 '把APP1的...

vb程序求高手解答
答:使用WMI可以很方便的访问硬件/软件信息 在窗体里面插入一个列表框,然后代码 Private Sub Form_Load()On Error Resume Next Dim objWMIService, colItems, objItem Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor...

双色球过滤用vb怎么编写,请高手指教
答:双色球过滤用vb怎么编写,请高手指教text1中有1万行双色球的数据(每行6个数)01020811182601040609123302040811162102111217303104051821252604171824252705061521252606071013142209... 双色球过滤用vb怎么编写,请高手指教 text1 中有1万行双色球的数据(每行6个数) 01 02 08 11 18 26 01 04 06 09 12 33 02 04 08 11 ...

懂VB语言的高手快来
答:total像一个布袋,a就像豆子。第一次拿2粒豆子放进布袋,第二次拿4粒 ...第五次拿10粒。这样,布袋中就是30粒了。要是像问题补充里一样说法,就是将布袋加上布袋了。而这里只有一个布袋。