中易网

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

答案:5  悬赏:60  
解决时间 2021-04-27 14:34
像我这样就出错:
#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个整形空间的一维数组指针
}
全部回答
int a[n][m];不能这么做 可以用new动态分配,楼上已经有人说了 不过后面要记得delete释放哦
#include void main(void) int i,j,n; int a[n][n]; cout<<"输入n行n列的二维数组:”; for(i=0;i>a[n][n]; 强调一下n得先初始化,不然会出错的
静态数组声明中是不能有变量的,应该分配为动态数组。 把语句 int a[n][m]; 换成如下代码: int **a=new int*[n];//动态申请数组n个列的指针,以第一阶下标标识每一列 for(i=0;i<n;i++)//循环为每一列申请m个元素,以第二阶下标标识每一行 { a[i]=new int[m]; } 即可
您好,这个程序是对的 我在dev-c++中试过了,如果您是OI的话,推荐使用DEV-C++
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
面对深爱的前女友,见面了彼此的感情比 在一
怎样将网页上的文章复制粘贴到别处?
永恒之塔启动游戏后瞬间闪灭,怎么回事?
寻仙驭剑游侠的侍宠应该怎么学技能
建筑中防烟分区时如何划分的
关于服务器和SQL的问题
那里卖装厥菜的塑料捅
东风雪铁龙c52.0l的发动机介绍
dnf震魂香怎么做?
原子自组装纳米球固体润滑剂价格多少
剑河大桥/太极湖东路(路口)地址在哪,我要去
怎么样才能最有效果的练出腹部肌肉?我想要最
玩什么送QQ加速卡
另一只猴子也抱着一根河上飘来的圆木浮过去了
QQ飞车里几开什么最有几率得永久A车的?
推荐资讯
之前就用的是NOD32 可现在到期了,如果我重装
悬赏!1991年农历6月14日是什么星座
哪里有回收旧液化气罐
F12006年上海大奖赛
阿修罗加点,详细点
谁来帮助我?
有什么最简单的方法能把脸减下来?
2016年广西农村的低保发放了吗?
张学友的劲歌好还是刘德华的好
英语翻译:Thank you for your letter dated
农场与牧场的小问题
盛顺纪念小学地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?