Final2019comment

From Prog0

Jump to: navigation, search

Contents

期末試験講評・採点基準

問題1

1問1点。

全体的に正解率が良かったが、(k)の正解率が低く感じた.
(k)は引数無しを指定されているので、void function(void); が適切。

問題2

採点基準

  • 入れ替え時のループ回数が N/2 でない、-2点
  • 入れ替え処理が多少正しくない、-2点
  • マクロを使用していない、-1点
  • 余計な宣言(命令)が行われている、-5点
  • 逆順に出力をしているのみ、-7点
  • 配列にN-iで値を直接代入している、-7点
  • 入れ替え処理を書こうとしている努力がわかる、+1点

講評:
配点10点中、およその平均点は3-5点で、あまり出来は良くなかった. 入れ替え時のループの回数が N/2 でなかったり、入れ替え時に tmp を使わず、直接同じ配列同士の代入をしている回答が目立った. 中には、マクロを使ってない、入れ替えをせず N-i で直接値を代入している回答もあり、配列の中身の入れ替えはよく復習して欲しい. ちなみに、ループ回数を N にすると誤りである理由は、各要素が2回入れ替えられて最終的には元に戻ってしまうからです。

問題3

各2点。

かなり出来は良かったです。
(b)(c) elseが抜けている誤答が少しありました。ここにelseが無いと(d)がうまく書けません。 他、== を = 一つにしている人がいましたが、= のみだと代入になってしまいます。

問題4

(a)(b)2点、(c)(d)(e)は3点。
>= を => と逆に書いてしまうとか、数学記号の不等号になっている物は、1点減点してあります。

出来は悪くなかったです。
(c) は別解がいろいろありました。(a)または(b)の否定、つまり
!( hum >= 60 && temp >= 26 || hum < 60 && temp >= 28 )
も正解です。
なお、&& と || では前者の方が優先順位が高いので、&&比較の部分はカッコで囲まなくても大丈夫です。
(d)(e) elseの代わりに改めてif文を書くのでも動作しますが、elseの使い方は基本なので、マスターしておくようにしてください。

問題5

採点基準:
細かいスペルミス、一部を除いて ; の有無は不問としている。不等号を数学の記号で書いてあるものは -1点している。(これは問題6でも同様)

  • (c) 片方でも条件が間違っているものは不可。解答のうち n>2 の部分は n>=4 や n!=2 でも可。
  • (d) 別解として flag++, flag+=1 なども可。
  • (f) i<=sqrt(n) まで探せばよいのだが(エラトステネスのふるい)、math.h を include していないので、sqrt は使えない。なので、i の上限を n/3 から n-1 以下になるように、i<n, i<n/2, i<=n/3 などであれば正しく動作する。ただし、i<=n のように n を含めてしまうと、n で割り切れてしまうので、この場合は誤りとなる。また、sqrt を使わないで i*i<=n という条件も正しい。
  • (h) 別解として flag, flag!=0, flag>0 なども可

講評:
比較的出来は良かった。

  • (h) flag!=2 という間違いや、flag=1 のように代入になってしまっている例があった。

問題6

採点基準:

  • (b) ; が : となっているものは不可。
  • (e) 「実行例のように」と出題しているので、表示の正確さもチェックしており、%3d を %d と回答した場合は -1 点している。また、\n を入れていない場合も -1 点している。

講評:
比較的出来は良かった。

  • (c) と (e) で不正解、もしくは減点される人が多かった。
  • (b) i<num とする回答があった。その他、ダウンカウントしている例もいくつかあった。
  • (c) change>money[i] のように、= が足りない回答が多かった。

問題7

採点基準:
(a)(b)(c) は完答のみ、(d)(e) は加点方式。

(c) の別解は、result != 2 および result == -1 です。なお、result = EOF などと代入演算子を誤って書いたものは1点減点しました。
(d)

  • 仮引数の記述が正しければ、2点。
  • 計算式が正しければ、3点。ただし、m 単位に換算をしていない場合は0点。
  • 正しい戻り値が返るようであれば、1点。
  • 戻り値の変数が正しく関数内で宣言されていなかった場合は2点減点。

(e)

  • 正常、やせている、太っている、それぞれ正しく戻り値が返るかどうかを見て、それぞれ2点ずつ加点。
  • ただし、そこから、以下の場合は2点ずつ減点しました。
    • 関数名の誤り
    • 戻り値の変数が関数内で正しく宣言されていない場合
    • 戻り値の型が正しくなかった場合

講評:

  • (a)の出来は良かったが、(b) で戻り値の型を double と誤った解答が目立った。
  • (c)はあまり出来が良くなかった。result を使わずに記述したり、それで誤った解答も目立った。プログラムをよく読んで欲しい。scanf の戻り値を使う例は一般的なので、慣れて欲しい。
  • (d) 出来は良かったが、m 単位に換算していない解答があった。
  • (e) 出来は良かったが、(b)と整合して戻り値の型を double としている誤答があった。無駄な条件分岐や、論理演算式で頑張っていた解答も少なくなかった。採点では正しく動くものには点を与えたが、解答例を見てより効率よいやり方を学んで欲しい。
Personal tools