Final2021comment

From Prog0

Jump to: navigation, search

Contents

プログラミング入門 2021年度 期末試験結果について

期末試験の問題と解答は問題 解答にて公開しています。

採点結果は期末試験成績で公表されます(採点結果の準備には時間がかかりますので、ファイルが作成されるまでお待ちください)。

期末試験の平均点は 69.97 点。最高点は98点でした。

以上どちらのリンクとも、学内の計算機からアクセスしてください。なお、計算機室リプレース作業のため、コンピュータ演習室5,6は夏休み中は使えない予定です。演習室1 - 4等を利用してください。

期末試験の講評

問題1

採点基準と講評

  • (1)に関してはよくできている学生が大半の印象でしたが、間違いが多い学生も数名見受けられました。復習をよくして欲しいと思います。
  • (2)に関しては、カンマ(,)の抜けや、問題文をよく読んでいないミス(改行ま で出力させる問題で\nが抜けている)が多くありました。
  • (3)は比較的よくできていました。
  • (4)の正答率がとても低かったです。プログラムが上から順番に実行されるこ とを踏まえてcontinueの動きを復習して欲しいと思います。また、全ての問題に 通じることですが、コードをしっかりと読む習慣つけて欲しいと思います。
  • (5)も全体的によくできていた印象です。間違っている学生は、whileの使い方 を復習して欲しいと思います。また、不等号の記述において数学的な書き方をし ている学生が多く、その場合は不正解扱いとさせていただきました。

全体的な採点基準として、コンパイルエラーが起こるものは不正解扱いとして採点させていただきました。

問題2

採点基準

  • (1)の別解 n%6==0
  • (2)の別解 n%6==2 || n%6==4
  • caseのコロンがない場合は不正解

講評

  • 出来は悪くはなかったが、caseやdefaultのコロン忘れで全てを失っている答案があった。(3)(8)でスペルミスで落としている例もあった。swich, defoult など

問題3

採点基準

  • (1) 1行ごとに1点の部分点。
  • (2) [4]は"<=", [5]は">="も正解。

講評

  • (1)は2行目以降の出来が良くなくて、完答が少なかった。
  • (2)は出来は良かったが[2]で0という答案が目立った。

問題4

講評

  • (1)の出来が意外と良くなかった。ベン図(集合)の理解が心配です。
  • (2)の出来が良かったが、&&と||を逆に覚えているらしき答案がありました。復 習してください。

問題5

採点基準と講評

  • (1)
    • [6]は無限ループですが、r!=0と条件を書いている人が多かった。
    • [8]はbreakではなく、continueにしている人が複数人いた。
  • (2)
    • gcd=21のみの記入が多かった。
    • 採点基準として、1行1点、余分な文や間違っている文があったら-1点ずつ減点。

問題6

採点基準と講評

  • (a)
    • cの配列の宣言ができなかった人が多かった。例としてc=i+jみたいな式を書い ている人が何人かいた。
    • a,b,cを大文字で宣言している人が何人かいた。
    • a = A[P,Q]みたいな表現をしている人が何人かいた。
    • 配列の要素数のP,Q,Rを間違えている人が多かった。
  • (b)
    • j,kのループの上限でR,Qを間違えている人が何人かいた。
    • Q-1で式に引っ張られている人が多く、そのせいで間違えた人が何人かいた。
    • cの加算がうまくできない人が多かった。(+=みたいな処理ができなかった。)
    • cの初期化をできている人が1割ほどだった。以下のいくつかの解答例を参照し てください。

ハンドアウトに記載している正解例。

 for(i = 0; i < P; i++){
   for(j = 0; j < R; j++){
     c[i][j] = 0;
     for(k = 0; k < Q; k++){
       c[i][j] += a[i][k] * b[k][j];
     }
   }
 }

他に、以下のような場合も正解になります。

/* 変数kのループをk = 1からにする場合 */
 for(i = 0; i < P; i++){
   for(j = 0; j < R; j++){
     c[i][j] = a[i][0] * b[0][j];
     for(k = 1; k < Q; k++){
       c[i][j] += a[i][k] * b[k][j];
     }
   }
 }
/* k = 0の場合を別途処理する場合 */
  for(i = 0; i < P; i++){
   for(j = 0; j < R; j++){
     for(k = 0; k < Q; k++){
       if(k == 0) c[i][j] = 0;
       c[i][j] += a[i][k] * b[k][j];
     }
   }
 }
/* 初期化のループを事前に行う場合 */
 for(i = 0; i < P; i++)
   for(j = 0; j < R; j++)
     c[i][j] = 0;
 for(i = 0; i < P; i++){
   for(j = 0; j < R; j++){
     for(k = 0; k < Q; k++){
       c[i][j] += a[i][k] * b[k][j];
     }
   }
 }

問題7

採点基準と講評

  • countの初期化忘れが目立ちました。
  • forループの条件文で初期値をi=0で始める人が何人か見受けられました。
  • 同じくforループの条件文で終端の設定が曖昧な方、文法のずれ等が見 られました。しっかりと問題文を読んで理解することが大事だと思います。

問題8

採点基準と講評

  • 条件式の範囲による間違いが多かったです(とくにj側)。
  • 不等号を≦で書いているものは減点しました。
  • 配列の添え字を正しく対応できてないものは減点しました。

講評

  • (1)は2行目以降の出来が良くなくて、完答が少なかった。
  • (2)は出来は良かったが[2]で0という答案が目立った。
Personal tools