1樓:夏天的小紅花
開啟vb後,在窗體中設定兩個標籤,三個文字框和一個按鈕,如圖所示。其餘的都在**中:
dim a(20) as integer, x as integer
private sub command1_click()
x = text2
p = binfind(a, 15, x)
if p <> -1 then
text3 = x & "為陣列的第" & p & "個元素"
else
text3 = "陣列中沒有值為" & x & "的元素"
end if
end sub
private sub form_load()
me.caption = "查詢資料"
label1.caption = "待查資料"
label2.caption = "查詢結果"
command1.caption = "查詢"
a(1) = 100
text1 = "100 "
for i = 2 to 15
a(i) = a(i - 1) - int(rnd * 10) - 1
text1 = text1 & a(i) & " "
next i
text2 = ""
text3 = ""
end sub
function binfind(a() as integer, n as integer, x as integer)
i = 1: j = n
m = (i + j) \ 2
while i <= j and a(m) <> x
if a(m) > x then i = m + 1 else j = m - 1
m = (i + j) \ 2
wend
binfind = iif(a(m) = x, m, -1)
end function
運**況如下圖:
2樓:蠻牛無悔
呃呃呃,,,
這個很難嗎?
vb程式設計陣列遇到問題,剛開始學vb跪求大神幫忙解惑
3樓:匿名使用者
沒看太明白,因為你中間還有計算,但你不能這樣寫,只要有出現小於0的數,就統一加你應該寫成這樣,另外建議除了前面的dim jubumozu2(205)之外,後面的205建議用ubound(jubumozu2)來代替
flag=false
for i = 0 to 205
sum2 = sum2 + mozu2(i) + jubumozu2(i) + gaochengcha2(i)
zshengyuyangcheng2(i) = zshengyuyangcheng(106) - 15 - sum2 '計算剩餘壓力
if zshengyuyangcheng2(i) < 0 then flag=true '標記
next i
if flag=true then '出現過小於0的數
for i = 0 to 205
zshengyuyangcheng2(i)=zshengyuyangcheng2(i)+225
next i
end if
'或者也可以寫成類似這樣
flag=0
pos=0
for i = 0 to 205
sum2 = sum2 + mozu2(i) + jubumozu2(i) + gaochengcha2(i)
zshengyuyangcheng2(i) =flag+ zshengyuyangcheng(106) - 15 - sum2 '計算剩餘壓力
if flag=0 and zshengyuyangcheng2(i) < 0 then
flag=225 '標記
pos=i
end if
next i
if flag>0 then '出現過小於0的數
for i = 0 to pos '給出現位置之前的資料累加
zshengyuyangcheng2(i)=zshengyuyangcheng2(i)+flag
next i
end if
vb陣列問題
4樓:生死魔
你的**錯誤的地方挺多的.
第一個a這個陣列在vb裡面預設是從0開始的.也就是說你這裡的
for j = 1 to 26這個就錯了.應該是for j = 0 to 25
另外一個你的m沒有清空.如果不清空m的話在下次遇到字母的同時會繼續累加.
第三text2的賦值也有問題你這樣寫是覆蓋寫入.**改成
private sub command1_click()
dim n%, z$, m%
a = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
n = len(text1.text)
for j = 0 to 25
for i = 1 to n
z = mid(text1.text, i, 1)
if a(j) = z then m = m + 1
next i
text2.text = text2.text & a(j) & "=" & m & " "
m = 0
next j
end sub
這樣就沒問題了.我測試了下.效果可以
text2的multiline要設定成true
不過你的**裡並沒有忽略大小寫.大寫被排除了.所以上圖的t=1其實有兩個t一個大寫一個小寫
如果你要連大寫一起統計的話需要改一下
private sub command1_click()
dim n%, z$, m%
a = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
n = len(text1.text)
for j = 0 to 25
for i = 1 to n
z = mid(text1.text, i, 1)
if ucase(a(j)) = ucase(z) then m = m + 1
next i
text2.text = text2.text & a(j) & "=" & m & " "
m = 0
next j
end sub
這樣大寫也會被統計進去
ucase的作用就是全部轉成大寫在進行比較.
5樓:
text2.text = text2.text + vbtab + a(j) & "=" & m
還有m每次需要賦0.
vb程式設計題,定義一下有20個元素的一維陣列,使用inputbox函式為陣列中的所有元素賦值,並顯示
vb程式設計實現一維陣列a(10)中陣列元素迴圈向右移動一個位置
6樓:匿名使用者
for i=10 to 0 step -1if i>0 then
if i=10 then temp=a(10)a(i)=a(i)-1
else
if i=0 then a(0)=tempendif
next
陣列元素迴圈向右移動一個位置,最後一個位置,移動到最前面(左)
7樓:匿名使用者
private sub command1_click()dim i%, t%
dim a(10) as integer
for i = 1 to 10
a(i) = rnd * 100
next
t = a(10)
for i = 10 to 2 step -1a(i) = a(i - 1)
next
a(1) = t
end sub
vb程式設計定義包含元素的陣列a,為其陣列元素分別賦值為 20,並將其輸出
private sub command1 click dim a 10 as integer for i 1 to 10 a i 2 i print a i next i end sub vb程式設計宣告一個有10個元素的一維陣列a使用inputbox函式為所有元素賦值,將其最小元素的值及下標顯示出...
VB程式設計問題,VB程式設計中的迴圈問題
有個 自己去看吧,都是考試的。編一個求圓周長的程式。輸入半徑,得到周長和麵積。試試看。建議你不要光學vb,畢竟它有太多缺點,很多事做不了 如果是對basic語言感興趣的話,到不如去學哈freebasic,powerbasic,purebasic,它們都功能超級強大 freebasic甚至可以寫作業系...
vb程式設計問題
private sub command1 click dim i,j as integer,s as double,n as double for i 1 to 100 n 1 for j 1 to i n n j next j s s n next i print 1 2 100 send sub...