---
# System prepended metadata

title: 小專題1

---

# 小專題1
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void guessGame(void); // function prototype
int isCorrect(int, int); // function prototype

int main(void)
{
   // srand( time( 0 ) ); // seed random number generator
   guessGame();
} // end main

// guessGame generates numbers between 1 and 1000
// and checks pc's guess
**void guessGame(void)
{
   int answer; // randomly generated number
   int pcguess; // pc's guess
   int response = 1; // 1 or 2 response to continue game
   int frequency; //record guess frequency;

      // generate random number between 1 and 1000
      // 1 is shift, 1000 is scaling factor
   answer = 1 + rand() % 1000;
   pcguess = 1 + rand() % 1000;
      


      // loop until correct number
   while (1) { 
      int max = 1000,min = 1;
      if(isCorrect(pcguess, answer) == 3){
         break;
      }
      if(isCorrect(pcguess, answer) == 2){
         max = pcguess ;
         pcguess = min + rand() % max;
         frequency ++;
      }
      if(isCorrect(pcguess, answer) == 1){
         min = pcguess ;
         pcguess = min + rand() % max;
         frequency ++;
      }
   }
   printf("88          88                                      \n");
   printf("88          ""                                      \n");
   printf("88                                                  \n");
   printf("88,dPPYba,  88 8b,dPPYba,   ,adPPYb,d8  ,adPPYba,   \n");
   printf("88P'    '8a 88 88P'   `'8a a8'    `Y88 a8'     '8a  \n");
   printf("88       d8 88 88       88 8b       88 8b       d8  \n");
   printf("88b,   ,a8' 88 88       88 '8a,   ,d88 '8a,   ,a8'  \n");
   printf("8Y'Ybbd8''  88 88       88  `'YbbdP'Y8  `'YbbdP''   \n");
   printf("                            aa,    ,88              \n");
   printf("                             'Y8bbdP'               \n");
   printf("guess %d times",frequency);
   
} // end function guessGame**

// isCorrect returns 3 if g equals a
// if g does not equal a, displays hint
int isCorrect(int g, int a)
{
   printf("%d\n",g);
   // guess is correct
   if (g == a){
      return 3;
   }

   // guess is incorrect; display hint
   else if (g < a)
   {
      printf( "%s", "Too low. Try again.\n " );
      return 1;
   }
   else
   {
      printf( "%s", "Too high. Try again.\n " );
      return 2;
   }
   return 0;
}
```
實作的方法是二分法
首先讓電腦生成亂數用來當作答案變數命名為answer

生成一個亂數當作答案變數命名為pcguess

設定一個變數為猜測的次數

寫一個函式用來判斷pcguess是否正確
並且給電腦指示往上猜還是往下

寫一個函式用來執行猜測
猜測方法是二分法
首先設定二分法的最大與最小值
接著使用while迴圈來執行猜測

使用if來判斷猜測(判斷式可以用剛剛寫的函式)
正確的值是3就break掉迴圈

不是的話繼續執行下個if
如果猜測的值等於2讓最大值等於pcguess
接下來讓pcguess重新生成最小到之前pcguess的值
然後猜測次數增加

不是的話繼續執行下個if
如果猜測的值等於1讓最小值等於pcguess
接下來讓pcguess重新生成最大到之前pcguess的值
然後猜測次數增加

跳出迴圈後印出bingo的ASCII CODE
接著印出猜測的次數。

