![]()
平成14年 春期 基本情報技術者 午後 問10
問10 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 マクロ機能をもつあるプログラム言語で書かれたプログラムが,元ファイル source_file に格納されている。 この source_file 中のマクロ名を展開し,展開ファイル dest_file を生成する。
(1) 元ファイルには,マクロ定義とマクロ名を使用するプログラムのコードが格納されている。 (2) 展開ファイルには,マクロ名を展開したプログラムのコードを出力する。 ただし,元ファイルのマクロ定義は,出力しない。 (3) マクロ定義は,次の形式とする。 $STRDEF マクロ名 展開コード $STRDEF は,必ず1けた目から始まり,$STRDEF とマクロ名の間, 及びマクロ名と展開コードの間は,一つの空白文字で区切られる。 (4) 一つのマクロ名に対するマクロ定義は,1回だけ行うことができる。 (5) 元ファイル中で,マクロ定義以降のコードに対して, 区切り文字で区切られたマクロ名の部分を展開コードに置換する。 ただし,マクロ定義の行は,置換の対象とはしない。 (6) 区切り文字は,次の @ 〜 B であり,文字型の配列 delmchar に格納されている。 @ 空白文字 A 図形文字 !"#%&'()*+,-./:;<=>?[\]^_{|}~ B 改行文字 char delmchar[] = " !\"#%&'()*+,-./:;<=>?[\\]^_{|}~\n"; 注 delmchar の先頭の要素には,空白文字が格納されている。 (7) マクロ名及び展開コードは,区切り文字を含まない。 (8) 元ファイル中に現れるマクロ定義の個数は,20 までとする。 (9) マクロ名及び展開コードは,31 文字までとする。 (10) 展開の前も後も,各行は改行文字で終わり,文字数は 255 文字までとする。 (11) プログラム中で使用している関数 strchr の仕様は,次のとおりである。 char *strchr(const char *s, int c) 機能: s で指定される文字列の中の c(char 型に変換する。)の最初の出現を捜す。 文字列の終端を示すナル文字は,文字列の一部とみなす。 返却値:捜し出した文字へのポインタを返す。 文字列の中に,その文字が現れない場合,空ポインタ( NULL )を返す。 (12) このプログラムの実行例は,次のとおりである。
実行例 〔プログラム〕 #include <stdio.h> #include <string.h> #define MCRDEF 20 #define STRLNG 32 #define LINLNG 256 int divide_line(); char linbuf[LINLNG], token[LINLNG][LINLNG], delm[LINLNG]; char label[] = "$STRDEF"; char delmchar[] = " !\"#%&'()*+,-./:;<=>?[\\]^_{|}~\n"; main() { FILE *sfp, *dfp; int mcrcnt = 0, tokcnt, flg, idx1, idx2; char orig[MCRDEF][STRLNG], expand[MCRDEF][STRLNG]; sfp = fopen("source_file", "r"); dfp = fopen("dest_file", "w"); while(fgets(linbuf, LINLNG, sfp) != NULL) { tokcnt = divide_line(); if(strcmp(token[0], label) == 0) { strcpy(orig[mcrcnt], token[1]); strcpy(expand[mcrcnt], token[2]); 設問
プログラム中の
a に関する解答群 ア idx1 = 0 イ idx1++ ウ idx2 = 0 エ idx2++ オ mcrcnt = 0 カ mcrcnt++ キ tokcnt = 0 ク tokcnt++ b に関する解答群 ア idx2 イ idx2++ ウ mcrcnt エ mcrcnt++ オ tokcnt カ tokcnt++ c に関する解答群 ア flg = 0 イ flg == 0 ウ flg = 1 エ flg == 1 オ idx2 = 0 カ idx2 > 0 キ idx2 < mcrcnt ク idx2 = mcrcnt d,e に関する解答群 ア '\0' イ '\n' ウ delm[lidx] エ delm[tidx] オ linbuf[lidx] カ linbuf[tidx] キ token[lidx] ク token[tidx] f に関する解答群 ア lidx = 0 イ lidx++ ウ tidx = 0 エ tidx++ オ tokcnt = 0 カ tokcnt++
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||