HOME >  プログラマ向け課題参考例

プログラマ向け課題参考例

筆記試験を受けて頂く場合の例題として、以下に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 の入力に対する出力)