我写了一个发牌程序,但输出的结果有点问题
前面都很好,就是最后四张牌,花和数字不在牌里面.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
void main(void)
{ int b[52];
char s,flower,f(int);
int i,a,c,t,j=0,k,m,line=0,u=0;
void background(int,int);
textbackground(0);
clrscr();
textcolor(4);
clrscr();
for(i=0;i<52;i++)
{ b[i]=i+1;
}
randomize();
for(i=0;i<52;i++)
{ if(i%13==0)
{ background(u,line);
line++;
}
do
{ a=rand()%52+1;
}
while(b[a-1]==0);
b[a-1]=0;
k=(a-1)/13;
flower=f(k);
if(a%13==0) c=13;
else c=a%13;
if(c==1) s='A'; /*将数字转换成字符*/
else if (c>1&&c<10) s=c-0+'0';
else if (c==11) s='J';
else if (c==12) s='Q';
else if (c==13) s='K';
t=(i+1)%4;
if(t==0) j++;
switch(t)
{ case 1: { printf("%4c",flower);
if(c==10) printf("%d",c); /*将十单独输出*/
else printf("%-2c",s);
break;
}
case 2: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
case 3: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
case 0: { printf("%4c",flower);
if(c==10) printf("%d",c);
else printf("%-2c",s);
break;
}
}
m=(i+1)%13;
if(m==0)
{ printf("\n");
printf("\n");
printf("\n");
printf("\n");
}
}
getch();
}
char f(int k) /*输出花色*/
{ char z;
if(k==0) z='0'+211;
else if(k==1) z='0'+212;
else if(k==2) z='0'+213;
else z='0'+214;
return(z);
}
void background(int u,int v) /*输出牌面的子函数*/
{ for(u=0;u<13;u++)
{ window(1+u*6,1+v*5,4+u*6,3+v*5);
textbackground(7);
clrscr();
}
}