2025 年度「プログラミング」中間テスト・解答例

全体

ペーパーテスト

  1. 以下のプログラムは動作はするがインデンテーションが滅茶苦茶でプログラム の構造を正しく反映していない。(そして、おそらく作成者の意図したように は動かない。)プログラムの構造を明確にするために if 文、if 〜 else 文、for 文は「インデンテーションの約束事」(別紙)の 5.「鉄の掟」に従って、 必ずブレースを使用するように(ただしプログラムの意味(実行結果)が変わらないように)書き換え、さらに 「インデンテーションの約束事」の 0. 〜 4. に従ってインデントしなおせ。

    解答は、最初の #include <stdio.h> は省略せよ。 また、解答欄のスペースの都合で、(最後は別として)空行は入れずに記入せよ。

  2. 次のプログラムは一つの実数値を読み込んで、 それを 2.5 倍した値と、10 倍して小数点以下を切り捨てた値を表示するプログラムである。 たとえば、3.65 を入力すると、

    整数を入力して下さい: 3.65↵
    入力した値を 2.5 倍した値は 9.125000 です。
    入力した値を 10 倍して切り捨てた値は 36 です。
    

    と出力する。 空欄を埋めて、プログラムを完成せよ。

  3. 以下の空欄を埋めて、 0 以上 140 未満の 7 の倍数をすべて昇順 (つまり、0, 7, 14, …, の順)に出力するプログラムを完成させよ。

  4. 次のプログラムの出力を書け。

  5. 以下のプログラムは、整数の組のデータを (i,j) という形式で出力する。 このプログラムの出力を書け。ただし、この問題の解答では、 空白は明示的に空白記号(␣)を、 改行は矢印(↵)を書くこと。

  6. 「整数: 」と出力し、18 を受け取ったときに次のように出力するプログラムを作成する。

    1?2!3?4!5?
    6!7?8!9?0!
    1?2!3?4!5?
    6!7?8!
    

    上の ⋮ の部分を埋めてプログラムを完成させよ。 使用できる記号列は以下から選び、記号Ⓐ~Ⓩの並びで答えよ。 なお(当然ながら)この問題ではインデンテーションは考慮しなくてよい。

    一度だけ使用するもの:
    1. putchar('!');
    2. putchar('?');
    3. putchar('\n');
    1. printf("%d", i % 10);
    1. if (i % 2 == 0)
    2. if (i % 5 == 0)
    3. for (i = 1; i <= n; i++)
    何度でも使用して良いもの(全く使用しない可能性もある):
    1. {
    2. }
    3. else

オンラインテスト


Koji Kagawa