質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ユーリ

質問です

#1

投稿記事 by ユーリ » 16年前

乱数で1~10の整数値を一個発生させて、これを答えとする。キーボードから値を入力して、その答えが、一致するまで繰り返すプログラムを作成せよ。ただし入力回数をカウントし、5回を超えたら入力を中止し答えを表示する。という問題なのですが
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int a,b,i;
  i=0;
  srand(time(NULL));
  printf("%3d\n",rand()%10+1);
  b=rand()%10+1;
  while(1){
  i++;
  printf("数字を入力してください");
  scanf("%d",a);
  if(a==b){
  printf("OKだよん");
  break;
  }
 
  if(i==5){
  printf("ざんね~ん\n");
  printf("答えは",b);
 break;
 }
 }
		return 0;
}
という感じで作ってみたのですがどこが違うのでしょうか?

DVDM

Re:質問です

#2

投稿記事 by DVDM » 16年前

>>ユーリさん
まず、乱数を発生させている所です。
printf("%3d\n",rand()%10+1);
b=rand()%10+1;

・・・となっていますが、表示された内容と、bに入っている値は別々になる可能性があります。
printfで表示する場所でランダムな値を発生させ、bに代入する部分でも乱数を発生させているからです。
修正の一例として
b=rand()%10+1;
printf("%3d\n",b);
とでもしてやると、bにランダムな値が入り、それを表示しているので二回乱数を発生させたことによる値の不一致が防げます。

それと、scanfを用いて入力する所です。
scanf("%d", a); と書いている所ですが scanf("%d", &a); です。「&」がありません。

ユーリ

Re:質問です

#3

投稿記事 by ユーリ » 16年前

ありがとうございました。
解決いたしました。

閉鎖

“C言語何でも質問掲示板” へ戻る