mydjm

 

地雷问题

先输入矩阵行列数 然后输入矩阵元素 为“*”或者“.”。 如果是*,则输出*,如果是.,则输出周围的地雷数

输入:

4 4 

*...

....

.*..

....

输出:

*100

2210

1*10

1110

 

输入:

3 5

**...

.....

.*...

输出:

**...

33200

1*100

 

 1 #include<stdio.h>
2 void main()
3 {
4 char c[10][10],h;
5 int i,j,m,n,count=0;
6 scanf("%d %d%c",&m,&n,&h);//m表示行 n表示列,加个h吸收回车
7 for(i=0;i<m;i++)
8 for(j=0;j<=n;j++)//用最后一个n来吸收与每一行的回车
9 scanf("%c",&c[i][j]);//输入所有矩阵元素
10 for(i=0;i<m;i++)
11 for(j=0;j<n;j++)
12 {
13 if(c[i][j]=='*') continue;
14 if(c[i][j]=='.')
15 {
16 if((i-1)>=0 && (j-1)>=0 && c[i-1][j-1]=='*')
17 count++;//左上
18 if((i-1)>=0 && c[i-1][j]=='*')
19 count++;//
20 if((i-1)>=0 && (j+1)<n &&c[i-1][j+1]=='*')
21 count++;//右上
22 if((j+1)<n && c[i][j+1]=='*')
23 count++;//
24 if((i+1)<m && (j+1)<n && c[i+1][j+1]=='*')
25 count++;//右下
26 if((i+1)<m && c[i+1][j]=='*')
27 count++;//
28 if((i+1)<m && (j-1)>=0 && c[i+1][j-1]=='*')
29 count++;//左下
30 if((j-1)>=0 && c[i][j-1]=='*')
31 count++;//
32 }
33 c[i][j]=count+48;
34 count=0;
35 }
36 for(i=0;i<m;i++)
37 for(j=0;j<n;j++)
38 {
39 printf("%c",c[i][j]);
40 if(j!=0 && j%(n-1)==0) printf("\n");
41 }
42 return;
43
44 }//一开始没有加个h吸收 m n后面的回车
45 //还有最后的判断没有加上j!=0 导致换行数多了一倍

一开始忘了给m n后面吸收回车,导致数组c的第一个吸了回车。。

最后的换行判断,没有去掉j不等于0的情况,于是就很多换行。。。

还是懒得去加循环输入了。。。直接press any key to退出多好 哈哈

cnblog不太好用啊。。编辑了两次图片才出来。。

posted on 2011-11-14 20:17  mydjm  阅读(165)  评论(0编辑  收藏  举报

导航