当前位置:首页 » 编程语言 » c语言hs

c语言hs

发布时间: 2025-08-17 08:22:54

1. 如何求C语言扑克牌洗牌发牌,发的牌要从大到小排序,每个部分都要用

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 52 //牌张总数
#define M 13 //每花色张数
char hs[4]={5,4,3,6}; //花色数组:梅花、红心、方块、黑桃字符对应的ASCII码
char hx[]={"JQKA"}; // 对应11,12,13,14共四张大于10的牌符号
//生成顺序扑克牌数组: 1~52,梅花1~13,红心14~26,方块27~39,黑桃40~52

void newDeck(int *a) { int i; for ( i=0;i<N;i++ ) a[i]=i+1; }
//洗牌,将花色和顺序打乱
void Shuffle(int *a) { int s,i,j,t;
srand((unsigned int)time(NULL)); //利用当前时间生成随机数种子
s=rand()%11+5; printf("随机洗牌%d遍\n",s); //第1个随机数当成洗牌次数, 洗牌次数大于等于5,小于等于15
for ( i=0;i<s;i++ ) {
for ( j=0;j<N;j++ ) {
s=rand()%52; //随机数范围0~51,对应a数组下标
t=a[j]; a[j]=a[s]; a[s]=t; //第j张牌和第s张牌交换
}
}
}
//发牌并显示
void Deal(int a[N],int b[4][M]) { int i,j;
for ( i=0;i<4;i++ ) for ( j=0;j<M;j++ ) b[i][j]=a[i*M+j];
}
//理牌
void Collating(int a[4][M]) { int i,j,k,h;
for ( h=0;h<4;h++ )
for ( i=0;i<M-1;i++ )
for ( j=i+1;j<M;j++ )
if ( a[h][i]<a[h][j] ) {
k=a[h][i]; a[h][i]=a[h][j]; a[h][j]=k;
}
}
//显示
void Display(int a[4][M]) { int i,j,s;
for ( i=0;i<4;i++ ) {
for ( j=0;j<M;j++ ) {
s=a[i][j]-1; printf("%c",hs[s/M]);
s%=M; if ( s<9 ) printf("%d ",s+2); else printf("%c ",hx[s-9]);
}
printf("\n");
}
}
void main() { int Deck[N],hands[4][M];
newDeck(Deck); //新扑克牌
Shuffle(Deck); //洗牌
Deal(Deck,hands); //发牌
Collating(hands); //理牌
Display(hands); //显示
printf("\n\n"); system("pause");

}

2. C语言 求去除最高分和最低分然后求平均分

#include <stdio.h>
#include <stdlib.h>
#define N 10

int main(void)
{
int n,i,j,max,min; //全都是计数器作用
float a[N][7],average[N];//一个存得分,一个存平均值

printf("Please input the number of player(s):");
scanf("%d",&n);
if(N < n) //不能用n定义数组长度,这里折中,如果n>N则失败,N可以适当增大
{
printf("Illege input!");
exit(0);
}

printf("Please input the grades of players: ");//记录得分
for(i = 0;i < n;i++)
for(j = 0;j < 7;j++)
scanf("%f",&a[i][j]);

for(i = 0;i < n;i++,a[i][max] = 0,a[i][min] = 0)//实现“去掉最高最低分”
for(j = 0,max = 0,min = 0;j < 7;j++)
{
if(a[i][j] > a[i][max])
max = j;
else if(a[i][j] < a[i][min])
min = j;
}

for(i = 0;i < n;i++)//计算平均分
for(j = 0;j < 7;j++)
average[i] += a[i][j];

for(i = 0,max = 0;i < n;i++) //比较各选手得分
{
if(average[i] > average[max])
max = i;
}

printf("The winner is:%d ",max+1);//输出

return 0;
}




附测试图:


热点内容
天龙旗舰有哪些配置 发布:2025-08-17 17:30:42 浏览:873
安卓怎么改中文名 发布:2025-08-17 17:19:06 浏览:223
python释放 发布:2025-08-17 17:07:32 浏览:502
c语言读取二进制文件 发布:2025-08-17 16:47:22 浏览:656
控制柜与变频器如何配置 发布:2025-08-17 16:47:12 浏览:362
python构造器 发布:2025-08-17 16:33:18 浏览:96
自己搭建服务器如何使用 发布:2025-08-17 16:32:28 浏览:852
struts数据库 发布:2025-08-17 16:23:09 浏览:224
wetransfer上传 发布:2025-08-17 16:07:54 浏览:533
小说app源码 发布:2025-08-17 15:44:41 浏览:376