VB上機練習題

2023-01-03 17:27:02 字數 5979 閱讀 4321

1.乙個數如果恰好等於它的因子之和,這個數就稱為"完數",例如:6的因子為1,2,3,6=1+2+3,所以6是乙個完數,編乙個程式,找出1000以內的完數,並以列表框顯示,完數的個數用文字框輸出。

private sub form_click()

dim n, r, j, i as integer

n = 1000: x = 0

for i = 1 to n - 1

r = 0

for j = 1 to i - 1

if i mod j = 0 then

r = r + j

end if

next

if r = i then

(i)x = x + 1

r = 0

end if

next

= xend sub

2.已知下式成立:,計算e的值(精確到10-6)。

private sub form_click()

dim s as double

s = 1: p = 1: n = 1

while 1 / n >= 0.000001

n = n * p

p = p + 1

s = s + 1 / n

wend

print s

end sub

3.已知下式成立:

其中e是自然對數的底。計算的值。當通項的值小於時,認為達到精度。

4.百錢買百雞。西元前五世紀,我國數學家張丘建在《算經》中提出「百雞問題」:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?

private sub form_click()

dim i, j as single

for i = 1 to 100

for j = 1 to 99

if i * 5 + j * 3 + (100 - i - j) / 3 = 100 then

print i; j; 100 - i - j

end if

next

next

end sub

5.設計乙個單擊按鈕過程,其作用是產生50個60~100的隨機數,統計其中被6整除餘2的個數,並將這些數輸出。

private sub form_click()

dim a(50) as single

randomize

n = 0

for i = 1 to 50

a(i) = int(rnd * 41) + 60

if a(i) mod 6 = 2 then

n = n + 1

print a(i);

end if

next

print

print n

end sub

6.隨機生成10個1~100之間的整數,求出它們的總和及平均數。

private sub form_click()

dim a(10) as single

s = 0

randomize

for i = 1 to 10

a(i) = int(rnd * 100) + 1

s = s + a(i)

next

print s; s / 10

end sub

7.程式設計實現:隨機生成的10個兩位整數,並求出其中最大數及其下標。

private sub form_click()

dim a(10) as single

randomize

for i = 1 to 10

a(i) = int(rnd * 90) + 10

print a(i);

next i

max = a(1): n = 1

for i = 1 to 9

if a(i) >= max then

max = a(i)

n = i

end if

next

print

print "最大值是"; max; "是第"; n

end sub

8.設計乙個體操評分程式, 20 位評委,除去乙個最高分和乙個最低分,計算平均分 ( 設滿分為 10 分 )。

private sub form_click()

dim a(11) as integer

randomize

for i = 1 to 10

a(i) = int(rnd * 11 + 0)

print a(i);

next i

print

for i = 1 to 10

for j = 1 to 10 - i

if a(j) >= a(j + 1) then

m = a(j): a(j) = a(j + 1): a(j + 1) = m

end if

next

next

for i = 1 to 10

print a(i);

next

print

s = 0

for i = 2 to 9

s = s + a(i)

next

print s / 8

end sub

9.編寫程式,使乙個二維陣列的主對角線元素的值為1,其餘元素值為0。

private sub form_click()

dim a(5, 5) as single

dim i, j as integer

for i = 1 to 5

for j = 1 to 5

if i = j then

a(i, j) = 1

else

a(i, j) = 0

end if

print a(i, j);

next j

print

next i

end sub

10.編寫程式,生成10個10到100的陣列,由小到大排序後顯示,然後插入任意乙個數後,使其仍然有序。

private sub form_click()

dim a(11) as single

randomize

for i = 1 to 10

a(i) = int(91 * rnd + 10)

print a(i);

next

print

for i = 1 to 10

min = a(i): n = i

for j = i to 10

if min >= a(j) then

min = a(j): n = j

end if

next

t = a(n): a(n) = a(i): a(i) = t

next

for i = 1 to 10

print a(i);

next

h = val(inputbox("請輸入乙個數"))

k = 0

for i = 1 to 10

if h < a(i) then

exit for

end if

next

for k = 10 to i step -1

a(k + 1) = a(k)

next

a(i) = h

print

for i = 1 to 11

print a(i);

next

end sub

11.程式設計實現求所有1~100之間的孿生素數。孿生素數是指兩個素數,他們的差為2,如3和5,11和13等。(要求有乙個求素數的函式過程)

private function abc(x)

for j = 2 to x - 1

if x mod j = 0 then abc = 1: exit function

next

end function

private sub form_click()

dim i as integer, a(100) as single

for i = 1 to 100

if abc(i) = 0 then

a(n) = i

n = n + 1

end if

next

for i = 0 to n - 1

if a(i + 1) - a(i) = 2 then

print a(i); a(i + 1)

end if

next

end sub

12. 根據文字框中輸入的年份判斷某年是否為閏年,判斷結果由訊息框輸出。

(要求編寫乙個判斷某年是否為閏年的函式。該函式有乙個整型引數表示年份,返回值為邏輯型,當該年份是閏年時,函式返回值為true,否則返回false。)

private sub command1_click()

dim t as long, s as boolean

t =if t mod 4 = 0 or t mod 400 = 0 and t mod 100 <> 0 then

s = true

else

s = false

end if

msgbox (s)

end sub

13.利用隨機函式生成25個兩位正整數,逐個賦給乙個5x5陣列的每個元素,然後找出最大元素的位置,並按a(n1,n2)=m 形式輸出(要求:求最大元素所在位置用sub過程或function過程)。輸出結果類似如圖。

private sub form_click()

dim a(5, 5) as integer, i as integer, j as integer

randomize

for i = 1 to 5

for j = 1 to 5

a(i, j) = int(rnd() * 90) + 10

next j

next i

for i = 1 to 5

for j = 1 to 5

print a(i, j);

next

print

next

max = a(1, 1): x = 1: y = 1

for i = 1 to 5

for j = 1 to 5

if a(i, j) > max then

max = a(i, j): x = i: y = j

end if

next

next

print "a("; x; ymax;

end sub

14.編寫乙個求最大公約數的函式過程,使用傳值呼叫function過程,求兩個整數m和n的最大公約數和最小公倍數。(最小公倍數= (n * m) / 最大公約數)

要求:採用輾轉相除法求最大公約數。

private sub form_click()

dim m%, n%

n = inputbox("輸入n")

m = inputbox("輸入m")

t = m * n

if m < n then

x = m: m = n: n = x

end if

j = abc(m, n)

print "最大公約數為"; j

print "最小公倍數為", t / j

end sub

private function abc(x, y) as single

while x mod y <> 0

r = x mod y

x = y

y = r

wend

abc = y

end function

15. 編乙個計算表示式:m!

/ (n! * (m-n)!) 值的程式(m >= n >= 0),要求:

用輸入對話方塊輸入m和n的值,用編寫函式function fact(x as interger)求x!的值。

上機練習題

1建立乙個簡單的vb程式。要求在窗體上顯示 歡迎登陸vb上機系統 請輸入您的學號 和 請輸入登入密碼 以及兩個等待輸入學號和密碼的文字框和乙個命令按鈕。學號與密碼均為8位 超過8位則不能輸入 密碼的輸入顯示為 另外窗體上不要最大 最小和關閉按鈕。單擊命令按鈕 確定 時,程式結束。程式執行效果如圖所示...

EXCEL上機練習題

1 利用excel中的考勤模版,建立a公司的個人考勤記錄表,將結果儲存為 練習將每個人的姓名作為工作表名。2 將下表內容輸入到excel中,將結果儲存為 練習並完成下列操作。1 增加表標題,標題為 2010年9月水費清單 2 在住戶後增加兩列,內容為 姓名 身份證號 按下錶輸入。3 在最右側增加一列...

VB迴圈結構練習題

一 分析程式的執行結果 每題2分,共60分 1 以下迴圈的執行次數是 k 0do while k 10 k k 1 loop 2 下列程式段的執行後輸出的結果為 i 4 a 5 doi i 1 a a 2 loop until i 7 print a a 3 下列程式的執行結果是 t o m 1 s...