●問題
第5問 (選択問題) (配点 20)
次は自然数Nが平方数であるかどうかを判定するプログラムである。
(2)また、Nに13を入力すると画面には
(3)このプログラムを繰り返し実行して、Nに1から100までの整数を順に入力したとき、 NOは[チツ]回表示される。
10 INPUT "N=" ; N 20 FOR I=1 TO N 30 J=I*I 40 K=N-J 50 PRINT "K=" ; K 60 IF K=<0 THEN GOTO 80 70 NEXT I 80 IF K<0 THEN GOTO 110 90 PRINT"YES" ; N ; "=" ; I ; "*" ; I 100 GOTO 120 110 PRINT "N0" 120 END(1)このプログラムを実行して、Nに16を入力すると画面には
K=[アイ] K=[ウエ] K=[オ] K=[カ] YES [キク] = [ケ] + [コ]が表示される。
(2)また、Nに13を入力すると画面には
K=[サシ] K=[ス] K=[セ] K=[ソタ] NOが表示される。
(3)このプログラムを繰り返し実行して、Nに1から100までの整数を順に入力したとき、 NOは[チツ]回表示される。
●問題の急所
- 変数の役割を理解せよ
このプログラムで出てくる変数はI,J,K,Nです。- I
for-nextで繰り返すときに使う変数。最初は0で、繰り返す度に1ずつ増え、 最後はNになる。 - J
変数Jの値は、I^2(I*I)です。 - K
変数Kの値は、N-Jです。プログラムではKの正負を調べている場面があるので、 Kの正負を考えてみましょう。- K>0
N>J=I*Iということ。 - K=0
N=I*Iということ。このときのIが欲しい。 - K<0
N<J=I*Iということ。Iは0<=I<=Nなので、 実際にはこのようにならない。
- K>0
- N
ユーザーが入力した値を収めている。
- I
- プログラムをよく見よ
プログラムをよく眺めて下さい。最後に表示されるKの値は必ず0以下ですから、 [カ]と[ソタ]は0か-*(*は1から9)に絞られます。 さらに、空欄の数から、[カ]=0は明らか。 *は実際に繰り返してみればすぐ分かる。Nが少ない値なら実験あるのみ。
●解答
20点満点です。
ケ と コ は組んで正解とします。
空所の記号 | 解答 | 配点 |
アイ | 15 | 1 |
ウエ | 12 | 1 |
オ | 7 | 1 |
カ | 0 | 1 |
キク | 16 | 1 |
ケ コ | 4 4 | 1 |
サシ | 12 | 1 |
ス | 9 | 1 |
セ | 4 | 1 |
ソタ | -3 | 1 |
チツ | 90 | 1 |
ケ と コ は組んで正解とします。