像我这样就出错:
#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;
}
楼上所说属实,但在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.在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个回答 2010-05-15
静态数组声明中是不能有变量的,应该分配为动态数组。
把语句
int a[n][m];
换成如下代码:
int **a=new int*[n];//动态申请数组n个列的指针,以第一阶下标标识每一列
for(i=0;i<n;i++)//循环为每一列申请m个元素,以第二阶下标标识每一行
{
a[i]=new int[m];
}
即可
把语句
int a[n][m];
换成如下代码:
int **a=new int*[n];//动态申请数组n个列的指针,以第一阶下标标识每一列
for(i=0;i<n;i++)//循环为每一列申请m个元素,以第二阶下标标识每一行
{
a[i]=new int[m];
}
即可
第2个回答 2010-05-15
int a[n][m];不能这么做
可以用new动态分配,楼上已经有人说了
不过后面要记得delete释放哦
可以用new动态分配,楼上已经有人说了
不过后面要记得delete释放哦