• ベストアンサー

何かおかしい?

ソース何かおかしいですか? #include <stdio.h> #include <time.h> #include <stblib.h> //ジャンケンゲーム実行 (繰り返しなし) main () { int player = 0, computer; //乱数の種をまく srand(time(NULL)); printf("【ジャンケンゲーム】\n"); //プレイヤーの入力 printf("ジャンケン・・・(グー:1チョキ:2パー:3を入力) > "); scanf("%d", &player); //コンピュウターの手の入力 computer = rand()%3 + 1; printf("コンピュータは"); if(computer == 1) {printf("グー"); } else if(computer == 2) { printf("チョキ");} else if(computer == 3) { printf("パー");} printf("! "); //勝敗の判断と結果表示 if(computer == player){ printf("あいこ\n"); } else if(player ==1 && computer ==2){ printf("プレイヤーの勝ち\n"); } else if(player ==2 && computer ==3){ printf("プレイヤーの勝ち\n"); } else if(player ==3 && computer ==1){ printf("プレイヤーの勝ち\n"); } else { printf("コンピュウターの勝ち\n"); } return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • qKAZp
  • ベストアンサー率47% (71/148)
回答No.3

#2さんの指摘の部分が単なるタイプミスだとして、他にロジック的な問題があるかと探してみました。 //コンピュウターの手の入力 computer = rand()%3 + 1; この部分、たぶん1~3のランダムな数値を得たいのだと思いますが、RAND_MAXを変更しない場合、rand()は0以上1未満の数値が得られるんじゃなかったでしょうか? stdlib.h でRAND_MAXがなににセットされているかを確かめて見てください。 そのままで解決するのなら、 (rand()*3)%3 とかにすれば0~2の数値が得られるんじゃないかな? これに +1するとあなたの望む式になりそうなんですが。 全然違う部分が問題になってました? どこがどうおかしいと思うのか、実行結果やエラーの状況なども提示してくれると解りやすかったんですが。 私の気づいたところはこんなところしかなかったんですけどねぇ。

その他の回答 (2)

  • gonic
  • ベストアンサー率30% (18/59)
回答No.2

もしかしてコンパイルエラーですか? それなら3行目の<stblib.h>を<stdlib.h>に。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 どう答えれば良いのだろうか・・・・別におかしく無いんじゃない?  できれば、具体的な不満点を挙げてソースを見せる方が良いと思う。

関連するQ&A