C primer plus 第六版 第八章 第五題 程式設計練習答案

Aeron-A發表於2018-05-31

Github 地址:這裡這裡φ(>ω<*)

/*
   本程式應題目而建立。
     題目要求: 修改程式清單中的 8.4 猜數字程式。 詳見數 226 頁。
               讓程式使用更智慧的猜測策略。使用 二分查詢 策略。
*/


#include<stdio.h>
#include<ctype.h>
  #define MAX 100


int main(void)
{
int count = 50;   // 儲存程式計算結果。程式輸出的 初始值 是 55 。
int input = 0;    // 接收使用者輸入。
int i = 0;        // 計算用。
int j = 0;        // 計算用。
    
// 旁白部分 。
printf("Welcome to this small program . Now we are playing a game . I wish you can enjoy in it .\n");
printf("The rule is that : The program will guess your imagine number and output that number to show you .\n");

printf("If number is bigger than your imagine , please enter 'big' or 'b' to tell program . \n"

                   “And it will guess again for another number to show you .\n");

printf("If number is smaller than your imagine , please enter 'small' or 's' to tell program . \n"

                    "And it will guess again for another number to show you .\n");

/*——————————————————————————————————分割線,太長了 !—————————————————————————————————————————————————*/
printf("If I am right , please input 'right' . And program will close .\n");
printf("If you are tirred and Don't wan t to play this game . You are just enter 'q' to quit program .\n");
printf("Game start ! The program will show you the number for your imagine now !\n");
/*——————————————————————————————————分割線,太長了 !—————————————————————————————————————————————————*/


printf("I guess the number is 50 ! Am I right ? Please input :");

input = getchar();
getchar();  //讀取換行符。避免程式讀取多餘字元而引發錯誤。


while ( input != 'q' )
{
if (input == 's' )
{
// Smaller , 小於使用者猜測數字的情況下。 
j = count ;
i = MAX - count ;
count  += (int) i / 2 ;
printf("\nOk , I guess again ! The number is %d .Am I right ? Please input :", count );
    }
else if (input == 'b' )
{
// Bigger , 大於使用者猜測數字的情況下。
count = (int) (count - j ) / 2 + j ;
printf("\nOk , I guess again ! The number is %d .Am I right ? Please input :", count );
}
else if (input == 'r' )
{
// Right , 等於使用者猜測數字的情況下。
printf("\nAlright , I  guess right at last !\n");
break;
}
else
{   //莫名情況。
printf("\nWORRING ! This program is failed to run ! And it will close for now ! \n");
break;
}

input = getchar();
getchar();  //讀取換行符。避免程式讀取多餘字元而引發錯誤。
}



printf("Game is over ! Welcome to here next time ! \n");
printf("Bye !\n");

//暫停頁面專用。
getchar();
getchar();


return 0;
}

相關文章