像我这样就出错:
#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;
}
VC++中不知二维数组的长度那么怎么定义??????
答案:5 悬赏:60
解决时间 2021-04-27 14:34
- 提问者网友:刪除丶後
- 2021-04-27 08:27
最佳答案
- 二级知识专家网友:青春如此荒謬
- 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.在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++
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯