C语言—五子棋求大神帮忙看看,设计是按输入的坐标打印棋子。可打不出来

#include<stdio.h>
#define N 20
#define X 10
struct zuobiao
{
int x;
int y;
};
struct zuobiao weizhi[N];
char p[N][N];
void draw ();
void main()
{
int i,j;
int a,b;
draw();
printf ("请输入一个坐标:例如 3,4 ");
printf("\n");
scanf("%d,%d", &a,&b);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if ((weizhi[j].x==a) && (weizhi[j].y==b))
{
p[a][b]='@';
draw();
}
}
printf("棋子超过棋盘范围\n");break;
}
}
void draw()
{
printf ("Please input the five_chess's board\n");

int i,j,k;
scanf ("%d", &j);
for (i = 0; i<j; i++)
{
if(i==0)
printf("%3d",i);
else
printf("%2d", i );
}
printf("\n");
for (i = 0; i<j; i++)
{
printf ("%2d", i );
for (k = 0; k< j; k++)
{
printf ("十",p[i][k]);
weizhi[i].x=i;
weizhi[i].y=k;
}
printf ("\n");
}
最新回答
指尖落樱舞

2025-03-26 09:16:50

几个问题:

  1. weizhi这个存放坐标的数组需要用二维数组,否则只能存放一行位置;

  2. 初始化棋盘的动作从draw函数里移出来,放在main函数里做,draw只负责把当前棋盘和棋子画出来,初始化棋盘就是输入棋盘的大小;

  3. 存放棋子的二维数组p需要初始化;

  4. draw画棋盘的时候,要判断p数组对应存放了什么字符来决定输出什么内容;

  5. 判断棋子超过棋盘范围,只需要检查输入的坐标x和y是否都比棋盘小就可以了,放在for循环里,每次都会被执行到。

代码改了一下,你看一看。

#include<stdio.h>
#define N 20
#define X 10
struct zuobiao
{
        int x;
        int y;
};
struct zuobiao weizhi[N][N];
char p[N][N];
int len;
void draw ();
void main()
{
        int i,j;
        int a,b;

        memset(p, 0, N*N);

        printf ("Please input the five_chess's board\n");
        scanf ("%d", &len);
        draw();

        printf ("请输入一个坐标:例如 3,4 \n");
        scanf("%d,%d", &a,&b);
        if(a >= len || b >= len)
            printf("棋子超过棋盘范围\n");

        for(i=0;i<len;i++)
        {
                for(j=0;j<len;j++)
                {
                        if ((weizhi[i][j].x==a) && (weizhi[i][j].y==b))
                        {
                                p[a][b]='@';
                                draw();
                        }
                }
        }
}
void draw()
{
        int i,j,k;

        for (i = 0; i<len; i++)
        {
            if(i==0)
                printf("%3d",i);
            else
                printf("%2d", i );
        }
        printf("\n");
        for (i = 0; i<len; i++)
        {
            printf ("%2d", i );
            for (k = 0; k< len; k++)
            {
                if(p[i][k] == 0)
                    printf ("十");
                else
                    printf ("%c ", p[i][k]);
                weizhi[i][k].x=i;
                weizhi[i][k].y=k;
            }
            printf ("\n");
        }
}