用VB编程17人围成一圈(编号0-16)第0号开始从1报数,报到3的倍数的人离开直到剩下1人,求此人编号.

用VB编程17人围成一圈(编号0-16)第0号开始从1报数,报到3的倍数的人离开直到剩下1人,求此人编号.,第1张

Dim s(1 To 17) As Integer '定义s 存放17个元素
Do Until m = 16 '做以下循环直到m=16
k = k + 1 '赋值 你懂的
If k > 17 Then k = 1 '到17为一个循环
If s(k) = 0 Then '觉得是没有给出dim k=0
l = l + 1 '这个 l也没给。。。 l是不是也等于0呢?
If (l Mod 3) = 0 Then '如果l能被3整除
s(k) = 1 '使得s中第k个元素为1
m = m + 1 '下一个人
End If
End If
Loop
For i = 1 To 17
If s(i) = 0 Then Print i '能被3整除的 都被s(k)赋值1了
Next
我也没学过vb 应该是这个意思

你的问题是你用错了控件,我这个是ADO连接数据库。你用的是ADODC加DATAGRID连接的。所以出错。你自己看我声明数据库的时候是ADODB
Call
OpenConn
'用CALL
调用OPENCONN函数
sql
=
"select
hfid
from
hfb
ORDER
BY
hfid"
'打开hfb表,hfid是自动编号的数据
,里面的hfb和hfid都是我自己随便写的名字,hfd是表的名字,hfid是要自动编号的字段
rsOpen
sql,
cn,
1,
1
'rs是打开数据库后可以调用数据库的名称
If
rsRecordCount
>
0
Then
’假如数据库中的内容大于0,即数据库中有数据,不是空的
rsMoveLast
'则移动到数据库的最后面一个数据,例如现在编号是HF00001~HF00009,就移动到HF00009
txtHFIDText
=
"HF"
&
Format(Val(Right(rsFields("hfid"),
5)
+
1),
"00000")
'生成的为HF00009+1
为HF00010,即自动在最后的编号基础上加1
,里面的TXTHFID是文本框的名称,根据你自己的修改。RSFIELDS(A)是指你现在打开的这个数据库中的字段A的数值
Else
txtHFIDText
=
"HF00001"'如果没有数据,自动生成HF00001
End
If
Call
CloseConn
’关闭数据库
,CLOSECONN也是函数名臣,你可以修改
txtdateText
=
Format(Date,
yyyymmdd)
’日期就比较简单了,直接赋值就可以了。
最后的是打开和关闭数据库的代码:
Public
Sub
OpenConn()
’函数声明
Set
cn
=
New
ADODBConnection
’声明CN为新的数据库链接
Set
rs
=
New
ADODBRecordset
’声明RS
cnCursorLocation
=
adUseClient
cnOpen
"Provider=MicrosoftJetOLEDB40;Data
Source=\\dell745\data\datacc;Jet
OLEDB:Database
Password=123;Persist
Security
Info=False;"
'打开的是网络里的DELL745计算机下面的DATA文件夹下面的DATACC文件,密码是123
End
Sub
'关闭数据库连接
Public
Sub
CloseConn()
rsClose
’关闭链接
Set
rs
=
Nothing
’清0
cnClose
Set
cn
=
Nothing
End
Sub

什么意思呢?
什么的排序序号?文本框?还是什么?
————————————
option base 1
dim text() as double
text=array(val(text1text),val(text2text),val(text3text),val(text4text))
for i = 2 to 4
for j = 1 to i-1
if text(j)>text(i) then
s=text(j)
text(j)=text(i)
text(i)=s
end if
next i
next j
text5text=text(1)
text6text=text(2)
text7text=text(3)
text8text=text(4)
________________________
不好意思。。我这边没有VB环境,只这样写了,我想思路是这样的。。不对的您自己改下哦。
还有,那些文本框最好做成控制数组。

Private Sub Command1_Click()

Dim a() As Long, intN As Long, n As Long, q As Long, r As Long, b() As Long

intN = InputBox("N=", "请输入人数N", 100)

n = intN

MeCaption = "N=" & n

ReDim a(1 To n)

For i = 1 To n

  a(i) = i

  Print Format(a(i), "0000"); Space(1);

  If i Mod 10 = 0 Then Print

Next i

Print

Print

If n = 1 Then

  Print Format(a(1), "0000")

Else

Do While UBound(a) > 2

  Call Sub1(a)

Loop

Print Format(a(2), "0000")

End If

Print

Print

End Sub

Private Sub Sub1(a() As Long)

Dim b() As Long

m = UBound(a)

q = m \ 3: r = m Mod 3: k = 2 q + r

ReDim b(1 To k)

For i = 1 To r

  b(i) = a(m - r + i)

Next i

For i = 0 To q - 1

  b(2 i + r + 1) = a(3 i + 1)

  b(2 i + r + 2) = a(3 i + 2)

Next i

For i = 1 To 2 q + r

  Print Format(b(i), "0000"); Space(1);

  If i Mod 10 = 0 Then Print

Next i

Print

ReDim a(1 To UBound(b))

For i = 1 To UBound(a)

  a(i) = b(i)

Next i

Print

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13076423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存