基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成20年 秋期 基本情報技術者 午後 問02
問02   文字列を整形して出力する副プログラム

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

〔プログラムの説明〕

 文字型の1次元配列 Str に格納されている文字列を,整形して出力する副プログラム PrintOut である。

(1) 文字列は,英数字,記号及び改行文字で構成される。

(2) 文字列は,文字型の1次元配列の各要素に1文字ずつ格納され,文字列の最後の 要素の次の要素には,システム定数 EOS が格納されている。

(3) PrintOut の仕様は,次のとおりである。出力結果の例を図に,引数の仕様を表1に示す。

@ 指定した文字数(引数 Margin )だけ,左側に余白を設ける。

A 指定した1行の最大文字数(引数 MaxC)で改行する。

B 指定した1ぺージの最大行数(引数 MaxL)で改ページする。

        図 出力結果の例

(4) PrintOut は,次の副プログラム及びシステム関数を用いる。各副プログラム及び システム関数の引数の仕様を表2〜4に示す。

@ 副プログラム GetPosition :文字列の指定した位置から行末となる文字位置を探索し, その位置を引数 EndP に返す。行末の条件は,EOS が見つかったとき, 改行文字が見つかったとき,又は MaxC+1 文字に達したときのいずれかである。

A 副プログラム PutLine:指定された文字列を出力し,最後に改行を行う。

B システム関数 PutChr:指定された1文字を出力する。PutChr(NL) で印字位置は 次の行の左端に移動し,PutChr(FF) で印字位置は次ページの左上端に移動する。 ここで,NL は改行文字を,FF は改ページ文字を表すシステム定数である。

(5) 配列の添字は0から始まる。

      表1 PrintOut の引数の仕様

 引数  データ型  入力/出力    意味 
 Str[ ]  文字型   入力    整形対象の文字列を格納した1次元配列 
 Margin  整数型  入力   左側の余白の文字数
 Margin≧0, 1 ≦ (Margin+MaxC) ≦ 100  
 MaxC  整数型  入力   1行に出力する最大文字数
  MaxC≧1,1≦ (Margin+MaxC) ≦ 100  
 MaxL  整数型  入力   1ページに出力する最大行数
  MaxL≧1  

      表2 GetPosition の引数の仕様

 引数  データ型  入力/出力    意味  
 Str[ ]  文字型  入力   整形対象の文字列を格納した1次元配列
 StartP  整数型  入力   探索の開始位置
 MaxC  整数型  入力   1行に出力する最大文字数
 EndP  整数型  出力   探索の結果,得られた行末位置

      表3 PutLine の引数の仕様

 引数  データ型  入力/出力    意味
Line[ ]  文字型  入力   出力対象の文字列を格納した1次元配列

      表4 PutChr の引数の仕様

 引数  データ型  入力/出力    意味
 Chr  文字型  入力   出力対象の1文字              

〔プログラム〕

設問  プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア CurrentP: 0, CurrentP < MaxC, 1

イ CurrentP: 0, StartP < EndP, 1

ウ CurrentP: Margin, CurrentP < MaxC, 1

エ CurrentP: Margin, StartP < EndP, 1

b に関する解答群

ア Str[StartP〕= EOS    イ Str[StartP] = NL

ウ Str[StartP] ≠ EOS    エ Str[StartP] ≠ NL

c に関する解答群

ア EndP < (StartP + MaxC)   イ EndP < MaxC

ウ StartP < (EndP + MaxC)    エ StartP < MaxC

d に関する解答群

ア CurrentP: 0, Line[CurrentP] = EOS , 1

イ CurrentP: 0, Line[CurrentP] = NL, 1

ウ CurrentP: 0, Line[CurrentP] ≠ EOS , 1

エ CurrentP: 0, Line[CurrentP] ≠ NL, 1

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp |  プライバシーポリシー・著作権・リンクお問合わせ