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

题目是:—————————————————————————————————ProblemC:鸡兔同笼TimeLimit:1000MSMemoryLimit:65536KT... 题目是:
—————————————————————————————————
Problem C:鸡兔同笼
Time Limit:1000MS Memory Limit:65536K
Total Submit:4275 Accepted:2591

Description
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物

Input
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)

Output
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开
如果没有满足要求的答案,则输出两个0。

Sample Input

2
3
20

Sample Output

0 0
5 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 Error

Main.cpp
640087.3746\Main.cpp(9) : error C2133: 'a' : unknown size

—————————————————————————————————

主要问题在于数组(a[n])的定义,请问C++里如何实现用变量定义数组的长度,请高手给出详细完整的程序代码好吗,谢谢了。

另外,能弱弱地要求一下,程序请中不要出现太过复杂,高深和冷僻的语句和函数,我还是一个大一的菜鸟,尽管VB用的还可以,但是C++实在是不如VB那么体贴啊......
展开
 我来答
刺友互
高粉答主

2019-09-27 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:73万
展开全部

1、首先,定义一个自定义函数,实现字符数组长度的判断。

2、自定义函数中,定义一个整型变量i,用来计算字符数组的长度。

3、函数中,用while循环实现字符数组长度的判断。

4、主函数中,先保存一个整型变量,保存计算出的字符串数组长度。

5、接着,定义一个字符串数组,保存统计的字符串。

6、输入统计的字符串,保存在数组str中。

7、计算字符串数组的长度,保存在变量n中。

8、最后,输出计算得到的字符串长度。

yujieanna
2021-12-05 · TA获得超过206个赞
知道答主
回答量:84
采纳率:33%
帮助的人:32.4万
展开全部
vector<类型> 数组名;
数组名.resize(数组长度); //注意此语句须在主函数内执行
或者你不需要用变量作为长度,你完全可以用n的最大值作为数组长度(如果题目中有)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祁连子
2008-10-18
知道答主
回答量:39
采纳率:0%
帮助的人:0
展开全部
这个你可以不用给数组a定义长度,把第九行改为int a[];就行了。
你可以用变量n控制数组的长度,但是不能用变量定义数组长度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
许诗文00
推荐于2017-10-15 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26.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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
T__jun
推荐于2017-09-13 · TA获得超过347个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:114万
展开全部
很简单,用动态分配函数malloc就可以了.
int n;
cin>>n;
int*a=(int*)malloc(n*sizeof(int));
这时a就相当于数组名,如a[0]=1;a[2]=5;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式