勝敗がつくまでじゃんけんを続けるプログラムを作っています。(コンピューターの手を乱数で決め、人間の手は入力してもらう)
試しに、3を入力し続けたところ、何回入力しても
printf("You are even.\n"); printf("Choose your hand from 1 to 3.\n"); printf("1 rock\n"); printf("2 paper\n"); printf("3 scissors\n");
が繰り返し表示されてしまいます。どうすればよいのでしょうか。また、ソースコード全体で間違っているところがあれば、ご指摘いただけると嬉しいです。
c
1int get_number(void) { 2 return (int)((((double)rand()) / ((double)RAND_MAX + 1)) * 3) + 1; 3} 4 5int main(void) 6 7{ 8 int h = 0; 9 printf("Let's play rock,paper,scissors!\n"); 10 printf("Choose your hand from 1 to 3.\n"); 11 printf("1 rock\n"); 12 printf("2 paper\n"); 13 printf("3 scissors\n"); 14 15 scanf("%d", &h); 16 17 int m = 0; 18 m = get_number(); 19 20 do { 21 printf("You are even.\n"); 22 printf("Choose your hand from 1 to 3.\n"); 23 printf("1 rock\n"); 24 printf("2 paper\n"); 25 printf("3 scissors\n"); 26 int h = 0; 27 scanf("%d", &h); 28 } while (h == m); 29 if (h == 1 && m == 2) { 30 printf("You are loose!\n"); 31 } 32 else if (h == 1 && m == 3) { 33 printf("You are win!\n"); 34 } 35 else if (h == 2 && m == 1) { 36 printf("You are win!\n"); 37 } 38 else if (h == 2 && m == 3) { 39 printf("You are loose!\n"); 40 } 41 else if (h == 3 && m == 1) { 42 printf("You are loose!\n"); 43 } 44 else if (h == 3 && m == 2) { 45 printf("You are win!\n"); 46 } 47 48 49 return 0; 50}
回答3件
あなたの回答
tips
プレビュー