2016-10-05 15 views
5

Cでプログラムを記述して、正しい数を推測した回数を試してみます。Cで動作する数の推測ゲームを取得できません

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i, searchNumber, Number, rightGuess; 
    rightGuess = 0; 
    printf("Give your number: "); 
    scanf("%d",&searchNumber); 
    printf("\n\n Give 10 numbers: "); 
    for(i=1;i<=9;i++){ 
     scanf("%d \n",&Number); 
     if(Number == searchNumber){ 
      rightGuess++; 
     } 
    } 

    printf("You guessed the number %d times",&rightGuess); 
    return 0; 
} 

ただし、実行するたびに6356736回と推測されます。私は数字を0回だけ入力したにもかかわらず。どんな助け? printf

+4

あなたはあなたのprintfの中で何を意味すると思いますか? – UKMonkey

+2

ニースUKMonkey。 –

+1

Upvoted、これは完全性に近づく1)コード例2)期待される出力3)実際の出力4)よく書かれている。 – Bathsheba

答えて

5

通話は

printf("You guessed the number %d times", rightGuess);

すなわち%dフォーマット指定に対応してrightGuessポインタを渡さないないであるべきです。現在、プログラムの動作は未定義です! (これはよく多数を占めてrightGuessのアドレスを出力することができます - しかし、これまでそれに依存していない;。あなたは、出力ポインタアドレスに%pを使用する必要があります)

7

たぶん、あなたはprintf()でミスを犯しました。

varという名前の変数がある場合、&varは、変数varのメモリアドレスを意味します。たぶんあなたのプログラムで見た数字6356736は変数varの値ではなく、メモリアドレスです。

あなたはこのラインに

printf("You guessed the number %d times", &rightGuess); 

変数rightGuessの値を印刷するために、この行を変更する必要があります。

printf("You guessed the number %d times", rightGuess); 
+0

"あなたのプログラムで見た番号6356736はメモリアドレスです"。それはおそらく*あるかもしれないが、そうでないかもしれない。私があなたであれば、プログラムの振る舞いは実際には定義されていません。 – Bathsheba

関連する問題