本文目錄一覽:
- 1、c語言紙牌發牌程序源代碼(附註釋)
- 2、魔術師的紙牌編程演算法
- 3、簡單的紙牌遊戲,C++
- 4、求c語言的「紙牌遊戲」代碼
- 5、java題目 小明左右手分別拿兩張紙牌 黑桃10和紅心8, 現在交換手中的牌 用程序模擬這一過程
c語言紙牌發牌程序源代碼(附註釋)
其實發牌問題里有個隨機的問題,就是模擬洗牌的問題,我來嘗試下這個程序吧(每個花色的代碼分別是:紅桃 \x3,方塊\x4,梅花\x5,黑桃\x6
#include stdio.h
#include time.h
char hua_se[4]={‘\x3′,’\x4′,’\x5′,’\x6’}; //定義一個數組來存放花色
char *dight[14]={“Ace”,”two”,”three”,”four”,”five”,”six”,”seven”,”eight”,”nine”,”ten”,”jack”,”queen”,”king”};//定義一個指針型的數組來存放數字
int fa_pai[4][13]={0};//定義一個二維數組來發牌
void move(int fa_pai[4][13]);
void deal(int fa_pai[4][13],char huase[4],char *dight[4][13]);
int main(void){srand(time(NULL));
move(fa_pai);
deal(hua_se,dight,fa_pai);
printf(“你是否想結束髮牌?Y/N”);
getch();return 0;}void move(int fa_pai[4][13]){int r,card,row,column;
for(card=1;card=52;card++)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
while(fa_pai[4][13]!=0)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
}
fa_pai[row][column]=card;
}
}
void deal(int fapai[4][13],char hua_se[3],char *dight[13])
{
char c;int card,row,column;
for(card=1;card=52;card++)
{
for(row=0;row=3;row++)
{
for(column=0;column=12;column++)
{
if(fapai[row][column]==card)
{
if(card%3=0)c=’\n’;
elsec=’\t’;
printf(“%5sof%-8s%c”,hua_se[row],dight[column],c);
}
}
}
}
}
魔術師的紙牌編程演算法
我的理解是第1張是A,然後把第2張放到最後,然後第3張是2,然後把第4張放到最後,第5張放到最後,然後第6張是3,然後把7、8、9張依次放到最後,然後第8張是4……
是這樣吧?
按照你說的話,牌由上到下的順序是(T代表10):A825T3QJ9476K
c語言實現的話用倒推的思想應該會相對比較簡單一些,你自己拿13張牌自己倒推著試試看,然後按照自己倒推的思路編程就會容易許多。
具體的代碼就不給你編了,實現的時候可能多層循環比較麻煩,一步一步來就會輕鬆些,最好先畫個流程圖。
簡單的紙牌遊戲,C++
#include “StdAfx.h”
#include stdio.h
void fenxi();
void shuchu();
void main(){
int m;
printf(“\n\n\n”);
printf(“\t\t\t******紙牌遊戲******\n”);
printf(“遊戲規則如下:\n\n\n”);
printf(“\t編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,\n”);
printf(” 直到最後一張牌;然後,從第3張開始,以3為基數,是3的倍數的牌翻一次,直到最後\n”);
printf(” 一張牌;然後…從第4張開始,以4為基數,是4的倍數的牌翻一次, 直到最後一張牌;\n”);
printf(” 再依次5的倍數的牌翻一次,6的,7的 直到 以52為基數的 翻過,輸出:這時正面向\n”);
printf(” 上的牌有哪些?”);
while(1){
printf(“\n\t*1.遊戲分析:\n\t*2.輸出結果:\n\t*3.退出:\n”);
printf(“\t請輸入你的選擇:”);
scanf(“%d”,m);
switch(m){
case 1:
fenxi();
break;
case 2:
shuchu();
break;
default:
return;
}
}
return;
}
void fenxi(){
int i,j;
printf(“遊戲分析:\n\n”);
printf(“\t如下列數組,遊戲開始時,所有牌面朝上,每張牌翻一下,則該張牌出現一次,若”);
printf(“出現偶數次的牌為正反抵消,依然為朝上的,所以朝上的為1和以下偶數次出現的數。\n”);
for(i=1;i=52;i++){
for(j=2;j=52;j++)
if(i%j==0){
printf(“%d “,i);
}
printf(“\n”);
}
return;
}
void shuchu(){
int a[52]={0};
int i,j;
printf(“\n\n第五十二次翻牌過後正面向上的有:\n\n”);
for(i=0;i=51;i++) {
a[i]=-1;
}
for(i=1;i=52;i++) {
for(j=2;j=52;j++){
if(i%j==0){
a[i-1]=a[i-1]*-1;
}
}
}
for(i=1;i=52;i++){
if(a[i-1]*-1==1)
printf(“%d “,i);
}
getchar();
}
求c語言的「紙牌遊戲」代碼
原來幫人編過一個,在,把代碼複製過來,你可以參考一下。(問一下,不會這個還是Leehomloveyaya你發的吧?
#includestdio.h
void main()
{
int i,j,flag[52];
for(i=0;i52;i++)//52張牌所有狀態均為1,即均為正面
flag[i]=1;
for(j=2;j=52;j++) //對52張牌(序號放在i里)對2,3…52(放在j里)按i+1是否是j的倍數進行狀態翻轉。
for(i=0;i52;i++)
if((i+1)%j==0)
flag[i]=flag[i]?0:1;
printf(“positive card are:”);
for(i=0;i52;i++)//對翻轉處理後狀態仍然是正面的(flag保持為1)的將其編號輸出。
{
if(flag[i])
printf(“%d “,i+1);
}
printf(“\n”);
}
java題目 小明左右手分別拿兩張紙牌 黑桃10和紅心8, 現在交換手中的牌 用程序模擬這一過程
交換牌的話只需:1.設一個中間變數賦值為左手中的紙牌10 2.把右手中的紙牌8賦值給左手中的紙牌10 3.把中間變數中的10賦值給右手中的紙牌8 就可以了
int j=10;左手中的紙牌
int k=8;右手中的紙牌
開始交換:
int i=j;
j=k;
k=i;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/188745.html