解题思路: 简单阐述一下题目,就是先输入x,y分别为二维数组行和列,然后输入一个扫雷二维数组,' . '为要填数字的地方,' * ' 是雷的地方,需要遍历周围的8个格确定有几个雷,然后打在屏幕上,有雷的地方就标雷,话不多说,直接上代码.
参考代码:
#includeusing namespace std; char a[101][101]; //用来存放输入的数组 char ans[101][101]; //存放答案的数组 int nx[8] = {1,1,1,0,-1,-1,-1,0}; int ny[8] = {1,0,-1,1,1,0,-1,-1};//这两个数组用来遍历周围8个格子 int x,y,i,j; main() { for(int c=0; ;c++) { cin >> x >> y; if(x==0&&y==0)//如果为0 0则跳出死循环 break; for(i=0;i<x;i++) //输入二维数组 for(j=0;j> a[i][j]; for(i=0;i<x;i++) { for(j=0;j<y;j++) { if(a[i][j]=='*') //为雷则标雷 { ans[i][j] = '*'; continue; } int sum = 0; for(int k=0;k<8;k++) { int newx = i+nx[k]; int newy = j+ny[k];//循环判断周围的点是否为雷 if(newx<0||newy<0) continue; if(a[newx][newy]=='.') continue; else if(a[newx][newy]=='*') { sum++; } } ans[i][j] = sum+'0';//因为要用字符存因此要加'0' } } cout<<"Field #"<<c+1<<":"<<endl; for(int i=0;i<x;i++) { for(int j=0;j<y;j++) cout<<ans[i][j]; cout<<endl; } cout<<endl; } }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:792 |
C语言程序设计教程(第三版)课后习题5.8 (C++代码)浏览:693 |
回文数字 (C++代码)浏览:890 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:704 |
震宇大神的杀毒软件 (C语言代码)浏览:1348 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:773 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1292 |
WU-小九九 (C++代码)浏览:1713 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |