【发布时间】:2020-12-09 17:33:05
【问题描述】:
#include<iostream>
using namespace std;
int n;
int diagonal(int m[][n]){
int r = 0,l = 0;
for(int i=0;i<n;i++){
l += m[i][i];
r += m[n-i][i];
}
if(r>l) return r - l;
else return l - r;
}
int main(){
cin >> n;
int a[n][n];
for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin >> a[i][j];
cout << diagonal(a) << endl;
return 0;
}
我不知道为什么我在上面的代码中运行时出错。
错误1:数组绑定不是']'标记之前的整数常量,如果我从用户那里获取常量值,我应该如何传递它。
错误 2:未在此范围内声明“n”
6 | for(int i=0;i
【问题讨论】:
-
运行时可以切换到
std::vector<std::vector<int>>,并提供.size()方法查询元素个数 -
int a[n][n];是无效的 C++(使用 VLA 扩展)。 -
如果必须使用数组,为什么不将
n作为单独的参数传递呢? (另外,你没有在main中声明n。) -
无论哪本 C++ 教科书给出了将
int m[][n]作为函数参数传递的示例——这不是有效的 C++,因此您应该获得更好的 C++ 教科书并扔掉它。
标签: c++ multidimensional-array c++14