![]()
平成17年 春期 基本情報技術者 午後 問06
問06 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕 関数 print_string は,欧文ピッチ処理(文字固有の字幅に従って字送りする)を 行って印刷するとき,単語の途中で改行されないように英文を出力するプログラムである。 (1) 関数 print_string の引数は,次のとおりである。 line_w 1行の行幅(ポイント数) str_list 出力する英文を構成する単語の配列 (最後の要素には,NULL が格納されている) char_list 出力する単語を構成する文字とその文字幅(ポイント数)の リスト(構造体 CHARPROF の配列) space_w 空白文字の文字幅(ポイント数) (2) 文字幅は,文字ごとに次に示す構造体 CHARPROF で定義される。 typedef struct { char char_p; /* 文字 */ int char_w; /* 文字幅(ポイント数) */ } CHARPROF; (3) 単語幅は,単語を構成する各文字の文字幅の和である。 単語幅を求めるために,関数 word_width を用いる。 (4) 単語を出力しようとしたときに,1行の行幅を超える場合は, その単語が次の行の先頭になるように出力する。 ただし,どの単語幅も行幅を超えることはない。 (5) 単語は,空白を含まない文字列である。 単語と単語の間には,1文字の空白文字を出力する。 ただし,行の最後に出力する単語の後には,空白文字は出力しない。
〔プログラム〕 #include <stdio.h> typedef struct { char char_p; /* 文字 */ int char_w; /* 文字幅(ポイント数) */ } CHARPROF; void print_string(int, char *[], CHARPROF *, int); int word_width(char *, CHARPROF *); void print_string(int line_w, char *str_list[], CHARPROF *char_list, int space_w) { int cur_w = 0, str_w, idx; for (idx = 0;
設問 プログラム中の
a に関する解答群 ア idx <= line_w イ idx < line_w ウ idx + 1 < line_w エ str_list[idx] != NULL オ str_list[idx] = NULL カ str_list[idx] == NULL b,c に関する解答群 ア cur_w += space_w イ cur_w += str_w ウ cur_w = 0 エ cur_w = space_w オ cur_w = space_w + str_w カ cur_w = str_w d に関する解答群 ア *str != *char_list[idx].char_p イ *str != char_list[idx].char_p ウ *str == *char_list[idx].char_p エ *str == char_list[idx].char_p オ str != char_list[idx].char_p カ str == char_list[idx].char_p
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|