平成22年春期試験午後問題 問9

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問9 ソフトウェア開発(C)

次のCプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕
 関数 printout_text は,ファイルから英文テキストを読み込んで,単語が行末の改行で切れないように整形して出力するプログラムである。
  • 関数 printout_text の引数は,次のとおりである。ここで,ファイル名に誤りはないものとする。
     filename  英文テキストが格納されているファイル名
  • 英文テキストに含まれる文字は,次のものである。
    1. 英字 A~Z,a~z
    2. 数字 0~9
    3. 記号 ! " # % & ' ( ) * + , - . / : ; < = > ? [ ] ^ _ { | } ~
    4. 空白文字
    5. 改行文字
  • 出力する1行の最大文字数(改行文字を含まない)は80文字である。
  • 単語は空白文字及び改行文字を含まない文字列であり,1文字以上の連続する空白文字又は改行文字で区切られている。
  • 空白文字及び改行文字はそのまま出力する。
  • 単語の途中で1行の最大文字数を超える場合は,その単語が次の行の先頭になるように出力する。
  • 単語の長さは,1行の最大文字数を超えない。
  • プログラム中で使われる変数 cpos は出力用行バッファ linebuf に次の文字を格納する位置を,変数 gapp は linebuf に最後に格納した空白文字の位置をもつ。変数 cpos,gapp の例を,図1に示す。
    pm09_1.png
pm09_2.png

設問1

プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
  • cpos < COLUMNS
  • cpos <= COLUMNS
  • cpos > COLUMNS
  • cpos >= COLUMNS
  • gapp < COLUMNS
  • gapp <= COLUMNS
  • gapp > COLUMNS
  • gapp >= COLUMNS
b に関する解答群
  • gapp = -1
  • gapp = cpos
  • gapp = COLUMNS
  • gapp++
  • gapp--
c に関する解答群
  • linebuf[cpos]
  • linebuf[cpos++]
  • linebuf[gapp]
  • linebuf[gapp++]
  • linebuf[++cpos]
  • linebuf[++gapp]
d に関する解答群
  • i = -1
  • i = cpos
  • i = COLUMNS
  • i++
  • i--
解答選択欄
  • a:
  • b:
  • c:
  • d:
  • a=
  • b=
  • c=
  • d=

解説

この設問の解説はまだありません。

設問2

次の記述中の に入れる正しい答えを,解答群の中から選べ。

入力した英文テキスト(以下,入力英文テキストという)中に複数回出現する単語をキーワードという。最初の出現場所でキーワードとする単語と参照番号を定義し,それ以降の出現場所では参照番号で参照するように入力英文テキストの様式を変更した。入力英文テキストを整形して出力するときには,参照番号で示されているキーワードは,本来の文字列に戻して出力するようにプログラムを変更する。ここで,プログラム中のabには,正しい答えが入っているものとする。
  • 入力英文テキスト中でのキーワードの表現様式は図2のとおりである。
     なお,キーワードの長さは20文字以下であり,キーワードの個数は50以下である。また,入力英文テキストに含まれる文字として文字"\"を追加する。追加された文字"\"は,キーワードの定義及び参照以外に使われることはない。
    pm09_3.png
  • 入力英文テキストを,次の規則で,出力する英文テキスト(以下,出力英文テキストという)に変換しながら,キーワードを含め単語が行末の改行で切れないように整形して出力する。
    1. キーワードと参照番号を定義している部分については,定義しているキーワードだけを 出力英文テキストに残す。変換例を図3に示す。
      pm09_4.png
    2. キーワードを参照している部分については,参照番号に対応するキーワ ードで置き換える。変換例を図4に示す。
      pm09_5.png
    3. その他の部分は,〔プログラムの説明〕の(1)~(8)に従う。
  • キーワード処理に対応するために,プログラムを表のとおりに変更する。
    pm09_6.png
    〔プログラムの追加部分〕で使用している関数 strlen の仕様は次のとおりである。
     unsigned int strlen(const char *s)
    機能:
    文字列sの長さを求める。
    返却値:
    終端を示すナル文字に先行する文字の個数。
pm09_7.png
e に関する解答群
  • ch2
  • ch2 - '0'
  • i + ch2
  • i + ch2 - '0'
  • i * 10 + ch2
  • i * 10 + ch2 - '0'
f に関する解答群
  • ch1 == 'D'
  • ch1 == 'R'
  • ch1 == '\\'
  • i == 0
  • i != 0
g に関する解答群
  • cpos >= COLUMNS
  • cpos + j >= COLUMNS
  • cpos + j - 1 >= COLUMNS
  • gapp >= COLUMNS
  • gapp + j - 1 >= COLUMNS
解答選択欄
  • e:
  • f:
  • g:
  • e=
  • f=
  • g=

解説

この設問の解説はまだありません。

Pagetop