C语言基础 扫雷

题目:

扫雷。扫雷游戏你一定玩过吧!现在给你若干个n×m的地雷阵,请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数,每个单元格最多有8个相邻的单元格。  0< n,m< =100
(注意两个矩阵之间应该有一个空行,由于oj的格式化这里不能显示出来)
* 输入:
        输入包含若干个矩阵,对于每个矩阵,第一行包含两个整数n和m,分别表示这个矩阵的行数和列数。接下来n行每行包含m个字符。安全区域用‘.’表示,有地雷区域用'*'表示。当n=m=0时输入结束。数据规模和约定:0< n,m< =100
* 输出:
        对于第i个矩阵,首先在单独的一行里打印序号:“Field  #i:”,接下来的n行中,读入的'.'应被该位置周围的地雷数所代替。输出的每两个矩阵必须用一个空行隔开。

注意点:

     1.回车键 容易当成字符被吃掉,在下文有说明

     2.注意程序在一定条件下还将进行二次运行  测试自己的程序时需要在第一次运行完时,再输入测试数据看可不可以运行。

#include"stdio.h"
#include"string.h"
int main()
{
 	int n,m;
    
    char mines[1000][1000]={'\0'};
 	int i,j;
 	int Row,Column;
 	int num=0,count=0;//num周围地雷数 count表 
 	while(n!=0&&m!=0)
 	{
        printf("请分别输入行和列的值:\n");
	  	scanf("%d%d",&n,&m);
	  	getchar();
    	
        count++; //那个表头的数字
 		printf("请输入该矩阵:\n");
  		for(i=1;i<=n;i++)
  		{
   			for(j=1;j<=m;j++)
   			{  
    			scanf("%c",&mines[i][j]);
    			if(mines[i][j]=='\n')//回车容易被吃掉,所以需要加上这一句
    			{
    				j--;
				}
   			} 
  		}    
  
   		printf("Field#%d:\n",count);
   
   		for(i=1;i<=n;i++)
   		{
    		for(j=1;j<=m;j++)
    		{    
     			if(mines[i][j]=='.')
         		{
         			num=0;
              //看八个方位的是否存在地雷 并计数
     				for(Row=i-1;Row<=i+1;Row++)
     				{
      					for(Column=j-1;Column<=j+1;Column++)
      					{
             				if((mines[Row][Column]=='*'))
       						{
        						num++;
       						} 
      					}
    
       			 	}
        			printf("%d",num);
        		
             	}   
              	else
        		{
         			printf("*");
        		}
       		}
       		printf("\n");
   		}
   	}
 	return 0;
} 

下面进行第一回

第二回家人们自己去试一试吧!!!记得输入0 0 结束程序哦!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值