選寫一C程式=>洗牌再發10張牌將其點數相加[已解決]

Home Home
引用 | 編輯 kyahm
2008-11-30 15:28
樓主
推文 x0
這是我們的作業,可是寫了好久都寫不出來.....
想請各位大大幫幫忙, 感激不盡....

題目如下...
  通用以下程式改寫發10張牌,將其所有點數相加printf出來....
重點:洗牌, 發10張牌, 點數相加...(*要用C寫喔. 謝謝~*)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void shuffle(int wdeck[]);
void deal(const int wdeck[],const char *wface[], const char *wsuit[]);
int main ()
{
    const char *suit={"H","D","C","S"};
    const char *face={"ace","deuce","three","four","five","six", ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 teldeanmac85
2008-12-02 01:25
1樓
  
複製程式
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define N 52

int main(int argc, char* argv[])
{
   int poker[N], sum = 0;    
   int i, j, tmp, remain;    
   
   // 初始化陣列     
   for(i = 0; i < N; i++){        
      poker[i] = i;     
   }
   
   srand(time(0));

   // 洗牌   
   for(i=0;i<N;i++){
      j = rand() % N ;
         tmp = poker[i];
         poker[i] = poker[j];
         poker[j] = tmp;
   }
   
   for(i = 0; i < 10; i++) {      
      // 判斷花色         
      switch((poker[i] / 13)) {             
         case 0: printf("H"); break;            
         case 1: printf("D"); break;           
         case 2: printf("C"); break;            
         case 3: printf("S"); break;        
         }  
         
         // 撲克牌數字        
      remain = (poker[i] % 13)+1;   
         
         //點數相加
         sum = sum + remain; 
         
         switch(remain) {             
         case 13: printf("K "); break;            
         case 12: printf("Q "); break;           
         case 11: printf("J "); break;           
         default: printf("%d ", remain); break;        
      }  
         

   }
   printf("\n");
   printf("SUM : %d\n",sum);  

   return 0;
}

//////////////////////////////////////
C6 D8 H6 DQ C1 D4 CJ D7 C2 SJ
SUM : 68
//////////////////////////////////////

作法 : 52張牌 填進 poker[52] = 0~51
poker   / 13 => row
(poker % 13) +1 => col (必須+1 shift 1~52)

獻花 x0