平成19年 秋期 基本情報技術者 午後 問06
問06 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 引数の配列 in に格納された8文字×6文字の文字パターンを,引数 invtype の値 (1〜4)に従って,回転又は反転して標準出力に出力する関数 invert である。 (1) 引数 invtype の値と文字パターンの回転又は反転種別の関係は,表のとおりである。
図 文字パターンの印字例 (3) 回転及び反転操作の手順を,8行6列の配列 dat[8][6] を例として説明する。 90 度回転では,回転後は行と列の数が入れ替わることになる。 90 度右回転の場合には,次に示すように先頭の行データ群は,右端の列データ 群に移る。次の行データ群が右から二つ目の列に移り,同様の手順で移動が進み, 最後に最下段の行データ群が左端の列データ群に移る。
先頭行: dat[0][0], dat[0][1], … , dat[0][4], dat[0][5] 90 度左回転の場合には,先頭の行データ群は,左端の列データ群 dat[5][0], dat[4][0], …, dat[1][0], dat[0][0] に移る。次の行データ群が左から二つ目の 列に移り,同様の手順で移動が進み,最後に最下段の行データ群が右端の列データ群に移る。 上下反転では,先頭の行データ群は,最下段の行データ群 dat[7][0], dat[7][1], …, dat[7][41, dat[7][5] に移る。次の行データ群が下から二つ目の行に移り, 同様の手順で移動が進み,最後に最下段の行データ群が先頭の行データ群に移る。 左右反転では,行内で入れ替わるので,先頭の行データ群は,dat[0][5], dat[0][4], …, dat[0][1], dat[0][0] に移る。以降の行データ群も同様の 手順で行内で順序が入れ替わる。 〔プログラム〕 #include <stdio.h> #define RSZ 6 #define CSZ 8 void invert(int, char[][]); void invert(int invtype, char in[CSZ][RSZ]){ int row = RSZ, col = CSZ; int i, j; if( ){ /* 行数と列数の入替え */ row = CSZ; col = RSZ; } for(i = 0; i < col; i++){ for(j = 0; j < row; j++){ switch(invtype){ case 1: /* 90度右回転 */ printf("%c", in[CSZ - j - 1][i]); break; case 2: /* 90度左回転 */ printf("%c", ); break; case 3: /* 上下反転 */ printf("%c", in[CSZ - i - 1][j]); break; case 4: /* 左右反転 */ printf("%c", ); break; default: break; } } printf("\n"); } } void main(){ char src[CSZ][RSZ] = {{'#','#','#','#','#','#'}, {'#',' ',' ',' ',' ',' '}, {'#',' ',' ',' ',' ',' '}, {'#',' ',' ',' ',' ',' '}, {'#','#','#',' ',' ',' '}, {'#',' ',' ',' ',' ',' '}, {'#',' ',' ',' ',' ',' '}, {'#',' ',' ',' ',' ',' '}}; invert(1, src); invert(2, src); invert(3, src); invert(4, src); }設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。 a に関する解答群 イ invtype == 2 ウ invtype == 3 エ invtype == 4 オ (invtype == 1) || (invtype == 2) 力 (invtype == 3) || (invtype == 4) b,c に関する解答群 イ in[RSZ - j - 1][i] ウ in[i][CSZ - j - 1] エ in[i][RSZ - j - 1] オ in[j][CSZ - i - 1] 力 in[j][RSZ - i - 1]
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||