プログラマ向け課題参考例
筆記試験を受けて頂く場合の例題として、以下に3つのプログラム問題をご紹介します。
問1,2は穴埋め問題、問3はプログラムを作成する問題です。
ちなみに、参考回答時間は、次のとおりです。
問1・2の合計 : 1時間
問3 : 1時間(参考書、ネット等を見ずに回答した場合)
【問1】
●10進数を16進数に変換するプログラム
下記の①~⑤を埋めて、"7891"の10進数文字列を16進数文字列に変換するプログラム
を完成させてください。
/* 10進文字列をunsigned int型の数値に変換する関数 */
unsigned int DecStr2UInt(char *DecStr)
{
int n, kurai;
unsigned int result;
result = 0;
kurai = 1;
/* 文字列を最下位桁から数値に変換していく */
for (n = strlen(DecStr); n > 0; n--) {
result += (DecStr[①] - '0') * kurai;
kurai *= ②;
}
return result;
}
/* unsigned int型の数値を16進文字列に変換する関数 */
void UInt2HexStr(unsigned int srcUInt, char *dstHexStr)
{
char HexList[sizeof(unsigned int) * 2];
int n;
/* 10進数を16進の各桁に分解する */
for (n = 0; n < sizeof(unsigned int) * 2; n++) {
HexList[n] = ③;
srcUInt ④ 16;
if (srcUInt == 0) {
break;
}
}
/* 16進数の各桁を文字列に変換する */
for (; n >= 0; n--) {
if (⑤) {
*dstHexStr = '0' + HexList[n];
} else {
*dstHexStr = 'A' + (HexList[n] - 10);
}
dstHexStr++;
}
*dstHexStr = '\0';
}
int main(void)
{
unsigned int num;
char strDec[] = "7891"; /* テストデータ */
char strHex[sizeof(unsigned int) * 2 + 1];
num = DecStr2UInt(strDec);
UInt2HexStr(num, strHex);
printf("10進数:%s\n", strDec);
printf("16進数:%s\n", strHex);
return 0;
}
【問2】
●バブルソートで数を昇順にソートするプログラム
下記の①~⑧を埋めて、テストデータを昇順ソートさせるプログラムを完成させて
ください。
#define ARRAY_NUM (5) /* ソートしたい配列の要素数 */
int main(void)
{
/* ソート対象のデータ */
int TestData[ ARRAY_NUM ] = { 3 , 10 , 5 , 1000, 250 };
int n, m;
int Work;
for ( n = 0; n < ARRAY_NUM - 1; n++ ) {
for ( m = ①; ②; m-- ) {
/* 配列の中身を昇順ソート */
if ( TestData[ ③ ] > TestData[ ④ ] ) {
Work = TestData[ ⑤ ];
TestData[ ⑥ ] = TestData[ ⑦ ];
TestData[ ⑧ ] = Work;
}
}
}
return 0;
}
【問3】
●スロットの数字並びの問題
スロットゲームで、各リールの図柄が1~9、揃えるラインが横一列と、斜めのマルチラインの
リールにおいて、大当たり時の図柄揃いラインと図柄数字を指定した時に、中央横一列に止める
べき図柄を生成するプログラムを作成してください。文字入力の方法がわからない場合は、
文字列をプログラム埋め込みで組んでも構いません。
・入力
各行について、最初の数字がライン(0==中央横ライン、1==上段横ライン、
2==斜め右上(/)ライン)指定、空白を挟んで、1~9の当り数値
・出力
各行について、止めるべき中央横一列の数値
・補足
左リール、中リールは昇順、右リールは降順に1~9の数字が並んでいます
斜め右上(/)ラインで7当りとは以下の並びをいいます
上記の出力は676
・参考入力
0 7
1 5
2 1
・ 参考出力
7 7 7 (0 7 の入力に対する出力)
6 6 4 (1 5 の入力に対する出力)
9 1 9 (2 1 の入力に対する出力)