0

我在一个大学项目中工作,我应该用一些数组编写一个扫雷游戏......我已经编写了我的程序,程序将打印扫雷表,表中的某个单元格有炸弹,程序应该*在那个单元格中打印。和其他单元格应该在八个周围的单元格中打印炸弹数量我不知道如何打印这个可以打印字符和数字的双下标数组。

#include <stdio.h>
#define max 100
int  main()
{
    int a,row,column,n,x,y,counter,i,j;
    char table[max][max]={0};
    scanf("%d%d",&row,&column);
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&x,&y);
        table[x-1][y-1]='*';
    }
    for(counter=0,i=0;i<row;i++)
    {
            for(j=0;j<column;j++)
        {
            if(table[i-1][j-1]=='*')
            counter++;
            if(table[i-1][j]=='*')
            counter++;
            if(table[i-1][j+1]=='*')
            counter++;
            if(table[i][j-1]=='*')
            counter++;
            if(table[i][j+1]=='*')
            counter++;
            if(table[i+1][j-1]=='*')
            counter++;
            if(table[i+1][j]=='*')
            counter++;
            if(table[i+1][j+1]=='*')
            counter++;
            if(table[i][j]!='*')
            table[i][j]=counter;
            counter=0;
        }
    }
for(counter=0,i=0;i<row;i++)
    {
            for(j=0;j<column;j++)   
            printf("%d ",(char)table[i][j]);
        printf("\n");
    }
}
4

1 回答 1

0

不是答案,但您的代码将无法正常工作,因为

    if(table[i][j]!='*')
    table[i][j]=counter;
         ^^^^^^^^^^^^^^^

将覆盖 i,j 位置中的内容,以后的通道将不会在那里看到“*”。所以基本上你的计数都会被搞砸。您需要一个数组用于“*”,另一个用于邻居计数。

于 2013-11-21T20:05:09.573 回答