旭阳下


私信TA

用户名:hxd513723

访问量:1582

签 名:

等  级
排  名 57269
经  验 240
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 四川工商学院
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:#include<stdio.h>
#include<stdlib.h>
int main()
{
 int row,col,field=0;
 int i,j,k,l,i1,j1,M=0;
 char *a[50][50];
 int b[50];
  for(i=0;i<50;i++)//录入每个filed的数据
 {
   scanf("%d %d",&row,&col);
  if((row==0)&&(col==0))
  {
   goto exit;
  }
  b[i]=row;
   field++;
   for(j=0;j<row;j++)//此处录入单个的field的值
   {
    a[i][j]=(char*)malloc(sizeof(char)*(col));
    scanf("%s",a[i][j]);
   }
   for(k=0;k<row;k++)//定位到单个filed中的每个的位,并为其赋新值
   {
    for(l=0;l<col;l++)
    {
     M=0;
     if(k==0)//第一行的情况
     {
      if(*(a[i][0]+l)=='*');
      if(*(a[i][0]+l)=='.')
      {
       if(l==0)
       {
        if(*(a[i][0]+1)=='*')
        M++;
        if(*(a[i][1]+l)=='*')
        M++;
        if(*(a[i][1]+1)=='*')
        M++;
       }
       else if(l==col-1)
       {
        if(*(a[i][0]+l-1)=='*')
        M++;
        if(*(a[i][1]+l-1)=='*')
        M++;
        if(*(a[i][1]+l)=='*')
        M++;
       }
       else
       {
        if(*(a[i][1]+l-1)=='*')
        M++;
        if(*(a[i][1]+l+1)=='*')
        M++;
        if(*(a[i][1]+l)=='*')
        M++;
        if(*(a[i][0]+l-1)=='*')
        M++;
        if(*(a[i][0]+l+1)=='*')
        M++;
       }
      }
     }
     else if(k==row-1)//最后一行的情况
     {
      if(*(a[i][k]+l)=='*');
      if(*(a[i][k]+l)=='.')
      {
       if(l==0)
       {
        if(*(a[i][k-1]+l+1)=='*')
        M++;
        if(*(a[i][k]+l+1)=='*')
        M++;
        if(*(a[i][k-1]+l)=='*')
        M++;
       }
       else if(l==col-1)
       {
        if(*(a[i][k-1]+l-1)=='*')
        M++;
        if(*(a[i][k-1]+l)=='*')
        M++;
        if(*(a[i][k]+l-1)=='*')
        M++;
       }
       else
       {
        if(*(a[i][k-1]+l-1)=='*')
        M++;
        if(*(a[i][k-1]+l+1)=='*')
        M++;
        if(*(a[i][k-1]+l)=='*')
        M++;
        if(*(a[i][k]+l-1)=='*')
        M++;
        if(*(a[i][k]+l+1)=='*')
        M++;
       }
      }
     }
     else//中间行的情况
     {
       if(*(a[i][k]+l)=='*');
      if(*(a[i][k]+l)=='.')
      {
       if(l==0)//靠左计算
       {
        if(*(a[i][k-1]+l)=='*')
        M++;
        if(*(a[i][k-1]+l+1)=='*')
        M++;
        if(*(a[i][k]+l+1)=='*')
        M++;
        if(*(a[i][k+1]+l)=='*')
        M++;
        if(*(a[i][k+1]+l+1)=='*')
        M++;
       }
       else if(l==col-1)//靠右计算
       {
        if(*(a[i][k-1]+l)=='*')
        M++;
        if(*(a[i][k-1]+l-1)=='*')
        M++;
        if(*(a[i][k]+l-1)=='*')
        M++;
        if(*(a[i][k+1]+l)=='*')
        M++;
        if(*(a[i][k+1]+l-1)=='*')
        M++;
       }
       else//靠中列的计算
       {
       for(i1=k-1;i1<=k+1;i1++)
       {
        for(j1=l-1;j1<=l+1;j1++)
        {
         if(*(a[i][i1]+j1)=='*')
         M++;
        }
       }
       }
      }
     }
     if(*(a[i][k]+l)=='.')
     {
     *(a[i][k]+l)=48+M;
     }
    }
    }
 }//结束!
 exit:
 for(i=0;i<field;i++)//输出结果
  {
   printf("Field #%d:\n",i+1);
   for(j=0;j<b[i];j++)
   {
   printf("%s",a[i][j]);
   printf("\n");
   }
   printf("\n");
   }
    for(i=0;i<field;i++) //释放空间
  {
   for(j=0;j<b[j];j++)
   {
    free(a[i][j]);
   }
   }  
 return 0;
 }

 

0.0分

0 人评分

  评论区

  • «
  • »