平成8年度 春期 第二種 午後 問7〜問10

                        [更新日]1996.06.03
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃次の問7から問10までの4問については、この中から1問を選択し、答案用紙の┃ ┃選択欄の「選」を黒くマークして解答してください。             ┃ ┃ なお、2問以上選択した場合には、はじめの1問について採点します。    ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 問7 次のCプログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 試験の実施結果が格納されている集計ファイル(test-f.dat)がある。集計ファ イルの例を図1に示す。これを読み込み,正答数の集計を行い,結果を出力するプロ グラムである。 ┌────────────────────────────┐ │10000 11111111100011111011011100011111100000000000011101│ │10001 10111011000001001011101111111100001011100000111001│ │10002 00101000101110100001101110011111111000100011111101│ │20003 10111100000100100100011111010000001011100111100110│ │20004 11111100101011100001011110000001110011111111101001│ │ : : │ │ : : │ └────────────────────────────┘ 図1 集計ファイルの例 (1) 問題は,全部で50問ある。 (2) 受験者数は,9999人以下である。 (3) 集計ファイルは,テキストファイルである。 (4) 集計ファイルの各行は,各受験者の個人データを表す。個人データは,5けた の受験番号と試験結果が一つ以上の連続した空白文字で区切られている。試験 結果は,問題番号順に結果が並んだ50文字の文字列で,“1”は正解を,“0”は 誤りを表す。 (5) 集計結果としては,受験者数,平均正答率(%),最高正答数,最低正答数, 各問題ごとの正答者数,正答率(%)を出力する。出力例を図2に示す。 ┌───────────────────────┐ │ 試験集計レポート │ │受験者数 : 1382 平均正答率: 75.20% │ │最高正答数: 48 最低正答数: 5 │ │ │ │問題〔 1〕 正答者数: 1240 正答率: 89.72% │ │問題〔 2〕 正答者数: 138 正答率: 9.98% │ │問題〔 3〕 正答者数: 985 正答率: 71.27% │ │ : │ │ : │ │問題〔48〕 正答者数: 548 正答率: 39.65% │ │問題〔49〕 正答者数: 1167 正答率: 84.44% │ │問題〔50〕 正答者数: 835 正答率: 61.30% │ └───────────────────────┘ 図2 集計結果の出力例 〔プログラム〕 #include <stdio.h> #include <stdlib.h> #define QNUM 50 main() { FILE *fp; char cbuf[QNUM + 1]; int total = 0,maxp = 0,minp = QNUM, cpnt,p,good[QNUM]; long tpnt = 0,no; double avep,tavep; for(p = 0;p < QNUM; p++) [ a ] = 0; fp = fopen("test-f.dat","r"); while(fscanf(fp,"%ld%s",[ b ])!= EOF){ total++; [ c ]; for(p = 0; p < QNUM; p++) if ([ d ]){ cpnt++; good[p]++; } if(cpnt > maxp) maxp = cpnt; if(cpnt < minp) minp = cpnt; tpnt += cpnt; } fclose(fp); avep =(double)tpnt / QNUM * 100.0 / total; printf(" 試験集計レポート\n\n" "受験者数:%4d 平均正答率:%6.2f %%\n" "最高正答数:%2d 最低正答数:%2d\n\n", total,avep,maxp,minp); for(p = 0; p < QNUM; p++){ tavep =[ e ] / total; printf("問題[%2d] 正答者数:%4d 正答率:%6.2f %%\n", p + 1, good[p], tavep); } } 設問 プログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。 aに関する解答群 ア good[p] イ good[++p] ウ good[p++] エ good[p + 1] bに関する解答群 ア no,cbuf イ &no,cbuf ウ no,&cbuf エ *no,cbuf オ no,*cbuf cに関する解答群 ア total =0 イ maxp = 0 ウ minp = 0 エ cpnt = 0 オ no = 0 dに関する解答群 ア cbuf[p]== 0 イ cbuf[p]== '0' ウ cbuf[p]== "0” エ cbuf[p]== 1 オ cbuf[p]== '1' カ cbuf[p]== "1" eに関する解答群 ア (double)good[p] イ (double)good[p]* QNUM ウ good[p]* 100.0 エ (double)good[p]/ QNUM オ good[p]/ 100.0
戻る 次頁:問8