为了账号安全,请及时绑定邮箱和手机立即绑定

C++里如何实现用变量定义数组的长度

C++里如何实现用变量定义数组的长度

C++
繁星淼淼 2019-03-31 08:00:04
题目是:—————————————————————————————————Problem C:鸡兔同笼 Time Limit:1000MS Memory Limit:65536KTotal Submit:4275 Accepted:2591 Description一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物Input第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)Output输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开 如果没有满足要求的答案,则输出两个0。 Sample Input2320Sample Output0 05 10—————————————————————————————————我的程序是:—————————————————————————————————#include<iostream>#include<math.h>using namespace std;int main(){int n,i,j;cin>>n;int a[n];for(i=0;i<n;i++){cin>>a[i];}for(j=0;j<n;j++){if(a[j]%2!=0) cout<<"0 0"<<endl;if(a[j]%2==0) cout<<int((a[j]+2)/4)<<" "<<a[j]/2<<endl;}return 0;}—————————————————————————————————在Code::Blocks下编译运行都没有问题,但在C++环境下编译出现问题:—————————————————————————————————Compile ErrorMain.cpp640087.3746\Main.cpp(9) : error C2133: 'a' : unknown size—————————————————————————————————主要问题在于数组(a[n])的定义,请问C++里如何实现用变量定义数组的长度,请高手给出详细完整的程序代码好吗,谢谢了。
查看完整描述

4 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

很简单,用动态分配函数malloc就可以了.
int n;
cin>>n;
int*a=(int*)malloc(n*sizeof(int));
这时a就相当于数组名,如a[0]=1;a[2]=5;

查看完整回答
反对 回复 2019-04-03
?
达令说

TA贡献1821条经验 获得超6个赞

如何在数组定义时,数组的长度用一个变量
问题:在整个程序中的前半部分计算了一个n的值,在后面想用这个n的值定义一个n维的数组,如何解决?

错误方法:int a[n],C不认。
解决方法:
1.用vector类
2.用malloc函数
#include <stdlib.h>
int main(void)
{
int *a;

int n,i;
scanf("%d",&n);
a=malloc(sizeof(int)*n);
for (i=0;i<n;i++)
a[i]=i;
free(a);/*释放malloc()分配的空间*/
return 0;
}



查看完整回答
反对 回复 2019-04-03
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

数组长度必须在编译时就已确定
c++可以用new表达式动态分配数组和用delete撤消
#include<iostream>
#include<math.h>
using namespace std;

int main()
{
int n,i,j;
cin>>n;
int *a;
a=new int[n]; //new表达式返回新分配数组的第一个元素的指针
for(i=0;i<n;i++) //撤消时可用delete[]a;
{
cin>>a[i];
}
for(j=0;j<n;j++)
{
if(a[j]%2!=0) cout<<"0 0"<<endl;
if(a[j]%2==0) cout<<int((a[j]+2)/4)<<" "<<a[j]/2<<endl;
}
return 0;
}



查看完整回答
反对 回复 2019-04-03
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

这个你可以不用给数组a定义长度,把第九行改为int a[];就行了。
你可以用变量n控制数组的长度,但是不能用变量定义数组长度。

查看完整回答
反对 回复 2019-04-03
  • 4 回答
  • 0 关注
  • 3540 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信