vscodeを使用しています。
C言語で数字を当てるゲームを作ってみました。
しかし、実行してみるとデバッグじではエラーが出なかったのですが実行途中に止まり下記の表示が出ました。
1人目がカードを入力した後にエンターを押した後です。
下記がコードです。
読みづらくてすいません。
C
1#include<stdio.h> 2 3int n; 4 5void fun1 (int a[n]) /*カードを決める関数です*/ 6{ 7 for(int i = 0;i < n;i++){ 8 printf("%d枚目",i+1); 9 scanf("%d",&a[i]); 10 } 11 12} 13 14void fun2 (int *a,int *c,int *eat, int *bite) /*カードがあっているかを確認する関数です*/ 15{ 16 for (int i = 0;i < n;i++){ 17 if(a[i] == c[i]){ 18 *eat +=1; 19 } 20 for(int x = 0;x < n;x++){ 21 if(a[i] == c[x]){ 22 *bite += 1; 23 } 24 } 25 } 26} 27 28void fun3(int *c,int m) /*入力したカードに重なりがないかを確認する関数です*/ 29{ 30 do{ 31 fun1(c); 32 for(int i=0;i<n;i++){ 33 for(int y = i+1;y<n;y++){ 34 if(c[i] == c[y]){ 35 printf("同じ数字は入力しないでください!"); 36 m=0; 37 break ; 38 } 39 } 40 } 41 m = 1; 42 } while (m == 0); 43 44 45 46} 47int main(void) 48{ 49 int *a,*b,*c; 50 int eat,bite,m,w; 51 int *eat1,*bite1; 52 eat1 = &eat; 53 bite1 = &bite; 54 char p[32],q[32]; 55 printf("1人目の名前を入力してください:"); 56 scanf("%s",p); 57 printf("2人目のの名前を入力してください:"); 58 scanf("%s",q); 59 printf("何枚でゲームをするかを選んでください:"); 60 scanf("%d",&n); 61 printf("%sさんはカードを入力してください\n",p); 62 fun1(a); 63 printf("%sさんはカードを入力してください\n",q); 64 fun1(b); 65 printf("ゲームスタート!\n"); 66 for (w=0;w < 100;w++){ 67 *eat1 = 0; 68 *bite1 = 0; 69 printf("%sさんは%sさんのカードを当ててください\n",p,q); 70 fun3(n,m);/*カードを入力して同じ数字がないかを確認*/ 71 if(c[0] == -1){break;} 72 fun2 (b,c,eat1,bite1);/*カードの比較*/ 73 printf("%dEAT,%dBITE",eat,bite); 74 if(eat == n){break;} 75 *eat1 = 0; 76 *bite1 = 0; 77 printf("\n%sさんは%sさんのカードを当ててください\n",q,p); 78 fun3(c,m); /*カードを入力して同じ数字がないかを確認*/ 79 if(c[0] == -1){break;} 80 fun2(a,c,eat1,bite1);/*カードの比較*/ 81 printf("%dEAT,%dBITE\n",eat,bite); 82 if(eat == n){break;} 83 } 84 85 printf("you win!!"); 86 return 0; 87}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/19 08:37