試験の実施方法

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 コマンドが実行できるようにします。ただし、再起動された 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-2018

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

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

第2回実施と同じ内容です。第2回での回答との整合性に基づき採点されます。

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

次の実行例は、キーボードから正の整数 a の値を入力すると、$\frac{a}{2}$ の小数点以下を切り捨てた値を main() 関数の返り値として返すプログラム exam08-1 を実行し、その返り値の値を確認した様子である。このようなプログラム exam08-1.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、a の値として正の整数ではないものが入力された場合の処理は考えなくてもよい。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
100
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
50
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
101
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
50
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
99
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
49
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
1
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
0
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
2
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
1
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-1
3
t180900@s01cd0542-160:~/kiso2-2018/exam08$ echo $?
1

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

3つの実数 x, y, z の値を順に入力すると、$(x+y)z$ と $\sqrt{x^2+y^2+z^2}$ の値を出力することを繰り返すプログラム exam08-2.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、x, y, z の値にすべて 0 が入力されたときはプログラムを終了するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-2
0 1 2
2.000000 2.236068
0 0 2
0.000000 2.000000
1 0 0
0.000000 1.000000
1 2 3
9.000000 3.741657
-1.1 1.1 2
0.000000 2.533772
12.3 3.21 -10.0
-155.100000 16.173871
0 0 0

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

$a\le b$ を満たす2つの整数 $a, b$ の値を入力し、その後、実数 $x$ の値を繰り返し入力すると $a\le x\le b$ を満たしているかどうかを判定して出力するプログラム exam08-3.c を作成し、kiso2 コマンドを用いて提出しなさい。

整数値 a, b の入力は1度のみとし、入力された値が $a\le b$ を満たさない場合は何も出力せずに終了する。 また、実数値 x の値が $a\le x\le b$ である場合は「範囲に含まれています。」、そうでない場合は「範囲外です。」と出力する。 さらに、x=a または x=b である場合は「端点です。終了します。」と出力し、プログラムを終了するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-3
1 -1
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-3
-1 1
-0.2
範囲に含まれています。
0
範囲に含まれています。
0.9
範囲に含まれています。
1.1
範囲外です。
-1.01
範囲外です。
-1
範囲に含まれています。
端点です。終了します。
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-3
-9 3
2.99
範囲に含まれています。
-0.1
範囲に含まれています。
-9.1
範囲外です。
3.0
範囲に含まれています。
端点です。終了します。
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-3
1 1
1.1
範囲外です。
0.9
範囲外です。
1
範囲に含まれています。
端点です。終了します。

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

キーボードから大文字アルファベット26文字(A〜Z)のうちのいずれか1文字を読み込むと、その文字から Z までのアルファベットを順に出力するプログラム exam08-4.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、入力された文字が大文字アルファベット以外の場合は、何も出力せずに終了するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-4
a
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-4
A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-4
Q
Q R S T U V W X Y Z
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-4
Z
Z
scanf() 関数を用いてchar型変数へ1文字を読み込むための変換指定子は %c です。

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

次のような級数を用いて $\frac{\pi}{2\sqrt3}$ の近似値を計算したい。 $$\sum_{k=0}^n \frac{(-1)^k}{(2k+1)3^k} \simeq \frac{\pi}{2\sqrt3}$$

正の実数 x の値を入力すると、n の値を 0 から 1 ずつ増加させたときの級数の値(近似値)を、誤差が x より小さくなるまで順に表示するプログラム exam08-5.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、出力する近似値は小数点以下10桁まで出力するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-5
1
n= 0: 1.0000000000
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-5
1e-10
n= 0: 1.0000000000
n= 1: 0.8888888889
n= 2: 0.9111111111
n= 3: 0.9058201058
n= 4: 0.9071918479
n= 5: 0.9068177364
n= 6: 0.9069232551
n= 7: 0.9068927719
n= 8: 0.9069017375
n= 9: 0.9068990636
n=10: 0.9068998700
n=11: 0.9068996246
n=12: 0.9068996999
n=13: 0.9068996766
n=14: 0.9068996838
n=15: 0.9068996816
n=16: 0.9068996823
n=17: 0.9068996821

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

$a\le b$ を満たす2つの整数 $a, b$ の値を入力すると、a から b までの全ての奇数を求めるプログラム exam08-6.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、入力された値が $a\le b$ を満たさない場合は値を出力せずに終了するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
3 3
3
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
2 4
3
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
4 2

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
0 0

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
-1 1
-1 1
t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-6
-9 10
-9 -7 -5 -3 -1 1 3 5 7 9

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

実数の値を入力するとそれまでに入力された回数と 0 にもっとも近い(絶対値の小さい)値を出力することを繰り返すようなプログラム exam08-7.c を作成し、kiso2 コマンドを用いて提出しなさい。 ただし、もっとも 0 に近い値が 0 になると繰り返しを停止しプログラムは終了するものとする。

t180900@s01cd0542-160:~/kiso2-2018/exam08$ ./exam08-7
99.9
n = 1, emin = 99.900000
0.99
n = 2, emin = 0.990000
1.9
n = 3, emin = 0.990000
-1
n = 4, emin = 0.990000
-0.01
n = 5, emin = -0.010000
1e-3
n = 6, emin = 0.001000
0.1
n = 7, emin = 0.001000
0
n = 8, emin = 0.000000

問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/exam08-2018.txt
  • 最終更新: 2019/01/10 18:00
  • by sano