代码如下
#include <stdio.h>
#include <ctype.h>
int main(void)/*做一个简易五子棋程序*/
{
int player = 0;
int winner = 0;
int choice = 0;
int row = 0;
int column = 0;
int line = 0;
char game_start = 'Y';
char board [5][5] = {/*标记每个格子的位置*/
{'1','2','3','4','5'},
{'6','7','8','9','10'},
{'11','12','13','14','15'},
{'16','17','18','19','20'},
{'21','22','23','24','25'}
};
for(int i = 0 ; i <= 25 && winner == 0;i++)
{/*绘制格子*/
printf(" %2c | %2c | %2c | %2c | %2c \n",board[0][0],board[0][1],board[0][2],board[0][3],board[0][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[1][0],board[1][1],board[1][2],board[1][3],board[1][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %4c | %2c | %2c | %2c | %2c \n",board[2][0],board[2][1],board[2][2],board[2][3],board[2][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[3][0],board[3][1],board[3][2],board[3][3],board[3][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[4][0],board[4][1],board[4][2],board[4][3],board[4][4]);
/*玩家更替*/
player = i%2+1;
do
{/*提示玩家选择格子*/
printf("Player %d,please enter the number to place your %c in the board\n",player,(player == 1)?'O':'X');
scanf("%d",&choice);
row = --choice/5;
column = choice%5;
}while(choice<0 || choice>25 || board[row][column] == 'O' || board[row][column] == 'X');/*判断格子选择正误*/
board[row][column]=(player == 1)?'O':'X';/*填入'X','O'*/
/*判断获胜条件是否达成*/
if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] == board[3][3] && board[0][0] == board[4][4]
|| board[0][4] == board[1][3] && board[0][0] == board[2][2] && board[0][0] == board[3][1] && board[0][0] == board[4][0])
winner=player;
else
{
for(int line = 0;i < row;i++)
if(board[line][0] == board[line][1] && board[line][0] == board[line][2] && board[line][0] == board[line][3] && board[line][0] == board[line][4]
|| board[0][line] == board[1][line] && board[0][line] == board[2][line] && board[0][line] == board[3][line] && board[0][line] == board[4][line])
winner = player;
}
};
if(winner == 0)
printf("How pity!A draw game.");
else
printf("Congratulations!Player %d,you win the game!\n",player);
return 0;
}
/*剩余问题:方格内两位数不能正确显示*/
运行结果如图所示

从10开始显出都出问题了(例如第三行第一个是11显示成1了...),萌新表示试了好几种方法貌似都是各种问题,求大神指点
#include <stdio.h>
#include <ctype.h>
int main(void)/*做一个简易五子棋程序*/
{
int player = 0;
int winner = 0;
int choice = 0;
int row = 0;
int column = 0;
int line = 0;
char game_start = 'Y';
char board [5][5] = {/*标记每个格子的位置*/
{'1','2','3','4','5'},
{'6','7','8','9','10'},
{'11','12','13','14','15'},
{'16','17','18','19','20'},
{'21','22','23','24','25'}
};
for(int i = 0 ; i <= 25 && winner == 0;i++)
{/*绘制格子*/
printf(" %2c | %2c | %2c | %2c | %2c \n",board[0][0],board[0][1],board[0][2],board[0][3],board[0][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[1][0],board[1][1],board[1][2],board[1][3],board[1][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %4c | %2c | %2c | %2c | %2c \n",board[2][0],board[2][1],board[2][2],board[2][3],board[2][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[3][0],board[3][1],board[3][2],board[3][3],board[3][4]);
printf("-----+-----+-----+-----+-----\n");
printf(" %2c | %2c | %2c | %2c | %2c \n",board[4][0],board[4][1],board[4][2],board[4][3],board[4][4]);
/*玩家更替*/
player = i%2+1;
do
{/*提示玩家选择格子*/
printf("Player %d,please enter the number to place your %c in the board\n",player,(player == 1)?'O':'X');
scanf("%d",&choice);
row = --choice/5;
column = choice%5;
}while(choice<0 || choice>25 || board[row][column] == 'O' || board[row][column] == 'X');/*判断格子选择正误*/
board[row][column]=(player == 1)?'O':'X';/*填入'X','O'*/
/*判断获胜条件是否达成*/
if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] == board[3][3] && board[0][0] == board[4][4]
|| board[0][4] == board[1][3] && board[0][0] == board[2][2] && board[0][0] == board[3][1] && board[0][0] == board[4][0])
winner=player;
else
{
for(int line = 0;i < row;i++)
if(board[line][0] == board[line][1] && board[line][0] == board[line][2] && board[line][0] == board[line][3] && board[line][0] == board[line][4]
|| board[0][line] == board[1][line] && board[0][line] == board[2][line] && board[0][line] == board[3][line] && board[0][line] == board[4][line])
winner = player;
}
};
if(winner == 0)
printf("How pity!A draw game.");
else
printf("Congratulations!Player %d,you win the game!\n",player);
return 0;
}
/*剩余问题:方格内两位数不能正确显示*/
运行结果如图所示

从10开始显出都出问题了(例如第三行第一个是11显示成1了...),萌新表示试了好几种方法貌似都是各种问题,求大神指点











