C言語についての質問です.ランダムに並び替えたトランプからPlayer1とPlayer2が2枚ずつカードを引き,その和が大きい方が勝ちとします.その結果を,以下の実行例のように表示させるプログラムを教えてください.ト

画像

C言語関連 | プログラミング65閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

1

1人がナイス!しています

その他の回答(1件)

1

(アンチジョーカーさん) 例: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> void init(int *a) { int i,x,y,z; for(i=0; i<52; i++)a[i]=i; for(i=0; i<100; i++) { x=rand()%52; y=rand()%52; z=a[x]; a[x]=a[y]; a[y]=z; } } int cds(int n, char *a) { char *s[]= {" of Spade", " of Heart", " of Clab", " of Diamond"}; char *e[]={" J"," Q"," K"}; int ty, c, ret; ty=n/13; c=n%13; if(c==0) { strcpy(a, " A"); ret=11; } else if(c<10) { sprintf(a,"%2d", c+1); ret=c+1; } else { strcpy(a, e[c-10]); ret=10; } strcat(a, s[ty]); return ret; } int draw(int p, int d1, int d2) { char c[16]; int sc=0; printf("Player%d: ", p); sc += cds(d1, c); printf("%-13s ", c); sc += cds(d2, c); printf("%-13s\n", c); return sc; } int main(void) { int cd[52]; int p1, p2; srand((unsigned)time(NULL)); rand(); init(cd); p1=draw(1, cd[0], cd[1]); p2=draw(2, cd[2], cd[3]); printf("\nPlayer1: %d\n", p1); printf("Player2: %d\n\n", p2); if(p1==p2) { puts("Draw"); } else { printf("Winner: Player%d\n\n", p1>p2?1:2); } puts("----------------------------------"); return 0; }

1人がナイス!しています