|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<bits/stdc++.h>
using namespace std;
char search(int m,const char a[][m],int i,int j,int n) //显示此处二维数组报错
{
int cnt = 0;
if(j-1 >= 0 && a[i][j-1] == '*') cnt++;
if(j+1 <= m && a[i][j+1] == '*') cnt++;
if(i-1 >= 0 && a[i-1][j] == '*') cnt++;
if(i+1 <= n && a[i+1][j] == '*') cnt++;
if(j-1 >= 0 && i-1 >= 0 && a[i-1][j-1] == '*') cnt++;
if(j+1 <= m && i-1 >= 0 && a[i-1][j+1] == '*') cnt++;
if(j-1 >= 0 && i+1 <= n && a[i+1][j-1] == '*') cnt++;
if(j+1 <= m && i+1 <= n && a[i+1][j+1] == '*') cnt++;
return cnt + '0';
}
int main()
{
int n,m;
cin >> n >> m;
char a[n][m];
for(int i = 0;i < n;i++)
{
for(int j = 0;j < m;j++)
{
cin >> a[i][j];
}
}
char b[n][m];
for(int i = 0;i < n;i++)
{
for(int j = 0;j < m;j++)
{
if(a[i][j] == '*')
{
b[i][j] == '*';
}
else if(a[i][j] == '?')
{
b[i][j] = search(m,&a,i,j,n);
}
}
}
for(int i = 0;i < n;i++)
{
for(int j = 0;j < m;j++)
{
cout << b[i][j];
}
cout << endl;
}
return 0;
}
二维数组 传参有好几种方式,但是没有你这种方式。。。。
这种写法的话,第二维必须是固定值。但是你的这个程序第二维不是固定值,那么就不能用这种方式写。
给你两种方式,第一种,在主函数中定义的时候就不用数组,直接用二维指针,那么传参直接使用二维指针即可,不用考虑第二维是否是固定值的问题;第二中,通过降维处理,传递一个地址过去,函数中用一维指针即可
第一种方式我就不帮你写了
第二种如下
- #include<bits/stdc++.h>
- using namespace std;
- char search(int m, char *a,int i,int j,int n) //显示此处二维数组报错
- {
- int cnt = 0;
- if(j-1 >= 0 && a[i*n+j-1] == '*') cnt++;
- if(j+1 <= m && a[i*n+j+1] == '*') cnt++;
- if(i-1 >= 0 && a[(i-1)*n+j] == '*') cnt++;
- if(i+1 <= n && a[(i+1)*n+j] == '*') cnt++;
- if(j-1 >= 0 && i-1 >= 0 && a[(i-1)*n+j-1] == '*') cnt++;
- if(j+1 <= m && i-1 >= 0 && a[(i-1)*n+j+1] == '*') cnt++;
- if(j-1 >= 0 && i+1 <= n && a[(i+1)*n+j-1] == '*') cnt++;
- if(j+1 <= m && i+1 <= n && a[(i+1)*n+j+1] == '*') cnt++;
-
- return cnt + '0';
- }
- int main()
- {
- int n,m;
- cin >> n >> m;
- char a[n][m];
- for(int i = 0;i < n;i++)
- {
- for(int j = 0;j < m;j++)
- {
- cin >> a[i][j];
- }
- }
- char b[n][m];
- for(int i = 0;i < n;i++)
- {
- for(int j = 0;j < m;j++)
- {
- if(a[i][j] == '*')
- {
- b[i][j] == '*';
- }
- else if(a[i][j] == '?')
- {
- b[i][j] = search(m,&a[0][0],i,j,n);
- }
- }
- }
- for(int i = 0;i < n;i++)
- {
- for(int j = 0;j < m;j++)
- {
- cout << b[i][j];
- }
- cout << endl;
- }
-
- return 0;
- }
复制代码
|
|