#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std
const int NUM = 52
const int DECK = 13
enum SortType
typedef struct CARD
{
int suit/芦行誉/ 取值0 - 3,分别表示梅花、方块、红心和黑带族桃
int value// 取值2 - 10、J(11)、Q(12)、K(13)、A(14)
} Card
void suffle(Card *cards)
{
int i, j, t
Card c
srand(time(NULL))
for (i = 0i <NUM++i)
for (j = 0j <NUM++j)
{
t = rand() % NUM
if (j != t)
{
memcpy(&c, &cards[t], sizeof(Card))
memcpy(&cards[t], &cards[j], sizeof(Card))
memcpy(&cards[j], &c, sizeof(Card))
}
}
}
void sort(Card *cards, int size, SortType stype)
{
int i, j, k
Card t
for (i = 0i <size-1++i)
{
k = i
for (j = i + 1j <size++j)
{
if ((stype == SUIT) &&(cards[k].suit >cards[j].suit))
k = j
else if ((stype == VALUE) &&cards[k].value <cards[j].value)
k = j
}
if (k != i)
{
memcpy(&t, &cards[i], sizeof(Card))
memcpy(&cards[i], &cards[k], sizeof(Card))
memcpy(&cards[k], &t, sizeof(Card))
}
}
}
void show(int suit, int value)
{
static char values[] =
switch (suit)
{
case 0:
cout <<陪段 "梅花 "
break
case 1:
cout <<"方块 "
break
case 2:
cout <<"红心 "
break
case 3:
cout <<"黑桃 "
break
}
if (value == 10)
cout <<"10"
else
cout <<values[value-2]
cout <<"\t\t"
}
void sortValue(Card *cards)
{
int p[4] =
int i, j
for (i = 0i <DECK++i)
++p[cards[i].suit]
j = 0
for (i = 0i <4++i)
{
sort(cards + j, p[i], VALUE)
j += p[i]
}
}
void main(void)
{
Card cards[NUM]
Card A[DECK], B[DECK], C[DECK], D[DECK]
int i, j, s = 0, v = 2
for (i = 0i <NUM++i)
{
cards[i].suit = s
cards[i].value = v
++v
if ((i+1) % 13 == 0)
{
++s
v = 2
}
}
suffle(cards)
j = 0
for (i = 0i <NUMi += 4)
{
memcpy(&A[j], &cards[i], sizeof(Card))
memcpy(&B[j], &cards[i+1], sizeof(Card))
memcpy(&C[j], &cards[i+2], sizeof(Card))
memcpy(&D[j], &cards[i+3], sizeof(Card))
++j
}
sort(A, DECK, SUIT)
sortValue(A)
sort(B, DECK, SUIT)
sortValue(B)
sort(C, DECK, SUIT)
sortValue(C)
sort(D, DECK, SUIT)
sortValue(D)
cout <<"PLAYER 1" <<"\t" <<"PLAYER 2" <<"\t"
cout <<"PLAYER 3" <<"\t" <<"PLAYER 4" <<endl
for (i = 0i <DECK++i)
{
show(A[i].suit, A[i].value)
show(B[i].suit, B[i].value)
show(C[i].suit, C[i].value)
show(D[i].suit, D[i].value)
cout <<endl
}
system("PAUSE")
}
请参考
这个一般不能做到。
一般的C语言编译器会限制程序的资源使用量(如CPU不超过40%),超过设定时,编译出来的程序会提示“未响应”而停止工作,不会造成电脑满负荷工作的情况。
实现满负荷工作可以用一些拷机软件,比如Super PI,来测烂态试处理器的性能。
但对于时间的饥弯源记录,可以闹埋运用<time.h>的函数来实现,用法如下:
time_t start,endstart =time(NULL)//or time(&start)
//计时中
end =time(NULL)
printf("time=%d\n",difftime(end,start))
这里的输出单位为秒。如要精确到毫秒的计时,可以调用clock():
clock_t start,endstart = clock()
//计时中
end = clock()
printf("time=%f\n",(double)end-start)/CLK_TCK)
这里end和start得到的是计算机时钟的tick数,换算成毫秒需要除以常数CLK_TCK,换算成秒除以常数CLK_TCKCLOCKS_PER_SEC。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)