【发布时间】:2021-02-16 00:36:13
【问题描述】:
下面的代码读取用户的输入,如果用户给出的input 介于两者之间
在 1 和 9 中,playerselect 数字 k 更新为 1 或 2。如果 input 超出范围,则重新向用户提示 input。但是有一个问题,在 2 提示后 k 值被更新。而不是导致Player 1 input两次的代码应该是Player 1 input,然后是Player 2 input。
int main(void)
{
char playerSelect[][2] = {"1", "2"};
int k=0;
for(int i=1; i <= 18; i++){
printf("\nPlayer %s input:", playerSelect[k]);
scanf("%d",&input);
if ((i % 2 == 0) && (1<= input <= 9)){k = 0;}
else if ((i % 2 == 1) && (1<= input <= 9)){k = 1;}
else {printf("Input out of bounds please input again");}
}
return 0;
}
输出:
Player 1 input:10
Input out of bounds please input again
Player 1 input:2
Player 1 input:2
Player 2 input:4
想要的输出
Player 1 input:10
Input out of bounds please input again
Player 1 input:2
Player 2 input:2
Player 1 input:4
【问题讨论】:
-
k未初始化使用。 -
@alex01011 我想我不明白
-
在你的
printf("\nPlayer %s input:", playerSelect[k]);中,第一次迭代中k的值是多少? -
把
int k;改成int k = 0;。 -
很遗憾没有解决问题,但谢谢我已经更新了代码
标签: c for-loop if-statement debugging output