試験問題

今日は趣向を変えて、今日の授業の後半で出した試験問題について。
とりあえず、試験問題載せます。
解答は後ほど載せますので、解こうというチャレンジャー、またはこんなクソな問題だけど付き合ってやらぁ!って人はどうぞ解答してみてください。
ちなみに本来のテストは参照物なしの筆記試験です。

1.
以下の(ア)~(コ)はFortranプログラムの一部である。この部分を実行すると、各変数の値は最後に何になるか。ただし、(ア)~(ケ)の変数はすべて整数型、(コ)の変数はすべて実数型とする。(小数点付きか、そうでないかに注意して答えること。)

(ア)
s = 0
do k = 1, 10
    s = s + k
end do

sの値(            )
 

(イ)
s = 0
do k = 1, 20, 3
    s = s + k
end do

sの値(            )
 

(ウ)
s = 0
do k = 10, 1, -1
    s = s + k
end do

sの値(            )
 

(エ)
s = 0
do k = 1, 10
    s = k
end do

sの値(            )
                  

(オ)
m = 0
c = 0
if(m. lt. 0) c = c + 1
m = m + 1
if(m. gt. 0) c = c + 1

cの値(            )
 

(カ)
n = 0
if(n. le. 0) n = n + 1
if(n. gt. 0) n = n + 2
if(n. eq. 1) n = n + 3
n = n + 4

nの値(            )
 

(キ)
n = 1
if(n. ne. 0) then
    n = n * 2
else
    n = n * 3
end if

nの値(            )
 

(ク)
c = 0
do k = 1, 20
    r = k – k / 3 * 3
    if(r. eq. 0) c = c + 1
end do

cの値(            )
 

(ケ)
read(*,*) n
do
    if(n. lt. 10) exit
    n = n / 10
end do

自分の学生番号 abc-defからdefabcという6桁の
整数を作り、これをキーボードから入力したとき
nの値(            )

(コ)
x = 1.0
if(x. lt. -1.0) then
    y = -1.0
else if(x. lt. 1.0) then
    y = 0.0
else
    y = 1.0
end if

yの値(            )

 

2.
1 / 12 + 1 / 22 + 1 / 33 + … + 1 / 1002の値を計算するプログラムを書け。
(do文を使って記述すること。また、変数の型に注意せよ。)

 

3.
キーボードから1より大きい整数を変数nに代入し、nが1でない限り、nが偶数ならば2で割り、nが奇数ならば3倍して1を足して、nの値を次々に書き換えていく(nが1になったら終了)。この操作はどんな整数でも有限回で終了するだろうという予想が有名なコラッツ予想である。この操作を実行しようと次のプログラムを作った。(stepは操作の回数、maxは整数nの最大値を求めるための変数である。)

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

c—+—-+—-+—-+
      integer n, step, max
      read(*,*) n
      if(n. le. 1) stop
      step = 0
      max = n
      do
          write(*,*) n
          if(n. eq. 1) exit
          if(n – n / 2 * 2. eq 0) n = n / 2
          if(n – n / 2 * 2. eq 0) n = 3 * n + 1
          step = step + 1
          if(n. gt. max) max = n
      end do
      write(*,*) ‘step = ‘,step,’    max = ‘,max
      stop
      end

(1) 3行目と8行目のif文は何のためにあるか?それぞれの理由を答えよ。
(2) 9行目と10行目の論理if文において整数nへの操作を実行しているが、このプログラムは思ったとおりに動作しない。どのような問題点がある
   か?考えられる点をすべて挙げよ。
(3) 正しく動作させるにはどう書き直したらよいか?正しいプログラムを書け。 

それでは、解いてくれるというチャレンジャーはがんばってください。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中