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

题目是:
—————————————————————————————————
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那么体贴啊......

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

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

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

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

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

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

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

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-12-05
vector<类型> 数组名;
数组名.resize(数组长度); //注意此语句须在主函数内执行
或者你不需要用变量作为长度,你完全可以用n的最大值作为数组长度(如果题目中有)
第2个回答  2008-10-18
这个你可以不用给数组a定义长度,把第九行改为int a[];就行了。
你可以用变量n控制数组的长度,但是不能用变量定义数组长度。
第3个回答  推荐于2017-10-15
如何在数组定义时,数组的长度用一个变量
问题:在整个程序中的前半部分计算了一个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;
}
第4个回答  推荐于2017-09-13
很简单,用动态分配函数malloc就可以了.
int n;
cin>>n;
int*a=(int*)malloc(n*sizeof(int));
这时a就相当于数组名,如a[0]=1;a[2]=5;本回答被提问者采纳

C++里如何实现用变量定义数组的长度
1、首先,定义一个自定义函数,实现字符数组长度的判断。2、自定义函数中,定义一个整型变量i,用来计算字符数组的长度。3、函数中,用while循环实现字符数组长度的判断。4、主函数中,先保存一个整型变量,保存计算出的字符串数组长度。5、接着,定义一个字符串数组,保存统计的字符串。6、输入统计的...

在C++中如何以变量建数组(求一些巧方法)
数组是做为静态变量出现的,其大小不允许进行动态定义是很正常的。如果需要动态定义数组的长度的话,就必须使用指针(数组的变量名就是一个指向数组空间的指针常量),利用new运算符动态的定义“数组”空间的大小。其示例如下:int n;cin >> n;int *a = new int[n];int i;for (i = 0 ; i <...

C++怎样动态设定数组的长度?(把数组长度用变量表示,通过输入确定长度的...
cout<<"输入元素个数:";p=new int[a];for(int i=0;i>p[i];

在C++中如何给字符串数组定义长度呢?
所谓数组就是根据类型来分配内存空间; 那么: 类型*定义的个数=内存上所占的空间大小; 在C++中,可以有字符数组一般的格式是:char 数组名 [个数];在内存中是一单个储存的:列如:char string[27]={"hao ma wo "}; 在内存中是: string[1] [2][3] [4] [5] [6] [7] [8] [...

C++ 使用变量声明数组长度
C++中无法使用变量作为数组长度,必须使用常量。原因在于数组空间分配在栈内存中,这部分空间大小必须在编译时就确定,不能等到运行时再分配。常量值在编译时就确定,而变量须运行时才能确定。因此,若要使用变量声明数组长度,可以选择将数组空间开辟在堆内存中。采用这种方法,虽然灵活性增强,但在内存管理...

c++动态定义数组长度
你可以先定义一个全局指针变量(如果要求整型数组的话就是int* a,字符型就是char* a等),指针你可以把它理解成数组int a[],这里数组a就相当于int*a,但这时指针还没有分配内存空间,只要分配了就相当于数组,但比数组的优势在于可以动态定义长度,如果分配了空间之后a中存储的值就是分配的空间的...

怎么用C++数组输入一个整数i, i
1、首先在电脑中,找到并打开Visual C++6.0,然后新建一个文件。2、接着在操作页面中,敲好函数库文件名代码,如下图所示。3、然后宏定义一个变量(表示为常量,作为数组长度),如下图所示。4、然后使用循环语句,输入数组各元素值,如下图所示。5、最后使用循环语句输出数组各元素值,就完成了。

C++如何定义一个长度超过一百万的数组
看看数组占用的内存大小:1000000=1000*1000然后乘以int型数据长度 1000*1000*4byte约等于4M,而栈的默认内存空间为1M左右,所以会导致内存溢出 解决这个问题,可以将数组申明在全局存储区或堆上即可 方法一:申明为全局变量 include<iostream>#include<algorithm>using namespace std;int list[1000000];\/\/...

c++中二维数组长度如何设置为键盘输入的变量?
首先,声明一个指向要实现的数组的数据类型的指向一维指针数组的指针(2级指针)。例如int **p[] (格式应该是这样的吧)然后用输入分配一维指针数组的大小 然后再分配每个指针指向空间的大小 使用时用指针代替数组名就行了,如:p[2][0] 代替a[2][0]嘎嘎……还是在眼前写的程序里发现了这个代码...

C\/C++变量定义数组长度问题
编译都过不了。而后来的有些C++的编译器允许这样做的,但大多数用来做定义数组长度的变量要用const修饰,叫值不变变量,但纯C编译器即使用const修饰的变量也不允许用来定义数组长度。你说的“C和C++”都是允许的可能是你的编译器是C++兼容C的,时下纯C编译器已经很难遇到了……供参考。

相似回答