C言語を用いて、「コインをn回振ったときの裏表を表示するパターン」を表示させるプログラムを作りたいのですが、うまくいきません。
ビット演算は習っていないので、配列を用いた方法で実現させたいのですが、どうすればよろしいでしょうか?
これだと、表裏の入れ替えの処理ができていないようなのです。
C
1#include <stdio.h> 2 3int print(int kekka[],int num,int ban){ 4 int i; 5 6 printf("%d.", ban); 7 for (i = 0; i < num; i++) 8 { 9 if (kekka[i] == 1){ 10 printf("裏"); 11 } 12 else{ 13 printf("表"); 14 } 15 16 } 17 printf("\n"); 18 return 0; 19} 20 21int main(void){ 22 23 int num,i,ban=1; 24 int kekka[10]; 25 26 printf("何回コインを振りますか?:"); 27 scanf("%d", &num); 28 if (num > 11) { 29 printf("10以下にしてください\n"); 30 return 0; 31 } 32 33 for (i = 0; i < num; i++) 34 { 35 kekka[i] = 0; 36 } 37 print(kekka, num,ban);//すべて0に変換。 38 kekka[0]++; 39 ban++; 40 print(kekka, num,ban);//最上位を1に変換 41 42 for (i = 0; i < num; i++){ 43 if (kekka[i] != kekka[i + 1]){ 44 kekka[i + 1]++; 45 } 46 else{ 47 kekka[i + 2]++; 48 } 49 print(kekka, num,ban); 50 ban++; 51 if (kekka[0] == kekka[num-1])break; 52 } 53 54 55 return 0; 56}
結果例
通し番号, パターン
1, 裏裏裏
2, 裏裏表
3, 裏表裏
4, 裏表表
5, 表裏裏
6, 表裏表
7, 表表裏
8, 表表表
回答3件
あなたの回答
tips
プレビュー