自由如风


私信TA

用户名:uq_11575142564

访问量:117

签 名:

等  级
排  名 29020
经  验 526
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

一遍写完,没做优化,跟着代码走读就能理解
参考代码:

#include <stdio.h>
void InitBoard(char board[100][100], int row, int col)
{
	getchar();//取\n
	int i = 0;
	int j = 0;
	for (i = 1; i <= row; i++)
	{
		for (j = 1; j <= col; j++)
		{
			board[i][j] = getchar();
		}
		getchar();//取\n
	}
}
int get_count(char board[100][100], int i, int j)
{
	int count = 0;
	if (board[i-1][j-1] == '*') count++;
	if (board[i-1][j] == '*') count++;
	if (board[i-1][j+1] == '*') count++;
	if (board[i][j-1] == '*') count++;
	if (board[i][j] == '*') count++;
	if (board[i][j+1] == '*') count++;
	if (board[i+1][j-1] == '*') count++;
	if (board[i+1][j] == '*') count++;
	if (board[i+1][j+1] == '*') count++;
	return count+48;//char类型,于是通过ASCII码表来转换 0 + 48 = '0'
}

void CheckBoard(char board[100][100], int row, int col)
{
	int i = 0;
	for (i = 1; i <= row; i++)
	{
		int j = 0;
		for (j = 1; j <= col; j++)
		{
			if (board[i][j] == '*')
			{
				continue;
			}
			else
			{
				board[i][j] = (char)get_count(board, i, j);
			}
		}
	}
}
void print(char board[100][100], int row, int col, int count)
{
	printf("Field #%d:\n", count);
	int i = 0;
	for (i = 1; i <= row; i++)
	{
		int j = 0;
		for (j = 1; j <= col; j++)
		{
			printf("%c", board[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}
int main(void)
{
	int row, col;
	char board[100][100] = {0};
	int count = 1;
	while (~scanf("%d%d", &row, &col))
	{
		if (row == 0 && col == 0)
		{
			return 0;
		}
		InitBoard(board, row, col);
		CheckBoard(board, row, col);
		print(board, row, col, count);
		
		count++;
	}


	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »