#include #include #include #define TRY_MAX 5 #define NUM_MAX 500 /* * <解法> * 回答回数の上限を定義する`TRY_MAX`と数の上限を定義する`NUM_MAX`をdefineを用いて定義することで容易に変更しやすくしている。 * 新たに`cnt`変数を用意することで回答回数を保存し、プレイヤーに質問する箇所で残りの回答回数を表示している。 * 回答ループの条件式に`cnt`を用いた式を追加することで、回答が一致した場合ないしは回答回数が上限突破したときにループを抜けるようにしている。 * ループ後の処理は、どちらが要因でループを抜けたかを判断するために条件式で分岐させている。 * ゲームオーバーの場合は答えを表示し終了する。 */ int main(void) { srand((unsigned int)time(NULL)); int ans = rand() % NUM_MAX; int cnt = 0; int res; printf("0~%dの整数を当てよう!!\n\n", NUM_MAX - 1); do { printf("いくつかな?(残り回数%d):", TRY_MAX - cnt); scanf("%d", &res); cnt++; if (res > ans) printf("もっと小さいです!\n"); if (res < ans) printf("もっと大きいです!\n"); } while (res != ans && cnt < TRY_MAX); if (cnt >= TRY_MAX) { printf("ゲームオーバー!\n答えは%dです!", ans); } else { printf("正解です!\n"); } return 0; }