Advertisement
jayinnn1

Untitled

Jun 12th, 2019
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <time.h>
  5. #include <math.h>
  6.  
  7. //一個將整數轉成陣列的函數
  8. void intToArr(int x, int* arr){
  9.     for(int i=0;i<4;i++){
  10.         arr[i] = x / pow(10, 3-i); //從千位開始存
  11.         x %= (int)pow(10, 3-i);
  12.     }
  13. }
  14.  
  15. int main(){
  16.     srand(time(0)); //隨機種子
  17.     int ans[4], guess[4];
  18.     int Ans, Guess;
  19.     int max = 9999; //
  20.     int min = 0;
  21.     int a, b;
  22.     bool flag;
  23.     int x;
  24.     while(1){
  25.         flag = 0;
  26.         Ans = rand() % 10000; //生成 0 ~ 9999的隨機亂數
  27.         intToArr(Ans, ans); //將結果存於一長度為4的陣列中
  28.         // 檢查其中數字是否有重複,若有則再重新生成一次隨機數
  29.         for(int i=0;i<4;i++){
  30.             for(int j=i+1;j<4;j++){
  31.                 if(ans[i] == ans[j]){
  32.                     flag = 1;
  33.                     break;
  34.                 }
  35.             }
  36.             if(flag) break;
  37.         }
  38.         if(!flag) break;
  39.     }
  40.     printf("The answer is "); //將答案印出
  41.     for(int i=0;i<4;i++){
  42.         printf("%d", ans[i]);  
  43.     }
  44.     printf("\n");
  45.     while(1){
  46.         a = b = 0; //指定初始值
  47.         printf("Your guess:");
  48.         scanf("%d", &Guess); // 接收玩家所輸入的數字
  49.         if(Guess == Ans) break; //如果輸入數字與答案相同則遊戲結束跳出無窮迴圈
  50.         intToArr(Guess, guess); // 將玩家輸入的數字轉乘
  51.         for(int i=0;i<4;i++){
  52.             if(ans[i] == guess[i]){ //若玩家所猜測的數字及位置皆與答案相同則 a++
  53.                 a++;
  54.                 continue; //繼續外層for迴圈,不經過內層的for迴圈
  55.             }
  56.             for(int j=0;j<4;j++){
  57.                 if(guess[i] == ans[j]) b++; //若數字相同但位置不同則 b++
  58.             }
  59.         }
  60.         printf("%dA%dB\n", a, b); //輸出結果
  61.     }
  62.     // 跳出while迴圈即代表玩家以猜對,輸出猜對的訊息並結束遊戲
  63.     printf("You guess right!!!\n");
  64.    
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement