深圳福田高中一本率:一个C语言问题,请教各位高手??急!!急!!

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 14:47:00
编写一个程序,该程序可以完成自动发牌,编写的程序要求能发最多4份牌,并且每次发牌的结果都是随机的。分成东南西北,四个方向的格式进行输出,自行定义大小怪的输出样式。扑克牌的数量不一定,但是,最多为4副。
该程序运行后要求可以多次发牌,并且在输出格式中,可以允许多种排列,比如按照大小排列,按照花色排列后在按照大小排列,按照牌形排列后再按大小排列。如果能够有图形界面那么可以获得额外加分。如果全程序使用链表也将获得加分。
根据自己的情况选择试题的难度,不要抄袭程序。

#include<iostream.h>
#include<stdlib.h>
#include<time.h>
struct puke
{ int data;
char huase;
struct puke *next;
};
struct puke * creat()
{ struct puke *head,*tail,*p;
int i,j;
head=new struct puke;
tail=head;
tail->next=0;
for(j=0;j<4;j++)
for(i=0;i<13;i++)
{ p=new struct puke;
p->huase=003+j;
p->data=i+1;
tail->next=p;
p->next=0;
tail=p;
}
for(i=0;i<2;i++)
{ p=new struct puke;
p->huase=001+i;
p->data=0;
tail->next=p;
p->next=0;
tail=p;
}
return head;
}
struct puke * delet(struct puke *head,int i)
{ struct puke *p,*q;
int j;
p=head;
for(j=1;j<=i;j++)
p=p->next;
q=p->next;
p->next=q->next;
return q;
}
void print(struct puke *head)
{ struct puke *p;
p=head->next;
while(p)
{ switch(p->data)
{ case 11: cout<<p->huase<<"J"<<" ";break;
case 12:cout<<p->huase<<"Q"<<" ";break;
case 13:cout<<p->huase<<"K"<<" ";break;
case 0:cout<<p->huase<<"G"<<" ";break;
case 1:cout<<p->huase<<"A"<<" ";break;
default:cout<<p->huase<<p->data<<" ";
}
p=p->next;
}
cout<<endl;
}
void main()
{ struct puke *head,*p,**q,**o;
int n,i,j,k;
cout<<"请输入有几个人玩牌:";
cin>>k;
q=new struct puke *[k];
o=new struct puke *[k];
for(i=0;i<k;i++)
{ *(q+i)=new struct puke;
*(o+i)=*(q+i);
(*(o+i))->next=0;
}
i=0;
head=creat();
for(j=54;j>0;j--)
{ srand((unsigned)time(NULL));
n=(rand()%j);
p=delet(head,n);
p->next=0;
(*(o+(i%k)))->next=p;
(*(o+(i%k)))=p;
i++;
}
for(i=0;i<k;i++)
{ cout<<"第"<<i+1<<"个人的牌是:\n";
print(*(q+i));
}
cout<<endl;
}

我是用VC++写的
不只是四个人玩 几个人玩都可以呀
哈哈

123士大夫 你NND,我都受不了你了,到处搞这个联结,毛病!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

暂放一边,明天再来写.

123士大夫. 你太过份了吧,赚分也不能这样赚啊!!

5分,这都行````
做这个程序,怎么也得1小时吧??
5分`````

厉害!等一下,马上回答