如何解决为什么当我输入正确的 switch 语句时会被忽略
输出:
Select your sign Tom: [X] or [O]
Y
ERROR ENTER A DIFFERENT CHARACTER
X
Player 2 = O
但我想要这样:
Select your sign Tom: [X] or [O]
Y
ERROR ENTER A DIFFERENT CHARACTER
X
Player 1 = X
Player 2 = O
printf("Select your sign %s: [X] or [O]\n",PLAYER1);
scanf(" %c",&P1_SIGN);
do{
switch (P1_SIGN) { //entrata segni
case 'X':
puts("Player 1 = X\n");
P1_SIGN = 'X';
break;
case 'x':
puts("Player 1 = X\n");
P1_SIGN = 'X';
break;
case 'O':
puts("Player 1 = O\n");
P1_SIGN = 'O';
break;
case 'o':
puts("Player 1 = O\n");
P1_SIGN = 'O';
break;
default:
puts("ERROR ENTER A DIFFERENT CHARACTER");
scanf(" %c",&P1_SIGN);
break;
}} while(P1_SIGN != 'X' && P1_SIGN != 'x' && P1_SIGN != 'O' && P1_SIGN != 'o');
if (P1_SIGN == 'X' || P1_SIGN == 'x') {
puts("Player 2 = O\n");
} else {
puts("Player 2 = X\n");
}
解决方法
您的 scanf()
位置错误。
第二个 scanf()
将读取输入 X
并且它会使 do-while
循环的条件为假。因此,循环体不会再次运行,因此不会打印 Player 1 = X
。
您应该删除两个 scanf()
,而不是它们在 scanf()
循环中的 do-while
语句之前添加一个 switch
。
do{
scanf(" %c",&P1_SIGN); // put scanf() here
switch (P1_SIGN) { //entrata segni
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。