VB 算法问题(简单高分) 200
用VB计算出从0-96位数的最高排列组合:0,1,2,3,4,5,6,7,8,9例如组合1:012345(6位)例如组合2:234567(6位)我想知道从0-9这些数字可...
用VB计算出从0-9 6位数的最高排列组合:
0,1,2,3,4,5,6,7,8,9
例如组合1:012345 (6位)
例如组合2:234567 (6位)
我想知道从0-9这些数字可以组成 多少个6位数.
要求:用VB代码完成 展开
0,1,2,3,4,5,6,7,8,9
例如组合1:012345 (6位)
例如组合2:234567 (6位)
我想知道从0-9这些数字可以组成 多少个6位数.
要求:用VB代码完成 展开
15个回答
展开全部
一百呀!!我要加分哦,C语言编,VB编
先C吧!
#include "stdio.h"
main()
{
int i,j,k,l,m,n;
long int sum=0;SUM计总数为多少组合!
for(i=0;i<9;i++)
for(j=0;j<9;j++)
for(k=0;k<9;k++)
for(l=0;l<9;l++)
for(m=0;m<9;m++)
for(n=0;n<9;n++)
sum++;
printf("%d,%d,%d,%d,%d,%d\t",i,j,k,l,m,n); 输出6个组合!
printf("%l",sum);
}
VB编法一样!
Private Sub Command1_Click()
Dim i, j, m, n, k, l, sum, s
sum = 0
For i = 0 To 5
For j = i + 1 To 6
For m = j + 1 To 7
For n = m + 1 To 8
For k = n + 1 To 9
For l = k + 1 To 9
s = s & i & j & m & n & k & l & vbCrLf
sum = sum + 1
DoEvents
Next
Next
Next
Next
回帖,是对朋友的帮助 请大家帮忙
评分,是对帮助的肯定 按感觉给分
先C吧!
#include "stdio.h"
main()
{
int i,j,k,l,m,n;
long int sum=0;SUM计总数为多少组合!
for(i=0;i<9;i++)
for(j=0;j<9;j++)
for(k=0;k<9;k++)
for(l=0;l<9;l++)
for(m=0;m<9;m++)
for(n=0;n<9;n++)
sum++;
printf("%d,%d,%d,%d,%d,%d\t",i,j,k,l,m,n); 输出6个组合!
printf("%l",sum);
}
VB编法一样!
Private Sub Command1_Click()
Dim i, j, m, n, k, l, sum, s
sum = 0
For i = 0 To 5
For j = i + 1 To 6
For m = j + 1 To 7
For n = m + 1 To 8
For k = n + 1 To 9
For l = k + 1 To 9
s = s & i & j & m & n & k & l & vbCrLf
sum = sum + 1
DoEvents
Next
Next
Next
Next
回帖,是对朋友的帮助 请大家帮忙
评分,是对帮助的肯定 按感觉给分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个通用函数,计算排列的。
Private Function Per_Com(n As Integer, m As Integer) As Double '排列计算:n为总数,m为取出来的数,函数返回结果。你这个例子,n为10,m为6.
On Error GoTo Lexit
Per_Com = 1
If m = 0 Then Exit Function
For i = 1 To m
Per_Com = Per_Com * (n - i + 1)
Next
Exit Function
Lexit:
MsgBox "数据过大,超过1.8E308" & Error, vbCritical
End Function
答案是151200。
Private Function Per_Com(n As Integer, m As Integer) As Double '排列计算:n为总数,m为取出来的数,函数返回结果。你这个例子,n为10,m为6.
On Error GoTo Lexit
Per_Com = 1
If m = 0 Then Exit Function
For i = 1 To m
Per_Com = Per_Com * (n - i + 1)
Next
Exit Function
Lexit:
MsgBox "数据过大,超过1.8E308" & Error, vbCritical
End Function
答案是151200。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提供个算法:
循环套循环
for a = 0 To 9
for b = 0 To 9
如果 b不等于a
则 for c = 0 To 9
如果 c不等于a 且c不等于b
则 {......}
next c
next b
next a
{} 内套用循环到f,最后一层循环如下:
for f = 0 To 9
如果 f不等于a 且f不等于b 且f不等于c 且f不等于d 且f不等于e
则 n+1
next f
n为所求个数,n初始赋值为0
本人VB不用好多年了,有些语法可能不对,但是算法绝对可行
循环套循环
for a = 0 To 9
for b = 0 To 9
如果 b不等于a
则 for c = 0 To 9
如果 c不等于a 且c不等于b
则 {......}
next c
next b
next a
{} 内套用循环到f,最后一层循环如下:
for f = 0 To 9
如果 f不等于a 且f不等于b 且f不等于c 且f不等于d 且f不等于e
则 n+1
next f
n为所求个数,n初始赋值为0
本人VB不用好多年了,有些语法可能不对,但是算法绝对可行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不知道你说的是排列还是组合所以你自己看吧!
1.排列
Private Sub Command1_Click()
x = 10 * 9 * 8 * 7
Y = 6 * 5
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub
2.组合
Private Sub Command1_Click()
x = 10 * 10 * 10 * 10
Y = 10 * 10
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub
注意VB里不能直接输出10*9*8*7*6*5的!要像上面的代码才可以运算的!
1.排列
Private Sub Command1_Click()
x = 10 * 9 * 8 * 7
Y = 6 * 5
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub
2.组合
Private Sub Command1_Click()
x = 10 * 10 * 10 * 10
Y = 10 * 10
Form1.Caption = "从0-9这些数字可以组成" & x * Y & "个六位数。"
End Sub
注意VB里不能直接输出10*9*8*7*6*5的!要像上面的代码才可以运算的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果每数只能用一次的话(第一位不为0):
Private Sub Form_Load()
Dim i As Integer
Dim n As Long
n = 9
For i = 1 To 5
n = n * (10 - i)
Next
Text1.Text = n
End Sub
运行结果是136080
其实就是9*9*8*7*6*5
Private Sub Form_Load()
Dim i As Integer
Dim n As Long
n = 9
For i = 1 To 5
n = n * (10 - i)
Next
Text1.Text = n
End Sub
运行结果是136080
其实就是9*9*8*7*6*5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询