主函数中输入的变量q好像没有传给子函数,导致可以询问无限次……
请问怎么在只改动子函数的条件下对代码进行改动啊……
#include<stdio.h>
void work(int mp[][210],int q);
int main(){
int mp[210][210];
int n,m,q,i,j;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%d",&mp[i][j]);
}
}
scanf("%d",&q);
work(mp,q);
}
void work(int mp[][210],int q)
{
int count = 0,i,j,x,y;
for(i = 1;i < q;i++)
{
count = 0;
scanf("%d %d",&x,&y);
if(mp[x][y] == 1)
{
printf("Boom!\n");
}
if(mp[x][y] != 1)
{
for(i = x - 1;i <= x + 1;i++)
{
for(j = y - 1;j <= y + 1;j++)
{
if(mp[i][j] == 1)
count++;
}
}
printf("%d\n",count);
}
}
}
给出一个n∗m大小的网格,坐标从(1,1)开始,在这个网格中每个格子会有一个数字0或者1。0代表这是一个安全区域,1代表这个位置存在一个地雷,接下来我们给出q次询问,每次询问一个坐标(x,y),如果这个位置是一个地雷,那么输出Boom!,如果是一个安全区域,请你输出以他为中心的一个3*3区域内地雷的个数
下方主程序已经编写完成,请参照主函数,编写无返回值的work函数,C语言提交时仅提交work函数
#include<stdio.h>
void work(int mp[][210],int q);
int main(){
int mp[210][210];
int n,m,q,i,j;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%d",&mp[i][j]);
}
}
scanf("%d",&q);
work(mp,q);
}
输入格式:
第一行输出n,m(0<n,m<=200)代表网格的大小
接下来n行,每一行输入m个数字,代表这个格子内的状态
接下来输入一个q(0<q<=1000)代表q次询问
接下来q行每一行输入两个数字 x,y(0<x<=n,0<y<=m)代表查询的位置
输出格式:
对于每次询问输出Boom!或者周围地雷数量
输入样例:
3 3
1 0 1
0 1 0
1 0 1
9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
输出样例:
Boom!
3
Boom!
3
Boom!
3
Boom!
3
Boom!