扑克洗牌
冒泡:
bubbleSort(void* data[],int n, int (*cmpPro)(void* ,void*))
{
void *temp=NULL;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(( cmpPro(data[j],data[j+1]))>1)
temp=data[j];
data[j] = data[j+1;
data[j+1] = temp;
}
}
关联容器: map multimap set multiset
非关联容器: list vector deque
什么是回调函数:
回调函数就是一个通过函数指针调用的函数。
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
扑克牌洗牌
#include<time.h>
#include <stdlib.h>
int main(){
int a[4][13],d,i,j,m,num=0,b[52]={0};
srand(time(NULL));//种种子
for(i=0;i<4;i++)
{
for(j=0;j<13;j++)
{
a[i][j]=j+1;
}
}//初始化数组
for(int i=0;i<4;i++)
{
for(int j=0;j<13;j++)
printf("%d\t",a[i][j]);
}
for(;num<=52;) //洗牌
{
d=rand()%52; //随机一个数
for(m=0;m<num;m++) //除重
{ //6 num =0
if(d==b[m])
{
break;
}
}
if(m==num) //数组随机
{
b[num]=d; //把52个把52不同的随机数放入数组
printf("****%d\n",b[num]);
switch(d/13) //打印花色
{
case 0:printf("红桃");break;
case 1:printf("方块");break;
case 2:printf("草花");break;
case 3:printf("黑桃");break;
}
num++;
printf("%2d\%c",a[d/13][d%13],num%13==0 && num!=0?'\n':' '); //
}
}
return 0;
}
}