2017-02-09 4 views
0

私は現在Cを学習しており、しばらくこの問題を抱えています。実行されていると、動作する必要がありませんし、実行されないこともあります。 あなたが正しい答えを与えると、あなたはポイントを得ることになっていますが、それが間違っても、それは正しいと言い、あなたにポイントを与えます。誰でもここで私を助けることができましたか?ここ はコードです:質問が2つあるQuizzは動作しませんか?

これは細かい

char name[50], answer; 
int point; 
printf("Enter your name!\n"); 
scanf("%s", &name); 
printf("\t \t \t Welcome to the game, %s! \n", name); 
point = 0; 
printf("\t \t \t POINTS: %d \n", point); 

を動作し、ここでは問題であり、あなたが%sanswerで読むことも

printf("2+2? \n"); 
printf("a) 4 \n"); 
printf("b) 5 \n"); 
scanf("%s", &answer); 
if (answer = "a") { 
    printf("Correct\n"); 
    point++; 
    printf("\t \t \t POINTS: %d \n", point); 
} 
else { 
    printf("Not correct"); 
} 
printf("2+3? \n"); 
printf("a) 5 \n"); 
printf("b) 4 \n"); 
scanf("%s", &answer); 
if (answer = "a") { 
    printf("Correct\n"); 
    point++; 
    printf("\t \t \t POINTS: %d \n", point); 
} 
else { 
    printf("Not correct"); 
} 
+0

回答が未割り当てのメモリに書き込む複数の文字(nulを含む)で、その動作が次のようになる場合は、 "うまくいきません"と定義してください。 –

+2

'scanf("%s "、&answer);未定義。 – George

+0

@xing - 間違っています - 'strcmp'が必要です –

答えて

1

を動作しませanswer..does。ただし、charです。したがって、あなたは答えをscanf("%c", &answer);で読むべきです。
次のもの:ifがあり、2つの値を比較する場合は、==を使用します。 =は代入演算子であり、値に代入する場合、"a"answerに、==を等価をチェックします。
文字を比較する場合、 if (answer == "a")" "を使用しないでください。これらは、NULL文字(\0)で終了するconst char *を示します。代わりに、単一の文字を確認するには、' 'を使用してください。 if (answer == 'a'
EDIT: 代わり

point++; 
printf("\t \t \t POINTS: %d \n", point); 

を使用しての、あなたは1行であることを行うことができます。

printf("\t \t \t POINTS: %d \n", ++point); 

あなたはpostfixの表記point++を使用。これは、のコマンドの後に変数をインクリメントします。 ++pointを使用すると、非常に同じコマンドで変数がインクリメントされます。接尾辞/接頭辞に関するこの質問を確認するには、hereをクリックしてください。

関連する問題