Language: C

#include <stdio.h>
#include <stdlib.h>

typedef struct Bomb
{
	int map[8][8];
} BOMB;

void Input(BOMB *);
void Output(BOMB *);
void explode(BOMB);

int main()
{
	int input_times, input_cnt;
	BOMB bomb[50];
	int x, y;
	
	/*Read input and process*/
	scanf("%d", &input_times);
	for(input_cnt = 0; input_cnt < input_times; input_cnt++){
		Input(&bomb[input_cnt]);
		scanf("%d", x);
		scanf("%d", y);
		bomb[input_cnt].map[x - 1][y - 1] = 2;
		explode(&bomb[input_cnt]);
	}
	/*Output*/
	for(input_cnt = 0; input_cnt < input_times; input_cnt++){
		printf("Data %d:\n", input_cnt + 1);
		Output(bomb[input_cnt]);
	}
	

	return 0;
} 

Input(BOMB *bomb_ptr)
{
	char dump;
	int x_cnt, y_cnt;
	dump = getchar();
	for(y_cnt = 0; y_cnt < 8; y_cnt++){
		dump = getchar();
		for(x_cnt = 0; x_cnt < 8; x_cnt++)
			bomb_ptr->map[x_cnt][x_cnt] = getchar() - 48;	/*ASCII table*/
	}
}

Output(BOMB *bomb_ptr)
{
	int x_cnt, y_cnt;
	for(y_cnt = 0; y_cnt < 8; y_cnt++)
	{
		for(x_cnt = 0; x_cnt < 8; x_cnt++)
			printf("%d", bomb_ptr->map[x_cnt][y_cnt]);
		printf("\n");
	}
}

void explode(BOMB *bomb_ptr)
{
	int x_cnt, y_cnt;
	int explode_cnt;
	for(y_cnt = 0; y_cnt < 8; y_cnt++)
		for(x_cnt = 0; x_cnt < 8; x_cnt++)
			/*Find exploded bomb and process*/
			if(bomb_ptr->map[x_cnt][y_cnt] == 2)
			{
				bomb_ptr->map[x_cnt][y_cnt] = 0;
				/*Left*/
				explode_cnt = 1;
				while((x_cnt - explode_cnt) >= 0 && explode_cnt <= 3)
				{
					if((bomb_ptr->map[x_cnt - explode_cnt][y_cnt]) == 1)
						(bomb_ptr->map[x_cnt - explode_cnt][y_cnt]) = 2;
					explode_cnt++;
				}
				/*Right*/
				explode_cnt = 1;
				while((x_cnt + explode_cnt) <= 7 && explode_cnt <= 3)
				{
					if((bomb_ptr->map[x_cnt + explode_cnt][y_cnt]) == 1)
						(bomb_ptr->map[x_cnt + explode_cnt][y_cnt]) = 2;
					explode_cnt++;
				}
				/*Down*/
				explode_cnt = 1;
				while((y_cnt - explode_cnt) >= 0 && explode_cnt <= 3)
				{
					if((bomb_ptr->map[x_cnt][y_cnt - explode_cnt]) == 1)
						(bomb_ptr->map[x_cnt][y_cnt - explode_cnt]) = 2;
					explode_cnt++;
				}
				/*Up*/
				explode_cnt = 1;
				while((y_cnt + explode_cnt) <= 7 && explode_cnt <= 3)
				{
					if((bomb_ptr->map[x_cnt][y_cnt + explode_cnt]) == 1)
						(bomb_ptr->map[x_cnt][y_cnt + explode_cnt]) = 2;
					explode_cnt++;
				}
				explode(bomb_ptr);
			}
}

Compiler output:
main.c: In function 'main':
main.c:26:25: error: incompatible type for argument 1 of 'explode'
   26 |                 explode(&bomb[input_cnt]);
      |                         ^~~~~~~~~~~~~~~~
      |                         |
      |                         BOMB * {aka struct Bomb *}
main.c:11:14: note: expected 'BOMB' {aka 'struct Bomb'} but argument is of type 'BOMB *' {aka 'struct Bomb *'}
   11 | void explode(BOMB);
      |              ^~~~
main.c:31:28: error: incompatible type for argument 1 of 'Output'
   31 |                 Output(bomb[input_cnt]);
      |                        ~~~~^~~~~~~~~~~
      |                            |
      |                            BOMB {aka struct Bomb}
main.c:10:13: note: expected 'BOMB *' {aka 'struct Bomb *'} but argument is of type 'BOMB' {aka 'struct Bomb'}
   10 | void Output(BOMB *);
      |             ^~~~~~
main.c: At top level:
main.c:38:1: error: return type defaults to 'int' [-Wimplicit-int]
   38 | Input(BOMB *bomb_ptr)
      | ^~~~~
main.c:38:1: warning: conflicting types for 'Input'
main.c:9:6: note: previous declaration of 'Input' with type 'void(BOMB *)' {aka 'void(struct Bomb *)'}
    9 | void Input(BOMB *);
      |      ^~~~~
main.c:50:1: error: return type defaults to 'int' [-Wimplicit-int]
   50 | Output(BOMB *bomb_ptr)
      | ^~~~~~
main.c:50:1: warning: conflicting types for 'Output'
main.c:10:6: note: previous declaration of 'Output' with type 'void(BOMB *)' {aka 'void(struct Bomb *)'}
   10 | void Output(BOMB *);
      |      ^~~~~~
main.c:61:6: error: conflicting types for 'explode'; have 'void(BOMB *)' {aka 'void(struct Bomb *)'}
   61 | void explode(BOMB *bomb_ptr)
      |      ^~~~~~~
main.c:11:6: note: previous declaration of 'explode' with type 'void(BOMB)' {aka 'void(struct Bomb)'}
   11 | void explode(BOMB);
      |      ^~~~~~~