プログラミング
期末テスト（ペーパーテスト）問題用紙（2017 年 2 月 22 日）

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

I. 問題は、問 I〜IV まである。
II. 解答用紙の右上の欄に学籍番号・名前を記入すること。
III. 解答欄がマス目になっている場合は、1 字に 1 マスを用いること。特に空白にも必ず 1マスを用いること
IV. 解答中の文字 (特に a と d) がはっきりと区別できるよう注意すること。
V. 持ち込みは 不可 である。筆記用具・時計・学生証以外のものは、かばんの中などにしまうこと。
VI. 配点は 32 点とする。（オンラインテスト — 8 点）

1

I. 次のプログラムは、「0 〜 100 の整数を入力してください。」と出力してから一つの整数値を読み込んで、その数が -1 以下または 101 以上の場合は、「範囲外です。」と出力して、「0 〜 100の . . .」の出力に戻り、それ以外は「あなたが入力したのは . . . です。」と表示するプログラムである。空欄を埋めて、プログラムを完成させよ。
1 #include <stdio.h>
23 int main(void) {4int p;5while (1) {6printf("0␣ 〜 ␣100␣ の整数を入力してください。 "); scanf("%d",(ii)) {7if (8printf("範囲外です。\n");9} else {10(iii) ;11}
12}
13printf("あなたが入力したのは␣%d␣ です。\n", p);1415
return 0;16 }(i));II. 以下のプログラムの空欄を埋めて、3 で割ると 1 余る、100 以下の正の数を昇順にすべて（1, 4,7, 10, . . . , 100）空白で区切って出力するプログラムを完成させよ。
1 #include <stdio.h>
23 int main(void) {4int i;5for (6printf("%d␣", i);
7}8putchar(’\n’);910return 0;11 }) {

2

III. 以下のプログラムの空欄に、• 2 つの double 型の引数 x, y を受け取り、double corge(double x, double y)

2xyを返す関数x+yを定義せよ。

1 #include <stdio.h>
2
3
4
5
67 int main(void) {8double a = 1.0, b = 1.5;
9printf("%f␣ と ␣%f␣ の調和平均は ␣%f␣ です。\n", a, b, corge(a, b));1011
return 0;
12 }このプログラムは

1.000000 と 1.500000 の調和平均は 1.200000 です。と出力する。

3

IV. 以下の問に答えよ。
(i) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
23 int main(void) {4double x, y, z, w;
5
x = 3 / ((double)4); printf("%f␣ ",x);6y = (double)(3 / 4); printf("%f␣ ",y);7z = 4; w = 3 / z; printf("%f␣ ", w);
8putchar(’\n’);9
10
11
return 0;
12 }
(A).
(C).

0.750000 0.000000 0.000000
0.000000 0.750000 0.750000

(B).
(D).

0.750000 0.000000 0.750000
0.750000 0.750000 0.750000(ii) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
2
3 int main(void) {4int a = 2, b = 3, c = 7, d = 5;
5if (a < b) {6a = b;7}8else if (a < c) {9a = c;10}11if (a < d) {12a = d;13}
14printf("%d\n", a);15
16
return 0;
17 }
(A).

2(B).

(C).

3

4

5(D).

7

(iii) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
2
3 int main(void) {4int i;56for (i = 6; i >= 0; i -= 2) {7printf("␣%d", i);8}9printf("!%d\n", i);10
11return 0;
12 }
(A).
(C).

(B).
(D).

6 4 2 0!0
6 4 2!2

6 4 2 0!-2
6 4 2!0(iv) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
23 int main(void) {4int i, j;
56for (i = 2; i <= 3; i++) {7for (j = 3; j >= 1; j--) {8
printf("(%d,%d)␣", i, j);9}10putchar(’\n’);
11}
12
13
return 0;
14 }
(A).

(3,2) (3,3)(2,2) (2,3)(1,2) (1,3)(B).

(2,3) (3,3)(2,2) (3,2)(2,1) (3,1)(C).

(3,2) (2,2) (1,2)(3,3) (2,3) (1,3)(D).

(2,3) (2,2) (2,1)(3,3) (3,2) (3,1)

5

(v) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
2
3 int main(void) {4
int i, j;5
6for (i = 1; i <= 6; i++) {7int k = (i % 2 != 0) ? 1 : i;8for (j = 1; j <= i; j++) {9
printf("%d", (k++) % 10);10}
11putchar(’\n’);
12}
13
14
return 0;
15 }
(A).

1213214321
54321
654321(B).

(C).

1211234321
12345
654321123456789012
3456789012345(vi) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1 #include <stdio.h>
23 int main(void) {4int n = 0;
5
6
printf("%d␣", n--);7
printf("%d␣", ++n);8
printf("%d␣", --n);9printf("%d␣", n++);10
printf("%d␣", n = 1);
1112
return 0;
13 }
(A).
(C).

(B).
(D).

-1 -1 0 0 1-1 0 -1 0 0

60 0 -1 -1 1
-1 0 -1 0 1(D).

1231234567
12345678901

(vii) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
123456789101112131415#include <stdio.h>
int arr[4][4] = { { 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 0, 1, 2 },{ 3, 4, 5, 6 }};int main(void) {int i;for (i = 1; i < 4; i++) {printf("%d␣", arr[i][i - 1]);}
return 0;}(A).

5 0 5(B).

(C).

3 6 94 1 8(D).

2 7 2(viii) 次のプログラムの出力結果を下の選択肢から 1 つ選べ。
12345678910111213141516#include <stdio.h>void bar(double x, double y[]) {x = 0.0;y[0] = 0.0;}
int main(void) {double x = 1.2;
double y[] = { 3.4 };bar(x, y);printf("x␣=␣%.3f,␣y[0]␣=␣%.3f\n", x, y[0]);return 0;
}
(A).
(C).

(B).
(D).

x = 1.200, y[0] = 3.400
x = 1.200, y[0] = 0.000

7x = 0.000, y[0] = 3.400
x = 0.000, y[0] = 0.000

(ix) 次のプログラムの出力結果を下の選択肢より 1 つ選べ。
1234567891011121314151617181920212223242526#include <stdio.h>
int x = 5;
void baz(void) {int x = 2;
printf("%d␣", x);}void qux(void) {printf("%d␣", x);}
int main(void) {int i, x = 7;
baz();
qux();
printf("%d␣", x);for (i = 1; i <= 2; i++)int x = i * 3;baz();
qux();
printf("%d␣", x);}
return 0;
}
(A).
(C).

{

(B).
(D).

2 5 7 2 5 3 2 5 67 7 7 1 1 1 2 2 2

82 2 2 2 2 3 2 2 6
7 2 2 3 2 2 6 2 2

(x) 次のプログラムの出力結果を下の選択肢から 1 つ選べ。
12345
67891011121314#include <stdio.h>void foo(int n) {if (n < 5) {foo(n + 1);
printf("%d␣", n);foo(n * 2);}}
int main(void) {foo(1);return 0;}
(A).
(C).

(B).
(D).

3 4 1 4 2 3 44 3 2 4 1 4 3 2 494 3 2 4 1 4 3
4 2 3 4 1 4 2 3 4（計算・下書き用紙）

（計算・下書き用紙）

（計算・下書き用紙）

プログラミング・期末テスト解答用紙 （2017 年 2 月 22 日）

学籍番号

氏名

(1, 1, 2 点)

I.
(i).

(ii).

(iii).
II.

(4 点)

III.

(4 点)

IV.

( 各 2 点)
(i).

(ii).

(iii).

(iv).

(v).

(vi).

(vii).

(viii).

(ix).

(x).
裏面に感想を記入する欄があります。

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