プログラミング
中間テスト（ペーパーテスト）問題用紙（2018 年 11 月 21 日）

解答上、その他の注意事項

I. 問題は、問 I〜V まである。
II. 持ち込みは不可である。筆記用具・時計・学生証以外のものは、 かばんの中などにしまうこと。
III. 解答用紙の右上の欄に学籍番号・名前を記入すること。
IV. 解答欄がマス目になっている場合は、1 字に 1 マスを用いること。特に空白にも必ず 1マスを用いること
V. 解答中の文字 (特に a と d) がはっきりと区別できるよう注意すること。
VI. スペースの都合上、テスト中のプログラム例では、最初の#include <stdio.h>は省略する。

1

I. 以下のプログラムは動作はするがインデンテーションが滅茶苦茶でプログラムの構造を正しく反映していない。（そして、おそらく作成者の意図したようには動かない。）プログラムの構造を明確にするために「プログラミング」のインデンテーションの約束事（別紙）に厳密に従って（特に V 番目のルールに注意）、必要に応じてブレースを挿入し、インデントしなおせ。ただし、ブレース内の字下げは紙幅の制限のため 3 文字分とせよ。
もちろん、プログラムの意味（実行結果）が変わらないようにすること。（つまり、作成者の（よくわからない）意図を忖度するのではなく、コンパイラーが解釈する通りにインデントすること。）
解答は、最初の #include <stdio.h> は省略せよ。また、解答欄のスペースの都合で、（最後は別として）空行は入れずに記入せよ。

int main(void) {int i, j;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)
if (j % 2 == 0) putchar(’@’);
else if (i % 3 == 0) putchar(’*’);
else putchar(’#’);
if (j % 3 == 1) putchar(’\n’);return 0;}
II. 次のプログラムは一つの実数値を読み込んで、それを 3 倍した値と、10 倍して（切り捨てて）整数に変換した値を表示するプログラムである。
たとえば、3.31 を入力すると、それを 3 倍した値は 9.930000 です。
それを 10 倍して切り捨てた値は 33 です。と出力する。 空欄を埋めて、プログラムを完成せよ。

1 int main(void) {2double num;
3printf("実数を入力して下さい:␣");4scanf("(i)",(ii) );5printf("それを␣3␣ 倍した値は ␣ (iii) です。\n",(iv));
6printf("それを␣10␣ 倍して切り捨てた値は ␣ (v)です。 \n",7return 0;
8 }2(vi));

III. 次のプログラムの出力を書け。
1 int main(void) {2int k = 30;
34if (k % 6 == 0) {5printf("A␣");6}
7if (k % 2 == 0) {8printf("B␣");9} else if (k % 3 == 0) {10printf("C␣");11}
12if (k % 5 == 0) {13printf("D␣");
14}
15printf("\n");16
return 0;
17 }3

IV. 以下の空欄を埋めて、1 以上 15 以下の整数のみを入力として受付け、範囲外の整数が入力された場合は読込みを繰り返すプログラムを完成させよ。
1 int main(void) {2int n;3
do {4printf("1␣ 〜 ␣15␣ の整数を入力してください:␣");5scanf("%d", &n);6} while ();7printf("徳川幕府第␣%d␣ 代将軍は、 ", n);
8switch (n) {9case 1: printf("家康");
break;
10case 2: printf("秀忠");
break;
11
case 3: printf("家光");
break;
12case 4: printf("家綱");
break;
13case 5: printf("綱吉");
break;
14/* 途中略 */15case 15: printf("慶喜");
break;
16}
17
printf("です。\n");18
return 0;
19 }V. 以下のプログラムは、整数の組のデータを (i,j) という形式で出力する。このプログラムの出力を書け。ただし、空白は明示的に空白記号（␣）を、改行は矢印（↓）を書くこと。
1 int main(void) {2
int i, j, n = 4;
3
for (i = 1; i <= n; i++) {4for (j = i; j < 2 * i; j++) {5printf("(%d,%d)␣", i, j);6}
7printf("\n");8}
9return 0;
10 }解答の書き方の例:(1,2)␣(3,4)␣↓(5,6)␣↓(7,8)␣(9,0)␣↓4

「プログラミング」インデンテーションについての約束事
http://guppy.eng.kagawa-u.ac.jp/2018/Programming/indentation.html より抜粋したものである。（ただし今回の問題に関係ない部分は割愛した。また、字下げ幅はオリジナルは 4 だが、ここでは紙幅の制限のため、3 とした。）
I. 原則として、一行には文は一つしか書かない。
II. ブレース（{〜}）の中は、外よりも 3 字分を字下げする。
III. 開きブレース（{）は if や else, while, for などのキーワードと同じ行に改行せずに書く。開きブレースのあとは何も書かず改行する。
IV. 閉じブレース（}）は if や while, for などのキーワードのはじめの文字と列をそろえて書く。
その行には閉じブレース以外には何も書かない。
• ただし、else . . . が続く場合は、閉じブレース（}）と同じ行に書く。
V. if 文, if 〜 else 文 や for 文, while 文などでは、選択されたり、繰り返したりされる文が一つだけの場合も、ブレース（{〜}）に囲む。
この約束事だけは、教科書のプログラム例は必ずしもそうなっていないので、特に注意する。

• ただし、else のあとにすぐ if 文が続く else if . . . というかたちは、 else { if . . . }とはしない。

プログラミング・中間テスト解答用紙 （2018 年 11 月 21 日）

学籍番号i n tm a i n ( v o i d )i n ti ,j ;r e t u r n0 ;

氏名{I.

}

II.

(i).

(ii).

(iii).

(iv).

(v).

(vi).

III.
IV.

V.

授業・テストの感想.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................
.................................................................................................

2