c语言编程 扑克发牌
麻烦找找这个程序的问题:#include<stdio.h>intb,c,i,a[52];voidmain(){chu();//调用赋初值程序xipai();//调用洗牌程...
麻烦找找这个程序的问题:#include<stdio.h>
int b,c,i,a[52];
void main()
{
chu(); //调用赋初值程序
xipai(); //调用洗牌程序
printf("第一位的牌是:\n");
fapai(0,13); //调用发牌程序,给第一位发牌
printf("\n第二位的牌是:\n");
fapai(13,26); //调用发牌程序,给第二位发牌
printf("\n第三位的牌是:\n");
fapai(26,39); //调用发牌程序,给第三位发牌
printf("\n第四位的牌是:\n");
fapai(39,52); //调用发牌程序,给第四位发牌
printf("\n");
}
int chu()
{
int i;
for(i=0;i<52;i++)
a[i]=i+1;
}//赋初值程序
int xipai()
{
srand((unsigned int)time(NULL));
for(i=0;i<1000;i++)
{
b=rand()%52;
c=a[0];
a[0]=a[b];
a[b]=c;
}
}//洗牌程序
int fapai(int q,int p)
{
for(i=q;i<p;i++)
{
b=(a[i]-1)/13;
c=a[i]-b*13;
switch(b)
{
case 0 :printf("%c%d ",3,c);break;
case 1 :printf("%c%d ",4,c);break;
case 2 :printf("%c%d ",5,c);break;
case 3 :printf("%c%d ",6,c);break;
default:printf("error\n");
}
}
}//发牌程序
运行没有问题 但老师说不好 怎么不好了? 展开
int b,c,i,a[52];
void main()
{
chu(); //调用赋初值程序
xipai(); //调用洗牌程序
printf("第一位的牌是:\n");
fapai(0,13); //调用发牌程序,给第一位发牌
printf("\n第二位的牌是:\n");
fapai(13,26); //调用发牌程序,给第二位发牌
printf("\n第三位的牌是:\n");
fapai(26,39); //调用发牌程序,给第三位发牌
printf("\n第四位的牌是:\n");
fapai(39,52); //调用发牌程序,给第四位发牌
printf("\n");
}
int chu()
{
int i;
for(i=0;i<52;i++)
a[i]=i+1;
}//赋初值程序
int xipai()
{
srand((unsigned int)time(NULL));
for(i=0;i<1000;i++)
{
b=rand()%52;
c=a[0];
a[0]=a[b];
a[b]=c;
}
}//洗牌程序
int fapai(int q,int p)
{
for(i=q;i<p;i++)
{
b=(a[i]-1)/13;
c=a[i]-b*13;
switch(b)
{
case 0 :printf("%c%d ",3,c);break;
case 1 :printf("%c%d ",4,c);break;
case 2 :printf("%c%d ",5,c);break;
case 3 :printf("%c%d ",6,c);break;
default:printf("error\n");
}
}
}//发牌程序
运行没有问题 但老师说不好 怎么不好了? 展开
2个回答
展开全部
头文件:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
初始化 洗牌 发牌 程序没有声明
int b,c,i,q=0,a[52];
int chu();
int xipai();
int fapai(int);
int型函数没有返回值。添加return(0)。
发牌次序不合实际。
做了一点改动。fapai的参数减少了一个,只剩下p作为总牌数。
q定义为全局变量,作为计数当前发牌人序号。
发牌程序更改,i每次增加4,实现跳序发牌。末尾增加q++。
fapai(int p)
{
for(i=q;i<p;i=i+4)
{
b=(a[i]-1)/13;
c=a[i]-b*13;
switch(b)
{
case 0 :printf("%c%d ",3,c);break;
case 1 :printf("%c%d ",4,c);break;
case 2 :printf("%c%d ",5,c);break;
case 3 :printf("%c%d ",6,c);break;
default:printf("error\n");
return(0);
}
}
q++;
}//发牌程序
主函数调用fapai函数时,p值赋52即扑克总数。
void main()
{
chu(); //调用赋初值程序
xipai(); //调用洗牌程序
printf("第一位的牌是:\n");
fapai(52); //调用发牌程序,给第一位发牌
printf("\n第二位的牌是:\n");
fapai(52); //调用发牌程序,给第二位发牌
printf("\n第三位的牌是:\n");
fapai(52); //调用发牌程序,给第三位发牌
printf("\n第四位的牌是:\n");
fapai(52); //调用发牌程序,给第四位发牌
printf("\n");
}
个人意见,欢迎交流。
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
初始化 洗牌 发牌 程序没有声明
int b,c,i,q=0,a[52];
int chu();
int xipai();
int fapai(int);
int型函数没有返回值。添加return(0)。
发牌次序不合实际。
做了一点改动。fapai的参数减少了一个,只剩下p作为总牌数。
q定义为全局变量,作为计数当前发牌人序号。
发牌程序更改,i每次增加4,实现跳序发牌。末尾增加q++。
fapai(int p)
{
for(i=q;i<p;i=i+4)
{
b=(a[i]-1)/13;
c=a[i]-b*13;
switch(b)
{
case 0 :printf("%c%d ",3,c);break;
case 1 :printf("%c%d ",4,c);break;
case 2 :printf("%c%d ",5,c);break;
case 3 :printf("%c%d ",6,c);break;
default:printf("error\n");
return(0);
}
}
q++;
}//发牌程序
主函数调用fapai函数时,p值赋52即扑克总数。
void main()
{
chu(); //调用赋初值程序
xipai(); //调用洗牌程序
printf("第一位的牌是:\n");
fapai(52); //调用发牌程序,给第一位发牌
printf("\n第二位的牌是:\n");
fapai(52); //调用发牌程序,给第二位发牌
printf("\n第三位的牌是:\n");
fapai(52); //调用发牌程序,给第三位发牌
printf("\n第四位的牌是:\n");
fapai(52); //调用发牌程序,给第四位发牌
printf("\n");
}
个人意见,欢迎交流。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询