在下面的函数中,用户输入 10 个数字 5 存储在 X_users_inputs
和 Y_users_inputs
中,如果 X_users_inputs
值为 0 或 {{ 1}} 如果 k
是 1。但是 Y_users_inputs
语句是错误的我试图查看来自两个用户的所有存储值。我如何修复下面的 if 语句。
变量
k
功能
if-else
输出
#include <stdio.h>
int main(void)
{
int input = 0, k = 0;
char playerSelect[][2] = {"1", "2"};
int X_users_inputs[10] = {0};
int O_user_inputs[10] = {0};
int s_count = 1;
int l_count = 1;
预期输出
for (int i = 1; i <= 11; i++)
{
printf("\nPlayer %s input: ", playerSelect[k]);
scanf("%d", &input);
if(k== 0){
X_users_inputs[i-1] = input;
for(int l =0; l < l_count; l++){
printf("X user %d\n",X_users_inputs[l]);}
++l_count;
}
else if(k== 1) {
O_user_inputs[i-1] = input;
for(int s =0; s < s_count; s++){
printf("Y user %d\n",X_users_inputs[s]);}
++s_count;}
k = ((i % 2 == 0) ? 0 : 1);
}
return 0;
}
答案 0 :(得分:1)
问题是 i
在请求 X
和 O
输入之间递增。所以第一个 X
输入进入 X_users_input[0]
,然后第一个 O
输入进入 O_users_input[1]
。然后存储到 X_users_input[2]
和 O_users_input[3]
。如您所见,每个数组都在跳过一个元素。
相反,您可以使用 l_count
和 s_count
作为每个数组的索引。从 0
开始它们以避免总是需要减去 1
来获取数组索引。我还建议使用更好的变量名称——如果玩家是 X
和 O
,请在所有变量中一致使用这些名称。
此外,您的主循环执行了 11 次,而不是 10 次。
int x_count = 0, y_count = 0;
for (int i = 0; i < 10; i++)
{
printf("\nPlayer %s input: ", playerSelect[k]);
scanf("%d", &input);
if(k== 0){
X_users_inputs[x_count++] = input;
for(int l =0; l < x_count; l++){
printf("X user %d\n",X_users_inputs[l]);}
}
else if(k== 1) {
O_user_inputs[y_count++] = input;
for(int s =0; s < y_count; s++){
printf("Y user %d\n",X_users_inputs[s]);}
}
k = k == 0 ? 1 : 0;
}