平成18年 秋期 基本情報技術者 午後 問06
問06 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕 プログラムが生成した各けたの数字が異なる4けたの目標数を, なるべく少ない回数の推測で当てるゲーム GuessNumber である。 回答者は,各けたが異なる4けたの推測数を入力し,当たらなかった場合,次の情報を得ることができる。 @ 目標数に含まれていて,けたも一致している数字の個数(以下,Hit 数という) A 目標数に含まれているが,けたが一致していない数字の個数(以下,Blow 数という) (1) 目標数はプログラムが自動的に生成する。生成した数字列は char 型の配列 target に格納される。 推測数を文字列として標準入力から読み込み,char 型の配列 num に格納したうえで照合する。 目標数と完全に一致するまで繰り返す。 (2) 次の関数が用意されている。 void createRandomNumber(char[] target) 機能: 4けたの目標数を文字列として左のけたから順に配列 target に格納する。 各けたの数字はすべて異なっている。 int isValidNumber(char[] num) 機能:文字列 num 中の各文字がすべて異なる数字のとき TRUE を,それ以外のとき FALSE を返す。
〔プログラム〕 #include <stdio.h> #define DIGITS 4 /* けた数 */ #define TRUE 1 #define FALSE 0 void createRandomNumber(char[]); int isValidNumber(char[]); void GuessNumber(); int isMatch(char[], char[]); void GuessNumber(){ char target[DIGITS + 1]; /* 目標数の保存領域 */ char num[DIGITS + 1]; /* 推測数の保存領域 */ int count = 0; /* 推測回数 */ createRandomNumber(target); /* 目標数の生成 */ do{ printf("[%d回目] 各けたが異なる%dけたの数を入力してください:", ++count, DIGITS); scanf("%4s", num); while(){ printf("入力が正しくありません。再度入力してください:"); scanf("%4s", num); } }while(); } int isMatch(char target[], char num[]){ int i, j, numHit = 0, numBlow = 0; for(i = 0; i < DIGITS; i++){ for(j = 0; j < DIGITS; j++){ if(){ if(){ numHit++; } else { numBlow++; } } } } if(){ printf("正解です。\n"); return TRUE; } printf("%sは%dHit,%dBlowです。\n\n", num, numHit, numBlow); return FALSE; } 設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a,b に関する解答群 ア isMatch(target, num) == FALSE イ isMatch(target, num) == TRUE ウ isValidNumber(num) == FALSE エ isValidNumber(num) == TRUE c に関する解答群 ア num[i] == num[j] イ target[i] == num[i] ウ target[i] == num[j] エ target[i] == target[j] オ target[j] == num[j] d に関する解答群 ア i != j イ i < j ウ i <= j エ i == j オ i > j カ i >= j e に関する解答群 ア numHit != DIGITS イ numHit + numBlow == DIGITS ウ numHit + numBlow >= DIGITS エ numHit == DIGITS オ numHit == numBlow カ numHit > numBlow
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|