#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)
沒有留言:
張貼留言