[更新日]1998.05.15
問11 次の C プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕
ゲームの結果を格納した文字列から得点を計算し,返却値として返す プログラムである。
(1) ゲームは,複数のラウンドから成り,各ラウンドの結果は,次に示す 文字で表される。 0 1 2 3 4 5 6 7 8 9 + -
(2) 文字の並び順には,次の規則がある。
(3) 文字列 mark には,第 1 ラウンドから最終ラウンドまでの結果が 順番に格納されている。mark に格納されている文字列は,(2)の規則に 従っているものとする。
〔プログラム〕 int CalcScore(char mark[]) { static char markCT[] = "0123456789+-"; int i = 0, score = 0, s0, s1, s2; while(mark[i] != ’\0’) { for (s0 = 0; mark[i] != markCT[s0]; s0++); if (s0 <= 9) { score += s0; } else if (s0 == 10) { for (s1 = 0; mark[i + 1] != markCT[s1]; s1++); score += 10 + s1; } else { for (s2 = 0; mark[i - 1] != markCT[s2]; s2++); score += 10 + s2; } i++; } return score; }
設問 ゲームの得点の計算方法に関する次の記述中の に入れる正しい答えを, 解答群の中から選べ。
(1) ゲームの得点は,各ラウンドの得点を合計したものである。
(2) 各ラウンドの得点は次のようにして求めている。
文字が“0”,“1”,…,“9”のとき,得点は である。
文字が“+”のとき, をの規則に従って数値化し, 値が得点である。
文字が“−”のとき, をの規則に従って数値化し, 値が得点である。
(3) 文字列が“1+2−3 5”のとき,ゲームの得点は 41 である。
a に関する解答群
ア −10
イ −1
ウ 0
エ 1
オ 10
カ それぞれ −1 ,−2 ,…,−10
キ それぞれ 0 ,−1 ,…,−9
ク それぞれ 0 ,1 ,…,9
ケ それぞれ 1 ,2 ,…,10
b,d に関する解答群
c に関する解答群
e に関する解答群
ア 0 イ 1 ウ 2 エ 3 オ 4
カ 5 キ 6 ク 7 ケ 8 コ 9