编写程序时,编译过不了,求指点
//扫雷// #include <stdio.h>
#include <stdlib.h>
int main()
{
int sl(int i,int m,int n,char b[]);
int p,q,i,j,m,n;
char b[100][100];
for(i=0;i<100;i++)
{
scanf("%d %d\n",&p,&q); //输入两个数
if(p==0||q==0)
{
break;
}
else
{ //输入地雷图
for(m=0;m<p;m++)
{
for(n=0;n<q;n++)
{
scanf("%c",&b[m][n]);
}
printf("\n");
}
int sl(i,p,q,b); //扫雷函数
}
}
return 0;
}
int sl(int i,int m,int n,char b[m][n])
{
int j,k;
char c[m][n];
int t=0,s=0;
int x,y;
for(j=0;j<m;j++) //扫雷中
{
for(k=0;k<n;k++)
{
x=(j>0&&j<m-1)?1:((j==0)?0:2); //判断位置
y=(k>0&&k<n-1)?1:((k==0)?0:2);
switch(x)
{
case 0:switch(y) //计算周围地雷数
{
case 0:if(b[j][k]=='*')
{
c[j][k]='*';
}
else
{
if(j+1<m)
{
s++;
if(b[j+1][k]=='*')
{
t++;
}
}
if(k+1<n)
{
s++;
if(b[j+1][k]=='*')
{
t++;
}
}
if(s==2)
{
if(b[j+1][k+1]=='*')
{
t++;
}
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 1:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(j+1<m)
{
s++;
if(b[j+1][k]=='*')
{
t++;
}
if(b[j+1][k-1]=='*')
{
t++;
}
if(b[j+1][k+1]=='*')
{
t++;
}
}
if([j][k-1]=='*')
{
t++;
}
if(b[j][k+1]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 2:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(j+1<m)
{
s++;
if(b[j+1][k]=='*')
{
t++;
}
}
if(b[j][k-1]=='*')
{
t++;
}
if(s==1)
{
if(b[j-1][k-1]=='*')
{
t++;
}
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
default:printf("error.\n");
}break;
case 1:switch(y)
{
case 0:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(k+1<n)
{
s++;
if(b[j-1][k+1]=='*')
{
t++;
}
if(b[j][k+1]=='*')
{
t++;
}
if(b[j+1][k+1]=='*')
{
t++;
}
}
if([j-1][k]=='*')
{
t++;
}
if(b[j+1][k]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 1:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(b[j-1][k-1]=='*')
{
t++;
}
if(b[j-1][k]=='*')
{
t++;
}
if(b[j-1][k+1]=='*')
{
t++;
}
if(b[j][k-1]=='*')
{
t++;
}
if([j][k+1]=='*')
{
t++;
}
if(b[j+1][k-1]=='*')
{
t++;
}
if(b[j+1][k]=='*')
{
t++;
}
if(b[j+1][k+1]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 2:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(b[j-1][k-1]=='*')
{
t++;
}
if(b[j-1][k]=='*')
{
t++;
}
if(b[j][k-1]=='*')
{
t++;
}
if(b[j+1][k-1]=='*')
{
t++;
}
if(b[j+1][k]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
default:printf("error.\n");
}break;
case 2:switch(y)
{
case 0:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(k+1<n)
{
s++;
if(b[j-1][k]=='*')
{
t++;
}
if(b[j-1][k+1]=='*')
{
t++;
}
if(b[j][k+1]=='*')
{
t++;
}
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 1:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(b[j-1][k-1]=='*')
{
t++;
}
if(b[j-1][k]=='*')
{
t++;
}
if(b[j-1][k+1]=='*')
{
t++;
}
if(b[j][k-1]=='*')
{
t++;
}
if(b[j][k+1]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
case 2:if(b[j][k]==*)
{
c[j][k]='*';
}
else
{
if(b[j-1][k-1]=='*')
{
t++;
}
if(b[j-1][k]=='*')
{
t++;
}
if(b[j][k-1]=='*')
{
t++;
}
c[j][k]=(char)(t+48);
s=0;
t=0;
}break;
default:printf("error.\n");
}break;
default:printf("error.\n");
}
}
}
for(j=0;j<m;j++) //输出扫雷图
{
printf("Field #%d:\n",i);
for(k=0;k<n;k++)
{
printf("%c",c[j][k]);
}
printf("\n");
}
return 0;
}