#include <stdio.h> #include <stdlib.h> int a[53]; int b[55]; int z=0,s=1,player=0,computer=0,x,y,w,v,u,p=0,t,han,te=15; void syoubu(void); void mouichi(void); void syuuryou(void); void rannsuu_player(void); void rannsuu_computer(void); void mouii(void); int main() { for(y=1;y<=52;y=y+1) { x=y % 13; a[y]=x; if(a[y]==0) { a[y]=10; } for(w=11;w<=50;w=w+13) { a[w]=10; a[w+1]=10; } for(u=1;u<=52;u=u+1) { b[[/url]=0; } } syoubu(); } void syoubu(void) { printf("あなたの得点 %d 点 \n",player); printf("もう1枚取りますか?(1)はい(2)いいえ \n"); scanf("%d",&han); if(han==1) { mouichi(); } else if(han==2) { mouii(); } } void mouichi(void) { rannsuu_player(); player=player+b[[/url]; if(player>21) { mouii(); } syoubu(); } void mouii(void) { if(p<1) { if(computer>te) { syuuryou(); } if(computer<=te) { rannsuu_computer(); } computer=computer+b[t]; mouii(); } } void syuuryou(void) { if(player>21) { player=0; } if(computer>21) { computer=0; } printf("あなたの点 %d \n",player); printf("親の点 %d \n",computer); if (player>computer) { printf("子の勝ち"); p++; } else if(player<computer) { printf("親の勝ち"); p++; } else if(player==computer) { printf("引き分け"); p++; } } void rannsuu_player(void) { u=(int)(52*(rand()/32767.1)+1); if(b[[/url]!=0) { rannsuu_player(); } b[[/url]=a[[/url]; } void rannsuu_computer(void) { t=(int)(52*(rand()/32767.1)+1); if(b[t]!=0) { rannsuu_computer(); } b[t]=a[t]; }一見問題がないように見えますが数字を入力するところがおかしいです。
あなたの得点 0 点
もう1枚取りますか?(1)はい(2)いいえ
1
あなたの得点 1 点
もう1枚取りますか?(1)はい(2)いいえ
1
12 [main] a 552 _cygtls::handle_exceptions: Error while dumping state (prob
ably corrupted stack)
Segmentation fault (core dumped)
これが実行結果です。普通に遊べるようにするためにはどこが間違っているのか教えてください。
それと52*(rand()/32767.1)+1というのがよくわからないのですが(多分トランプのカードのことかと思いますが)rand()%51+1とは違うんでしょうか?