Cでプログラミングする方法を学ぼうとしていて、簡単な修正であるはずの問題に遭遇しましたが、予想以上に多くの問題が発生しています。数字を推測するチャンスが3回ある数字推測ゲームを作成しようとしていますが、私の問題は、正しい答えが推測されたときにDoWhileループが壊れないことです。関数は次のとおりです。
void Win_Search(int lucky[],const int MAX, int user_entry, int i)
{
int j=0;
do {
j++;
printf("Please enter a number between 0 and 100\n");
scanf("%d",&user_entry);
for(i = 0; i < MAX; i++)
{
if(user_entry==lucky[i])
{
printf("winner\n");
}
}
} while(user_entry==lucky[i]||j<3);
}
基本的には、配列lucky [i]をループして、user_entryが配列内の20個の数値のいずれかに等しいかどうかを確認することになっています。現在のところ、ループスルーし、配列から当選番号が選択されているかどうかを認識しますが、配列から外れることはありません。
に変更すると
}while(user_entry!=lucky[i]||j<3);
カウンターを完全に無視し、永久にループします。
私が読んだすべてのことはそれが貧弱なプログラミング慣行であると話しているので、私はブレークを使いたくありません。壊す別の方法がありますか、または単にこの問題を引き起こしている間違いを犯しただけですか?
前もって感謝します。