0
while((player1chip==-1)||(player2chip==-1)||(player3chip==-1)){                                                              
    player1chip=-1; player2chip=-1; player3chip=-1;                                                       
    printf("How many chips would you like to play with (3-10):\n");
    scanf("%d%d%d", &player1chip, &player2chip, &player3chip);
    getchar();
}

一度に 3 つの値を取得したいのですが、ループが 3 回実行されたようです...どうすればよいですか?

4

2 に答える 2

0
int p1chip=-1, p2chip=-1, p3chip=-1;
do {
  printf("How many chips would you like to play with (3-10)?\n");
  scanf("%d%d%d", &p1chip, &p2chip, &p3chip);
} while ((p1chip == -1) || (p2chip == -1) || (p3chip == -1))

それを試してみてください。

于 2012-09-27T01:37:31.907 に答える
0

scanf() ステートメントは、「%d%d%d」を使用して区切りのない 3 つの数値を期待していると言っているため、何をしようとしているのか少し奇妙です。while ループの目的がプレーヤーチップ変数を埋めることである場合は、それらに配列を使用し、次のように配列を反復処理する必要があります。

playerchip[3];   
for(int i=0; i<3; i++) {
    printf("How many chips would player %d like to play with (3-10)?:\n", i);
    scanf("%d", &playerchip[i]);
}

命名規則を保持している場合、ループを使用して変数を簡単に埋めることはできません。ただし、元の質問に答えるには、一度に複数の数値を取得するには、scanf() ステートメントに区切り記号が必要です。

scanf("%d %d %d", &a, &b, &c);

そうすれば、ある数字がいつ終わり、別の数字が始まるかを誰もが知ることができます。

于 2012-09-27T05:14:42.913 に答える