# **D1149682 電子雞自己猜數字** **分兩種猜法** 第一種從500猜,蹦每次猜中間值 第二種則是從最大最小值中間猜亂數 ``` int auto_guess(int min, int max, int guess_way) { int guess; //-----[猜測方法1: 猜中間值 ]-------------------------------------- if (guess_way == 1) { guess = (min + max) / 2; //-----[猜測方法2: 猜個亂數]-------------------------------------- } else if (guess_way == 2) { guess = rand() % (max + 1 - min) + min; } return guess; } ``` 判斷的地方 分成三種結果 x=1的時候是正確答案 x=2時太低,並把min設為guess+1 x=3太高,並把max設為guess ``` do { i = 0; int guess_way = 1; srand(time(NULL)); // generate random number between 1 and 1000 // 1 is shift, 1000 is scaling factor answer = 1 + rand() % 1000; // printf("answer=%d\n",answer);f // prompt for guess printf("==============================================\n"); printf("I have a number between 1 and 1000.(==%d)\n", answer); printf("請問要用哪種猜法?\n"); printf("1:猜中間值 "); printf("2:猜亂數 ==>"); scanf("%d", &guess_way); printf("Can you guess my number?\n"); printf("Please type your first guess.\n"); // scanf("%d", &guess); min = 1; max = 1000; guess = auto_guess(min, max, guess_way); printf("%d\n", guess); x = isCorrect(guess, answer); //------------------------------------------- while (x != 1) { if (x == 2) { min = guess + 1; max = max; } else if (x == 3) { min = min; max = guess; } guess = auto_guess(min, max, guess_way); i++; printf("%d\n", guess); x = isCorrect(guess, answer); } ``` show出ASCii碼 ``` void show_ascii() { puts("\n \\\n" " (o>\n" " \\_//)\n" " \\_/_)\n" " _|_ "); } ```