这有个炮兵阵地数组的编码,希望能够一句一句的解释下,可以发我邮箱去,邮箱
uu556677
@163.com
分数绝对让你满意
#include
#include
void panduan(char a[][10],int m,int n)
{
int i=0,j=0,q=0,k,c,d,p;
p=m;
if(n
{
p=n;
}
for(k=0;k
{
c=m-1-k;
d=n-1-k;
if(a[k][k]=='p')/*遇到p后将攻击范围也变成h,防止再次判断是否为p,这个循环数从四个角开始循环,一直循环到阵地中间*/
{
q++;
a[k][k+1]='h';
a[k][k+2]='h';
a[k+1][k]='h';
a[k+2][k]='h';
a[k][k]='h';
}
if(a[k][d]=='p')
{
q++;
a[k+1][d]='h';
a[k+2][d]='h';
a[k][d-1]='h';
a[k][d-2]='h';
a[k][d]='h';
}
if(a[c][k]=='p')
{
q++;
a[c][k+1]='h';
a[c][k+2]='h';
a[c-1][k]='h';
a[c-2][k]='h';
a[c][k]='h';
}
if(a[c][d]=='p')
{
q++;
a[c-1][d]='h';
a[c-2][d]='h';
a[c][d-1]='h';
a[c][d-2]='h';
a[c][d]='h';
}
for(i=k,j=k;j
{
if(a[i][j]=='p')
{
q++;
a[i+1][j]='h';
a[i+2][j]='h';
a[i][j+1]='h';
a[i][j+2]='h';
a[i][j]='h';
}
}
for(i=k,j=d;i
{
if(a[i][j]=='p')
{
q++;
a[i+1][j]='h';
a[i+2][j]='h';
a[i][j-1]='h';
a[i][j-2]='h';
a[i][j]='h';
}
}
for(i=c,j=k;j
{
if(a[i][j]=='p')
{
q++;
a[i-1][j]='h';
a[i-2][j]='h';
a[i][j+1]='h';
a[i][j+2]='h';
a[i][j]='h';
}
}
for(i=c,j=k;i>0;i--)
{
if(a[i][j]=='p')
{
q++;
a[i][j+1]='h';
a[i][j+2]='h';
a[i-1][j]='h';
a[i-2][j]='h';
a[i][j]='h';
}
}
}
printf("%d\n",q);
}
void main()
{
char a[100][10];
int i,m,n;
printf("请输入占地的行数与列数,用空格分开:");
scanf("%d%d",&m,&n);
printf("输入每行的p,h值:\n");
for(i=0;i
{
scanf("%s",&a[i]);
}
panduan(a,m,n);
}