問題の回答 VBS(1)〜VBS(10)

メニューに戻りたいときはここをクリック。

VBS(1) 問題

問1

x=1
x=x+2
x=x+3
x=x*2
msgbox(x)
というプログラムを実行すると何が表示されるか。

(答) 12

問2

私は札幌○×高校2年10組11番小泉純一郎です。

のように表示するプログラム(クラス、番号、名前は自分のもの)を 作れ。

(解答例)
msgbox("私は札幌○×高校2年10組11番小泉純一郎です。")

VBS(2) 問題

1から99までの奇数の和を表示するプログラムを作れ。

(解答例)
s=0
for i=1 to 99 step 2
    s=s+i*i
next
msgbox s

VBS(3) 問題

1からユーザが入力した奇数までの奇数全体の合計を計算するプログラムを書け。(例えば、49 を入力すると 1+3+5+....+49 を計算させ、101を入力すると 1+3+5+....+101 を計算するプログラムである。)
結果を表示するウィンドウには「合計」というタイトルをつけておくこと。

ヒントとしては for 文で step を使えば良い。step の使い方は前回を参照せよ。

(解答例)
n=inputbox("あなたが入力した数以下の奇数の和を求めます。")
s=0
for i=1 to n step 2
    s=s+i
next
msgbox s,,"合計"

VBS(4) 問題

3からユーザが入力した3の倍数までの3の倍数全体の合計を計算するプログラムを書け。(例えば、48 を入力すると 3+6+9+...+48 を計算させ、102を入力すると 3+6+9+...+102 を計算するプログラムである。)
結果を表示するウィンドウには「合計」というタイトルをつけておくこと。

(解答例)
n=inputbox("あなたが入力した数以下の3の倍数の和を求めます。")
s=0
for i=3 to n step 3
    s=s+i
next
msgbox s,,"合計"

VBS(5) 問題

「何円持っている?」と尋ねて、答えが10000以上なら「○○円とは、なかなか金持ちですね。」と表示し、それ以外なら「○○円ですか。わかりました。」と表示するプログラムを作れ。(○○のところはユーザが入力した金額を表示すること。)
質問のウィンドウのタイトルには「所持金調査」、結果のウィンドウのタイトルには「おこたえ」と表示すること。

(解答例)
x=inputbox("何円持っている?","所持金調査")
if x>=10000 then
    s=x & "円とは、なかなか金持ちですね。"
else
    s=x & "円ですか。わかりました。"
end if
msgbox s,,"おこたえ"

VBS(6) 問題

dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1
上記プログラムに続けて、x(1)〜x(30)の中の最大値と最小値を求めて、「最大値は○○、最小値は○○」と表示するプログラムを完成させよ。

(解答例)
dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1
max=x(1)
min=x(1)
for i=2 to 30
    if max<x(i) then max=x(i)
    if min>x(i) then min=x(i)
next
msgbox "最大値は" & max & "、最小値は" & min
注: for i=2 to 30 のところは for i=1 to 30 でも、もちろんOK。

(解答例2)
dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1
max=x(1)
for i=2 to 30
    if max<x(i) then max=x(i)
next
min=x(1)
for i=2 to 30
    if min>x(i) then min=x(i)
next
msgbox "最大値は" & max & "、最小値は" & min
注: for i=2 to 30 のところは for i=1 to 30 でも、もちろんOK。

VBS(7) 問題

lesson 2 で出題する問題を 1*2*3*4*5*6*7*8*9 に変更したものを作れ。ただし、不正解が続いたときプログラムが終われないのは不便なので、5回間違えたら「馬鹿!正解は○○」(○○のところはもちろん数値)と表示してプログラムを終わるようにせよ。また、正解の場合は入力した回数も表示せよ。

(解答例)
count=1

n=inputbox("1*2*3*4*5*6*7*8*9=?","問題")
if n<>"" then if n=362880 then ok=1
do while (ok=0 and count<5)
    count=count+1
    n=inputbox("不正解だ! 1*2*3*4*5*6*7*8*9=?","しっかりしろ")
    if n<>"" then if n=362880 then ok=1
loop

if ok=1 then
    msgbox "正解だ! 入力回数は" & count & "回",, "おめでとう"
else
    msgbox "馬鹿! 正解は 362880 だ!",,"真面目にやれ!"
end if

VBS(8) 問題

dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1
上記プログラムに続けて、x(1)〜x(30)をバブルソートによって、大きい順に並べ替えて表示するプログラムを書け。

(解答例)
dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1

last=29
do
    gyakuten=0
    for i=1 to last
        if x(i)<x(i+1) then
            temp=x(i):x(i)=x(i+1):x(i+1)=temp
            gyakuten=1
        end if
    next
    last=last-1
loop while gyakuten=1

for i=1 to 30
    kekka=kekka & x(i) & ", "
next
msgbox kekka,,"ソートの結果"

VBS(9) 問題

dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1
上記プログラムに続けて、x(1)〜x(30)を単純選択法により小さい順に並べ替えて表示するプログラムを書け。

(解答例)
dim x(30)
x(1)=-9: x(2)=29: x(3)=7: x(4)=28: x(5)=2: x(6)=1: x(7)=2: x(8)=-12: x(9)=13: x(10)=0
x(11)=0: x(12)=-19: x(13)=-3: x(14)=-10: x(15)=5: x(16)=8: x(17)=27: x(18)=15: x(19)=8: x(20)=1
x(21)=-7: x(22)=-12: x(23)=-8: x(24)=17: x(25)=25: x(26)=14: x(27)=16: x(28)=19: x(29)=19: x(30)=-1

for last=30 to 2 step -1
    max=x(1)
    max_n=1
    for i=1 to last
        if x(i)>max then
            max=x(i)
            max_n=i
        end if
    next
    temp=x(max_n):x(max_n)=x(last):x(last)=temp
next

for i=1 to 30
    kekka=kekka & x(i) & ", "
next
msgbox kekka,,"ソートの結果"

VBS(10) 問題

おみくじプログラムを作成せよ。大吉 10%, 吉 50%, 末吉 20%, 凶 13%, 大凶 7% の確率になるようにすること。大吉、吉などの占いの結果は msgbox のウィンドウタイトル部分に表示し、メッセージは占いの結果に応じて適切なものを自分で考えること。(例えば、大吉のときは「最高にラッキーな1日になります。」など)

(解答例)
randomize
x=rnd*100
if x<10 then s="天使に祝福された1日になるでしょう。": title="大吉"
if x>=10 and x<60 then s="まあまあラッキーな日でしょう":title="吉"
if x>=60 and x<80 then s="辛抱していればラッキーなこともある1日でしょう":title="末吉"
if x>=80 and x<93 then s="災いの種があります。気をつけましょう。":title="凶"
if x>=93 then s="悪霊接近中。「物忌み」、「方違え」について調べてしっかり対策を立てましょう。":title="大凶"
msgbox s,,title




姉妹サイト
古代ローマローマ帝国 の歴史とコイン