中易网

VC++中不知二维数组的长度那么怎么定义??????

答案:5  悬赏:60  
解决时间 2021-04-27 14:34
  • 提问者网友:刪除丶後
  • 2021-04-27 08:27
像我这样就出错:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,m,sum=0;
cin>>n>>m;
int a[n][m];
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
cin>>a[i][j];
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
sum+=a[i][j];
cout<<"sum="<<sum<<endl;
return 0;
}
最佳答案
  • 二级知识专家网友:青春如此荒謬
  • 2021-04-27 09:13
楼上所说属实,但在VC6.0等下可能无法编译通过,为了程序通用性,做如下修改:
1.在Main函数上面定义两个宏,限制数组的最大大小
#define MAX_ROW 100//最大行为100行,可根据需要设定最大值
#define MAX_COLUM 100//最大列为100列
将int a[n][m];
替换成语句:
int a[MAX_ROW][MAX_COLUM];
(其他语句不变)

2.动态生成一个二维数组了,将int a[n][m];这行语句替换成以下代码:
int **a;//定义一个二维指针
a=new int* [n];//动态生成指向整形的n个一维数组指针
for ( i=0;i<m;i++)
{
a[i]=new int [m];//动态生成每个指针为指向m个整形空间的一维数组指针
}
全部回答
  • 1楼网友:冷态度
  • 2021-04-27 11:40
int a[n][m];不能这么做 可以用new动态分配,楼上已经有人说了 不过后面要记得delete释放哦
  • 2楼网友:夢想黑洞
  • 2021-04-27 11:12
#include void main(void) int i,j,n; int a[n][n]; cout<<"输入n行n列的二维数组:”; for(i=0;i>a[n][n]; 强调一下n得先初始化,不然会出错的
  • 3楼网友:堕落奶泡
  • 2021-04-27 10:46
静态数组声明中是不能有变量的,应该分配为动态数组。 把语句 int a[n][m]; 换成如下代码: int **a=new int*[n];//动态申请数组n个列的指针,以第一阶下标标识每一列 for(i=0;i<n;i++)//循环为每一列申请m个元素,以第二阶下标标识每一行 { a[i]=new int[m]; } 即可
  • 4楼网友:转身→时光静好
  • 2021-04-27 10:21
您好,这个程序是对的 我在dev-c++中试过了,如果您是OI的话,推荐使用DEV-C++
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息