試験の実施方法

kiso2 コマンドで 「試験」 表示されたファイルは、試験として実施されます。 「試験」 として出題されたファイルもkiso2 コマンド を用いて提出しますが、これらのファイルは試験実施中のみ提出することができます。

試験の実施方法は、以下の通りです。

  1. 端末(ターミナル)上から、kiso2 コマンドに –start-exam オプションを付けて実行kiso2 –start-exam )することで試験が開始されます。表示フォントの関係で見にくいかもしれませんが、kiso2 の後にスペースを開けて –start-exam (先頭のハイフンは2つ 「マイナス・マイナス・start・マイナス・exam」) です。
  2. 試験が開始されると、試験開始のメッセージと共にウェブブラウザで試験用Webページが自動的に表示されます(本試験でないときは科目ページが表示)。
  3. 試験の実施中は、端末(ターミナル)上で経過時間と残り時間が不定期に更新され、kiso2 コマンドで「試験」表示されたファイルが提出できます。
  4. kiso2 コマンドで「試験」ファイルを提出する場合は、kiso2 –start-exam で試験を開始した端末(ターミナル)とは別の端末(ターミナル)をもう一つ起動し、その端末で kiso2 コマンドによるファイルの提出を行ってください。
  5. 試験実施中は、不定期にデスクトップ画面のスクリーンショットが取得されます。
  6. 試験の残り時間が100秒を切ると1秒毎のカウントダウンが表示され、残り時間が 0 になると kiso2 -start-exam コマンドと共に試験が終了します。
  7. kiso2 –start-exam コマンドが強制終了された後や、すでに起動している場合は kiso2 –start-exam の再実行が行われます。ただし、kiso2 –start-exam コマンドは、再起動される度に残り試験時間が10分ずつ減るので注意して下さい。

解答方法と採点方法

問0と問8は必ず解答・提出してください。これらが回答されていない場合、それぞれ5点分の減点として扱われます。

問1から問7は選択問題として自由に解答してください(1つも解答しなくても、全て解答しても構いません)。 ただし、試験時間は限られていますので時間配分には十分注意して解答してください。

kiso2 コマンドで提出されたもののうちcc コマンドでコンパイルが可能なすべてのプログラムについて、それぞれ10点満点で採点されます。 コンパイルができないプログラムソースは、提出しても採点の対象にはならないので注意してください。

プログラムの採点は、各問の実行例で示したものの他に、採点用の入出力例を加えた複数の入出力結果との一致によって評価されます。

提出プログラムが、採点用に用意された入出力結果を満たさなかった場合は、一致した入出力結果の割合やプログラムソースの内容で評価を行います。 その場合、インデント(字下げ)や変数名などのプログラムソースの読みやすさの観点からも評価されます。

この試験の総点は50点を超えるように配点されていますが、科目評価としては50点満点で評価されます。 すなわち、この試験の合計点が50点を超えた場合、超えた点数は切り捨てられ50点分の科目評価として扱われます。

問0:exam08-0.txt (5点)

以下のリンクにあるアンケートフォームに回答して下さい。

C言語についての理解度調査その2 kiso2-2019

「C言語に関する単語や概念について、現在の理解度を自分がどのように感じているかお答え下さい。」

回答が終わったらフォーム画面下の「送信(Submit)」ボタンを忘れずに押して下さい。 アンケートに回答後、「自分の学籍番号」が書かれたテキストファイル exam08-0.txt を適当なエディタを用いて作成し、kiso2 コマンドを用いて提出しなさい。

「その1」での実施と同じ内容です。今回の回答内容の妥当性、および「その1」での回答との整合性に基づき採点されます。

問1:exam08-1.txt (10点)

次の文章が表すディレクトリとファイルを作成しなさい。

ホームディレクトリの直下の ~/kiso2-2019 ディレクトリ内に exam08-1 ディレクトリが存在している。
この exam08-1 ディレクトリ内には、1つのディレクトリ 20191114 と、2つのテキストファイルの f1, f2 が存在している。
これら2つのテキストファイルの内容(中身)は、それぞれ f1 が /etc/timezone と、f2 が /etc/resolv.conf と全く同じである。
また、上記の 20191114 ディレクトリ内にも、2つのテキストファイル f1, f2 が存在しており、これらのファイルの内容は、それぞれ f1 が /etc/papersize と、f2 が /etc/subgid と全く同じである。

これらを作成した後に、ターミナル(端末)上のカレントディレクトリを ~/kiso2-2019/exam08-1 に移動し、以下のコマンドを実行しなさい。 このコマンドの出力結果のみを記載したテキストファイル exam08-1.txt を作成し、kiso2 コマンドを用いて提出しなさい。

tree; cat f*; cat */*

問2:exam08-2.c (10点)

整数 r の値を入力すると、半径 r の円の面積、および、半径 r の球の体積を小数点以下2桁までの値で出力することを繰り返すプログラム exam08-2.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、r の値に負の値が入力されるとプログラムを終了するものとする。

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-2
0
0.00 0.00
1
3.14 4.19
2
12.57 33.51
3
28.27 113.10
9
254.47 3053.63
-1

問3:exam08-3.c (10点)

実数 $x$ に対して $[x]$ をガウス記号(または床関数)と呼び、「$x$ を超えない最大の整数」 $[x] = \max\{k\in\mathbb{Z}\,|\,k\le x\}$ を表す。 例えば、$[0.3]=0, [2.4]=2, [3.0]=3, [4.1]=4$ である。

いま、0以上の実数 $x$ と自然数 $n$ に対して、新しい記号 $[x]_n$ を「$x$ を超えない最大の $n$ の倍数」$[x]_n = \max\{nk\in\mathbb{Z}^+\,|\,nk\le x,\,k\in\mathbb{Z}^+\}$ と定義する。 例えば、$[0.3]_2=0, [2.4]_2=2, [3.0]_2=2, [4.1]_2=4$ である。

実数値 $x$ と整数 $n$ の値を入力すると、$[x]_n$ の値を出力するプログラム exam08-3.c を作成し、kiso2 コマンドを用いて提出しなさい。

ただし、$x,n$ の値の入力と $[x]_n$ の出力は繰り返し行えるものとし、$x$ に負の値が入力される、あるいは、$n$ に 0以下の値が入力されるとプログラムが終了するものとする。

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-3
-1.1 2
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-3
1.1 0
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-3
0.1 1
0
1.0 1
1
1.9 1
1
0.1 2
0
1.0 2
0
1.9 2
0
2.1 2
2
2.9 3
0
3.0 3
3
123.2 12
120
98765.123 71
98761
0 0

問4:exam08-4.c (10点)

ASCII文字コードの 33〜126 は「ASCII印字可能文字」と呼ばれ、端末等に表示が可能な文字コードである。 キーボードから整数値を入力し、その数値がASCII印字可能文字であればその文字を端末に出力し、そうでなければ「表示できません」と出力するプログラム exam08-4.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、入力された数値がASCII文字コードではない場合は、何も出力せずに終了するものとする。

t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
-1
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
0
表示できません
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
32
表示できません
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
33
!
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
65
A
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
126
~
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
127
表示できません
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
128
t190900@s01cd0542-160:~/kiso2-2019/exam09$ ./exam08-4
999

問5:exam08-5.c (10点)

入力された10進整数を long 型の変数 a に受け取ると、a を2進数表記した際に何桁必要であるかを出力するプログラム exam08-5.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、入力された値が 0 未満であった場合は、何も出力せずに終了するものとする。また、long 型が保持できないような値が入力された場合の処理は考えなくてもよい。

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
-1
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
0
1
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
1
1
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
2
2
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
3
2
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
4
3
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
255
8
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
256
9
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-5
12345678987654321
54
対数を使うと比較的かんたんに求めることができます。

問6:exam08-6.c (10点)

直前の3つの項の和として次の項が決まるトリボナッチ数列 $\{t_n\}$ は以下のように定義される。 $$t_0=t_1=0,\quad t_2=1,\quad t_{n+3} = t_{n} + t_{n+1} + t_{n+2}\qquad (n \ge 0)$$

いま、$t_{61}=2544489349890656, t_{62}=4680045560037375, t_{63}=8607945812375585$ が与えられているとき、 トリボナッチ数列の $t_{60}$ から $t_{0}$ までを逆順に計算して出力するプログラム exam08-6.c を作成し、kiso2 コマンドを用いて提出しなさい。

実行例:

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-6
t60 = 1383410902447554
t59 = 752145307699165
t58 = 408933139743937
t57 = 222332455004452
t56 = 120879712950776
t55 = 65720971788709
t54 = 35731770264967
t53 = 19426970897100
t52 = 10562230626642
t51 = 5742568741225
t50 = 3122171529233
t49 = 1697490356184
t48 = 922906855808
t47 = 501774317241
t46 = 272809183135
t45 = 148323355432
t44 = 80641778674
t43 = 43844049029
t42 = 23837527729
t41 = 12960201916
t40 = 7046319384
t39 = 3831006429
t38 = 2082876103
t37 = 1132436852
t36 = 615693474
t35 = 334745777
t34 = 181997601
t33 = 98950096
t32 = 53798080
t31 = 29249425
t30 = 15902591
t29 = 8646064
t28 = 4700770
t27 = 2555757
t26 = 1389537
t25 = 755476
t24 = 410744
t23 = 223317
t22 = 121415
t21 = 66012
t20 = 35890
t19 = 19513
t18 = 10609
t17 = 5768
t16 = 3136
t15 = 1705
t14 = 927
t13 = 504
t12 = 274
t11 = 149
t10 = 81
t9 = 44
t8 = 24
t7 = 13
t6 = 7
t5 = 4
t4 = 2
t3 = 1
t2 = 1
t1 = 0
t0 = 0

問7:exam08-7.c (10点)

整数 $n$ の値を入力すると、$1$ から $n$ までの自然数を昇順に出力するプログラム exam08-7.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、$n$ に 0 以下の値が入力された場合、何も出力せずに終了するものとする。

このとき、出力される $1$ から $n$ までの自然数は、$k^2 \ge n$ であるような最小の自然数 $k$ に対して、$k\times k$ の正方形のマス目上に左上から行方向へ順に出力する。 また、出力される各自然数は、それぞれ半角3文字幅のスペースに右寄せで出力するものとする。

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
0
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
1
  1
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
2
  1  2

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
3
  1  2
  3
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
4
  1  2
  3  4
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
5
  1  2  3
  4  5

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
7
  1  2  3
  4  5  6
  7
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
9
  1  2  3
  4  5  6
  7  8  9
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
10
  1  2  3  4
  5  6  7  8
  9 10

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
16
  1  2  3  4
  5  6  7  8
  9 10 11 12
 13 14 15 16
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
17
  1  2  3  4  5
  6  7  8  9 10
 11 12 13 14 15
 16 17

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
25
  1  2  3  4  5
  6  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20
 21 22 23 24 25
t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
26
  1  2  3  4  5  6
  7  8  9 10 11 12
 13 14 15 16 17 18
 19 20 21 22 23 24
 25 26

t190900@s01cd0542-160:~/kiso2-2019/exam08$ ./exam08-7
36
  1  2  3  4  5  6
  7  8  9 10 11 12
 13 14 15 16 17 18
 19 20 21 22 23 24
 25 26 27 28 29 30
 31 32 33 34 35 36

問8:exam08-8.txt (5点)

この試験の問0から問7までで自身が得られる合計点(0〜75点)を自己採点しなさい。自己採点した得点のみを半角数字で記入したテキストファイル exam08-8.txt を作成し、kiso2 コマンドを用いて提出しなさい。

実際に得られた得点を x、自己採点で予測した得点を y とすると、問8は $\frac{10-|x-y|}{2}$ (小数点以下切り上げ)で計算されます。ただし、計算された点数が 0 以下の場合は、問8は0点として採点されます。
  • lecture/kiso2/2019/exam08-2019.txt
  • 最終更新: 2019/11/14 18:47
  • by sano