上午写了一个,但是太多if else了,下午根据朋友的想法改进了一下。可是for循环又点多起来了。大牛看看,有没有更好的方法?
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define M 6
#define N 6
int i,j;
void main()
{
char a[M][N];
memset(a,'0',sizeof(a));
char ch;
for(i=1;i<M-1;i++)
{
for(j=1;j<N-1;j++)
{
printf("请输入(%d,%d):",i-i,j-1);
a[i][j]=getch();
}
}
for(i=1;i<M-1;i++)
{
for(j=1;j<N-1;j++)
{
if(a[i][j] != '*')
{
a[i][j]='0';
if(a[i-1][j] == '*') a[i][j]++;
if(a[i+1][j] == '*') a[i][j]++;
if(a[i][j-1] == '*') a[i][j]++;
if(a[i][j+1] == '*') a[i][j]++;
if(a[i+1][j+1] == '*') a[i][j]++;
if(a[i-1][j-1] == '*') a[i][j]++;
if(a[i+1][j-1] == '*') a[i][j]++;
if(a[i-1][j+1] == '*') a[i][j]++;
}
}
}
printf("经计算机扫描后:\n");
for(i=1;i<M-1;i++)
{
for(j=1;j<N-1;j++)
{
if(a[i][j] == '*')
printf("%c ",a[i][j]);
else
printf("%d ",a[i][j]-'0');
}
printf("\n");
}
}