東華oj-基礎題第60題-發牌

在這裏插入圖片描述

60 發牌

作者: 朱星垠時間限制: 2S章節: 二維數組

問題描述 :

編制一個模擬發牌的程序。有編號爲1,2,3,4四個人,將一付去掉大小怪的撲克按照如下順序排列梅花c0-c12,方塊d0-d12,紅桃h0–h12,黑桃s0-s12,然後按照1,2,3,4四個人的順序發牌,問最後每個人手上的牌有哪些。

輸入說明 :

你的程序需要從標準輸入設備(通常爲鍵盤)中讀入多組測試數據。每組輸入數據由一行組成。每組數據包含一個在1到4之間的整數,代表四個人中的一個,在行首和行尾沒有多餘的空格。

輸出說明 :

對每組測試數據,你的程序需要向標準輸出設備(通常爲啓動該程序的終端)依次輸出一組對應的答案。對於每組輸入,輸出那個人手上的牌。每組一行。每行包括13張牌,每張牌由牌的花色和牌的大小組成。牌的花色和牌的大小之間有一個空格,前後兩張牌之間也有一個空格。其餘數據前後沒有多餘的空格,兩組數據之間也沒有多餘的空行。

輸入範例 :
1
2

輸出範例 :
c 0 c 4 c 8 c 12 d 3 d 7 d 11 h 2 h 6 h 10 s 1 s 5 s 9
c 1 c 5 c 9 d 0 d 4 d 8 d 12 h 3 h 7 h 11 s 2 s 6 s 10

代碼:

/*
	T60 發牌 
	算法概述:由於發給每個人的牌的規律是一樣的:都是隔4次發一張。
	所以可以用num表示牌的數字,直接輸出發的牌的花色和編號,輸出一次
	將num累加4,若num超過12,那麼說明需要發下一種花色的牌了,這個時
	候num%13,花色更新一下就可以了,總共輸出十三次 
*/

#include<stdio.h>

int main()  {
	int i = 0;// 統計已發的牌張數
	int num = 0;// 當前牌的數字 
	int count = 0;// 統計換花色的次數 
	int perNum = 0;// 人員編號
	char patterns[5] = "cdhsc";
	char ch = patterns[count];// 當前牌的花色 
	
	while (scanf("%d", &perNum) != EOF) {
		 // 重置數據 
		 i = 0;
		 num = perNum - 1;
		 count = 0;
		 ch = patterns[count]; 
 
		 printf("c %d", num); 
		 i++;
		 while (i < 13) {
		 	 num += 4;
		     if (num > 12) {
		     	 num %= 13;
		     	 ch = patterns[++count];// 換花色 
		     	 printf(" %c %d", ch, num);
		     }
		     else {
		     	 printf(" %c %d", ch, num);
		     }
		     i++;
		 }
		 printf("\n");
	} 
	
	return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章