あくまで解答は例です。正しい結果が得られていてかつ考え方が間違っていなければ問題ありません。
問17
#prompt Print "193÷32の商:"; 193\32 Print "193÷32の余り:"; 193 Mod 32
実行結果
193÷32の商: 6 193÷32の余り: 1
問18
(1)
#prompt Dim A As Double, B As Double Input A B=Sqr(A) If B=Int(B) Then Print B End If
実行例(1)
? 4
2
実行例(2)
? 25
5
実行例(3)
? 8
(2)
#prompt Dim A As Double, B As Double Input A If A<0 Then Print "その値の平方根は存在しません" Else B=Sqr(A) If B=Int(B) Then Print B End If End If
実行例(1)
? 4
2
実行例(2)
? 8
実行例(3)
? -5
その値の平方根は存在しません
問19
#prompt
Dim U As Long, N As Long, I As Long, A As Long
For N=1 To 20
U=N^2+2
A=0
For I=1 To U
If U=Int(U/I)*I Then ' 「U Mod I=0」としてもよい
A=A+1
End If
Next
Print "第"; N; "項の値は"; A
Next
実行結果
第 1 項の値は 2 第 2 項の値は 4 第 3 項の値は 2 第 4 項の値は 6 第 5 項の値は 4 第 6 項の値は 4 第 7 項の値は 4 第 8 項の値は 8 第 9 項の値は 2 第 10 項の値は 8 第 11 項の値は 4 第 12 項の値は 4 第 13 項の値は 6 第 14 項の値は 12 第 15 項の値は 2 第 16 項の値は 8 第 17 項の値は 4 第 18 項の値は 4 第 19 項の値は 6 第 20 項の値は 8
問20
書き換えた部分が紫色・太字になっています。
#prompt Dim A As Double, B As Double Dim C As Double ' 2値を交換するため。 Dim R As Double Dim A1 As Double, B1 As Double ' 値をとっておくための変数。 Print "最小公倍数を求める" Input A Input B A1=A ' 後で値を使うため,その値をとっておく。 B1=B If A<B Then ' A>=B にしておきたいので,もし逆なら交換する。 ' 2値を交換する際の定石。1つ余分に変数が必要なことに注意。 C=A A=B B=C End If While A<>Int(A/B)*B ' もしAがBの倍数ならばループを抜ける(そうでないときループに入る)。 R=A Mod B ' 余りを計算(A - B の代わり)。 ' 次は B と R で判定する。このために B → A ,R → B と置き換える。 A=B B=R Wend Print "最小公倍数は:";A1*B1*B ' とっておいたA1,B1が使用された。
実行例
? 4 ? 6 最小公倍数は: 12
問21
#prompt Dim S As String Input "文字列を入力して下さい>", S Print Len(S); "文字あります。"
実行例
文字列を入力して下さい>文字列の長さ
12 文字あります。
問22
#prompt Dim S As String Input "文字列を入力して下さい>", S If Len(S)>=4 Then Print Left$(S, 4) End If
実行例(1)
文字列を入力して下さい>Sinryow
Sinr
実行例(2)
文字列を入力して下さい>プログラミング
プロ
実行例(3)
文字列を入力して下さい>CPU
1.
#prompt Dim A As Double Input A Print "Aの整数部分は:";Fix(A) Print "Aの小数部分は:";Abs(A-Fix(A))
(解説)整数部分を取り出すのであるから,負数の入力もあることを考慮するとLesson 9の例の通りにIntを使うわけにはいかず,Fixを使うことになる。ここで小数部分を単に A-Fix(A) で取り出すと,負数を入力した際に小数部分にマイナスが付いてしまうため,これを取り除く意味でAbs関数を用いている。(Lesson 9の段階ではAbs関数が未出だったため章末に回した。)
実行例
? 3.7
Aの整数部分は: 3
Aの小数部分は: 0.7
? -3.7
Aの整数部分は: -3
Aの小数部分は: 0.7
2.
#prompt Dim A As Double Input A Print Sin(A)^2+Cos(A)^2
実行例
? 0.5
1
? -3.2
1
(解説)「三角関数の基本」のページに書いてある通り,この値は常に1を取る。しかしコンピュータ内の誤差により(Special Lesson 4参照)「0.999999(…)」となることもあるので注意。
3.
#prompt
Dim A As String
Input A
If Val(A)>=100 Then ' Valを用いて値として評価する
Print Val(A)*2
Else
Print A+A
End If
実行例
? 170
340
? 43
4343
? AB301
AB301AB301