Final2020comment

From Prog0

Jump to: navigation, search

Contents

期末試験講評・採点基準

問題1

(1) 比較的よくできていましたが、(a)の正答率がやや低かったようです。

(2) 概ねよくできていました。(c)で標準エラー出力が stderr であることを忘れてしまっていた人が多少見受けられました。

(3) (a)は %lf の部分を修正しそびれている人が多少いました。 (b)はやや正答率が低かったです。scanfの戻り値の意味と使い方をもう一度確認しましょう。

(4) フローチャート通りに書けばよい問題でしたが、時折なぜか異なる順番で条件判断と処理を行おうとしている答案がありました。FizzBuzzと出力するのは3と5両方の倍数に該当する場合、とされていますが、これを15の倍数かどうかで条件判断を行なっている人がいました。これはこれで正しく動作しますし、シンプルに記述できるのでよいのですが、仕様通りに愚直にプログラムを書いた方が他人に理解してもらいやすい場合もあります。


問題2

問題2の(1)

  • case文ではひとつの定数だけが使えます。式を書いたり、複数の定数を列挙するのは文法誤りです。
  • defaultのスペルミスや似た単語による誤答が多く見られました。

問題2の(2)

  • 最初の出力を「i = 0」とする誤答が多くありました。forループの終了条件について復習をしてください。

問題2の(3)

  • (b)の条件の誤答が多くありました。元のforループはcontinueを使用していますので、正解は元の条件文の否定となります。


問題3

(1) 出来ている人も多かったですが、ifの条件式に「これまで調べた中の最小値」を使う事が分かっていない誤答も多くありました。 なお、min の代わりに A[m][n] でもOKです。

(2) 出来が悪かったです。90度回転させると、画像の幅と高さが入れ替わりますので(a)(b)はそれぞれ y と x です。 (c)には出力の行数(新画像の高さ=元画像の幅)(d)には出力の列数(新画像の幅=元画像の高さ)が入ることに注意してください。

演習問題を解くときに、色々試してみてたまたまうまく行ったプログラムを提出する、というやり方をしていると試験問題は解けませんので、どのような順番で配列の添字が動くのか、きちんと理解しましょう。


問題4

大部分の人はかなり良く出来ていました。

(1)配列の初期化において{}(中括弧)以外の括弧を用いた誤答が多くありました。

(3)p[4]={0,0,0,0}のような書き方で配列の初期化をしている受講者が多くいました。 配列宣言時には型を付け加えてこのような書き方ができますが、この問題ではもうすでに宣言されている配列のためループ変数を用いて配列の初期化を行いましょう。

(4) コメントで無限ループと書かれていますが、無限ループを使用していない人が数人見られました。 また、whileのスペルミス(white, whichなど)による誤答がありました。 forループでも無限ループはできますが、基本的にはwhile(1)を使用しましょう。

(5)比較的よく出来ていましたが、条件文の==が=になっていたり、そもそも条件式になっていない人がいました。

問題5

採点基準:
(1)

  • define : MAX のように書いてある場合 -2点
  • セミコロンがついている場合-1点
  • define MAX (300)はOK

(2)

  • for文の条件式において微小なミス(i = 1、i <= noなど)は-2点
  • scanfで余分な%dがある場合は-2点
  • for文のi、jの書き間違いは-1点

(3)

  • 四捨五入をするための+0.5等の処理が無い/機能しない場合は0点
  • round関数の利用は、#include<math.h>が無いので0点

(4)

  • 条件式が片方合っている場合は2点

講評:
(1)、(2)、(4)は出来が良かったが、(3)の四捨五入の実装ができていない回答が目立った。 (1)において、マクロに変数のように代入の処理を書いている人が見られた。 手がつけられていない回答も目立った。


問題6

採点基準: (1)

  • ((-1)^n) / (2n-1) は2点

(2) a)

  • pi_4 += lieb(引数) 引数違いなど動かないものは0点

b)

  • 符号判定を逆にしている -1点
  • ロジック == 0 =が一個の場合 -1点
  • 計算式のかっこなし -2点
  • 仮引数、引数のミス -1点
  • キャストしてない -1点
  • 累乗( pow() )のような、通常使えない関数を使っている ×
  • -aのような数式のミス -1

講評:

  • n=0からなので、式の形が間違っていると、その後の関数記述も間違えてしまう。正負符号が反対なものは減点した。
  • 関数leib()の書き方については、さまざまなバリエーションがあったが、正しく動作するものは、解答例によらず正解の方向とした。
Personal tools