如何提示用户在C中循环?

ac1kyiln  于 2023-01-08  发布在  其他
关注(0)|答案(2)|浏览(97)

我是C新手,目前正在做一个Jack 'N Poy,当用户回答y时,需要重新启动项目。但是,我似乎无法掌握它的模式。在C++上尝试过,它工作,但在C上没有。有人能帮忙吗?我希望用户有能力在完成游戏后再次玩。
下面是代码:

#include<stdio.h>

  int main (){
  char firstPlayer, secondPlayer, again;
  do{
  printf("Jack 'n Poy)\nEnter Player 1 input: ");
  scanf("%c ", &firstPlayer);
  
  printf("Enter Player 2 input: ");
  scanf("%c", &secondPlayer);
  
  switch (firstPlayer){
      case 'x':
      switch (secondPlayer){
          case 'x':
          printf("Draw");
          break; 
          case 's':
          printf("Player 2 wins");
          break;
          case 'p':
          printf("Player 1 wins");
          
      }
      break;
       case 's':
       switch (secondPlayer){
          case 'x':
          printf("Player 1 wins");
          break;
          case 's':
          printf("Draw");
          break;
          case 'p':
          printf("Player 2 wins");
      }
      break;
       case 'p':
       switch (secondPlayer){
          case 'x':
          printf("Player 2 wins");
          break;
          case 's':
          printf("Player 1 wins");
          break;
          case 'p':
          printf("Draw");
       }
      break;
      default:
      printf("Invalid input");
      
}
      printf("\nPlay again? (y/n)");
      scanf("%c", &again);
}
while (again == 'y');
printf("Thank you for playing");

return 0;
}

我也尝试过为y添加一个替代变量,但循环跳过了第一个问题。

非常感谢你的帮助。非常感谢!

nhn9ugyo

nhn9ugyo1#

您需要将格式更改为:

scanf(" %c", ...);

在所有scanf中。注意%c之前的' '

roejwanj

roejwanj2#

您的again是一个字符串。您可以使用strcmp(expectedString,inputString)作为while处的条件。您需要对string.h头文件执行include操作才能执行此操作。
或者,将again更改为char类型,即char again;
然后在最后一次扫描中使用%c,即scanf("%c", &again);。如果输入空格或换行符,您可能会遇到跳过字符的情况。在这种情况下,请参阅this answer以获得指导。

相关问题