當前位置:首頁 » 編程語言 » 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 瀏覽:872
安卓怎麼改中文名 發布: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