如果条件块内部没有打印任何值。逻辑错误在哪里?谢谢。
#include<bits/stdc++.h>
using namespace std;
int fx[]= {-1,-1,-1,0,1,1,1,0};
int fy[]= {-1,0,1,1,1,0,-1,-1};
int ar[20][20];
int n;
int v1, v2;
void fun(int a, int b)
{
for(int i=0; i<8; i++)
{
v1 = a+fx[i];
v2 = b+fy[i];
//cout<<v1<<" "<<v2<<endl;
if(v1>=0 && v1<n)
{
if(v2>=0 && v2<n)
{
// Not executing
cout<<"----------"<<endl;
cout<<v1<<" "<<v2<<endl;
}
}
}
}
int main()
{
int n;
cin>> n;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cin>> ar[i][j];
}
fun(0,1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
样本输入:
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
预期输出:
---------
0 2
1 2
1 1
1 0
0 0
您有 2 个变量n,一个是全局变量(带值0),一个是main通过输入提供的。
fun 使用全局的。
避免(非常量)全局变量。更喜欢传递n给fun:
void fun(int (&arr)[20][20], int n, int x, int y)
{
const int fx[]= {-1,-1,-1,0,1,1,1,0};
const int fy[]= {-1,0,1,1,1,0,-1,-1};
for(int i=0; i<8; i++)
{
int v1 = x + fx[i];
int v2 = y + fy[i];
if(v1>=0 && v1<n && v2>=0 && v2<n)
{
std::cout << "----------" << std::endl;
std::cout << v1 << " " << v2 << std::endl;
}
}
}
int main()
{
int n;
std::cin >> n;
int arr[20][20];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
std::cin >> arr[i][j];
}
}
fun(arr, n, 0, 1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |