#include<bits/stdc++.h> using namespace std; int s[101][101]; int main() { int n,m; char a; cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a; if(a=='*') { s[i][j]=-100000; s[max(i-1,0)][max(j-1,0)]++; s[max(i-1,0)][j]++; s[max(i-1,0)][j+1]++; s[i][max(j-1,0)]++; s[i][max(j,m)]++; s[max(i,n)][max(j-1,0)]++; s[max(i,n)][j]++; s[max(i,n)][max(j,m)]++; } } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(s[i][j]) cout<<s[i][j]; else cout<<'*'; } cout<<endl; } return 0; } 有什么问题
时间: 2024-04-26 13:21:54 浏览: 70
这是一个扫雷游戏的代码,对于每个输入的字符为'*'的位置,将该位置的s数组设为-100000,并在该位置周围的8个位置的s数组都加1。最后输出s数组,如果该位置的值不为0,则输出该位置的数值,否则输出'*'。但是代码存在一些问题:
1.对于输入的字符不为'*'的位置,s数组没有初始化,输出时会出现错误的结果。
2.在更新周围8个位置的s数组时,max(i-1,0)和max(j-1,0)的作用是保证i-1和j-1不会小于0,但是更新右下角的位置时max(i,n)和max(j,m)会导致数组越界,程序会崩溃。
3.程序没有进行边界处理,当输入的n和m都为1时,程序会输出错误的结果。
相关问题
#include<bits/stdc++.h> using namespace std; int main() { }这是什么
这是一个 C++ 代码的基本框架。代码包含了头文件 `<bits/stdc++.h>`,这是一个包含了所有 C++ 标准库头文件的头文件,可以方便地使用 C++ 标准库中的各种函数和类。
在 `main()` 函数内部,可以编写代码实现具体的功能逻辑。这段框架代码中没有任何实际的功能实现,只是一个空壳。
#include<bits/stdc++.h> using namespace std; int main(){ double a,s,d,f,g,h; cin>>a>>s>>d>>f>>g>>h; printf("%.2f",(a+s+d+f+g+h)/6); }
这段代码是一个简单的 C++ 程序,它读取六个浮点数,计算它们的平均值,并输出结果保留两位小数。
代码中的 `#include<bits/stdc++.h>` 是一个常见的 C++ 头文件包含方式,它包含了大部分常用的标准库和容器,以及输入输出流等。
`using namespace std;` 是使用了命名空间 std,使得在代码中可以直接使用 std 命名空间下的函数和对象,而不需要加上 std:: 前缀。
在 `main()` 函数中,通过 `cin` 对象连续读取六个浮点数,并将它们分别赋值给变量 a、s、d、f、g、h。
然后,通过 `(a+s+d+f+g+h)/6` 的计算得到这六个数的平均值。最后使用 `printf("%.2f", ...)` 以保留两位小数的格式输出结果。
注意,这段代码没有进行输入的合法性检查,如果输入的不是有效的浮点数,可能会导致程序出错。在实际应用中,可
阅读全文