###前提・実現したいこと
c言語で「1から100までの数字を当てる数あてゲーム」を作っています。この本に乗っているサンプルコードを丸写ししました。
https://www.amazon.co.jp/dp/B01AWPJ7DS/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
1から100までの数字をパソコンがランダムに決め、その数字を遊ぶ人が当てるゲームです。
入力した数字が答えより大きいか小さいかを表示したり、正解したときは「お見事!」「x回目で正解です!」という文章を表示させたりしたいです。
###発生している問題・エラーメッセージ
答えとなる数字が、何度やっても「42」になります。プログラムを再起動しても変わりません。(ググったのですが、これはrand関数の仕様で、正常なのでしょうか?初心者なので、全くわかりません。)
また、42を入力しても、「お見事!」「x回目で正解です!」という文章が表示されません。
数あてゲームです! 私が考えた数字を当てられるでしょうか?(1~100) 答えはいくつでしょう?>41 もっと大きい! 答えはいくつでしょう?>43 もっと小さい! 答えはいくつでしょう?>42 答えはいくつでしょう?>42 答えはいくつでしょう?>
###該当のソースコード
c言語
1 2#include <stdio.h> 3#include <stdlib.h> 4 5int main(void) { 6 int answer; 7 char x[5]; 8 int isGamePlay = 1; 9 int count = 0; 10 int input; 11 12 //答えをランダムに生成 13 answer = rand() % 100 + 1; 14 15 printf("数あてゲームです!\n"); 16 printf("私が考えた数字を当てられるでしょうか?(1~100)\n"); 17 //逆スラッシュをこのフォントで入力しようとすると\になる 18 19 while (isGamePlay) { 20 count = count + 1; 21 printf("答えはいくつでしょう?>"); 22 fgets(x, 4, stdin); 23 input = atoi(x); 24 25 //範囲外の数値が入力されたとき 26 if (input < 1 || input > 100) { 27 printf("1から100までの数字を入力してください!\n"); 28 continue; 29 } 30 //正解のとき 31 if (input == answer) { 32 isGamePlay == 0; 33 } 34 35 //答えより大きかったとき 36 if (input > answer) { 37 printf("もっと小さい!\n"); 38 } 39 40 //答えより小さかったとき 41 if (input < answer) { 42 printf("もっと大きい!\n"); 43 } 44 } 45 46 printf("お見事!\n"); 47 printf("%d 回目で正解です!", count); 48 49 return 0; 50} 51 52
###試したこと
本のサンプルコードと自分が書いたコードを良く見比べてみたのですが、間違っているところはないように思えます。間違いを見落としているのか、そもそもサンプルコードが間違っているのかわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
microsoft visual studio 2017を使用しました。バージョンなどの細かいことはわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/09 14:01
2017/07/09 14:10