#include <stdio.h> #include <stdlib.h> #include <time.h> /* 以上三個標頭檔 stdio.h 包含I/O的函數 stdlib.h 包含控制(system("pause"))以及亂數產生(rand()) time.h 對時間日期有關函數的 */ //phototype 宣告有個函數叫做anwser_check,有兩個參數,且都是int型態 int answer_check(int,int); //definition 定義answer_check函數的內容 int answer_check(int correct_answer,int user_answer) //第一個參數是正確答案,第二個參數是使用者的答案 { if(correct_answer==user_answer) //如果兩者答案相符 return 0; //就傳回0 else //否則 { if(correct_answer > user_answer) //如果正確答案比使用者答案大 return 1; //就傳回1 if(correct_answer < user_answer) //如果確答案比使用者小 return 2; //就傳回2 } } void main(void) { for(;;){ //用無窮迴圈把遊戲整個包住 char play=0; //假設一個字元變數叫play(之後用來控制要不要繼續完),先初始化為0 srand(time(NULL)); //srand是亂數種子的函數,控制亂數產生因子,這邊利用time()當因子,他回傳回從1970年1月1日0點0分0秒後過了幾秒 int number=1+rand()%100,ueser_answer,guess_time=1; //宣告number=1~100的亂數,user_answer,guess_time共三個變數 printf("I have a number between 1 and 100.\n"); printf("Can you guess my number ?\n"); printf("Please type your first guess >"); scanf("%d",&ueser_answer); //給使用者輸入答案 while(answer_check(number,ueser_answer)) //call函數,把正確答案跟使用者答案丟入,並利用其傳回值控制while,當while()括弧中為ture(數字>0)會持續執行,為false(=<0)就停止 { if(answer_check(number,ueser_answer) == 1) //當傳回1就根據剛剛函數的運作來提示太大或太小 printf("Too low. Try again."); if(answer_check(number,ueser_answer) == 2) //當傳回1就根據剛剛函數的運作來提示太大或太小 printf("Too high. Try again."); printf("\nPlease type your new answer >"); scanf("%d",&ueser_answer); guess_time++; } printf("Excellent !! You gessed the number %d\n",number); printf("You try %d times\n",guess_time); printf("Would you like to play again? [Y/N]\n"); /* 控制在玩一次的方法 利用getchar()抓取鍵盤所輸入的按鈕給play 加上while控制直到抓取的值是y 或 n (大小寫視為不同字母)後停止抓取 */ while ( play != 'Y' && play != 'y' && play != 'N' && play != 'n') play = getchar(); if((play=='n')||(play=='N')) break; //判別使用者輸入的結果,輸入n就跳離迴圈結束遊戲 } system("pause"); }
2013年5月15日 星期三
[C]猜數字參考解答
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言