C/C++:如何定义一个由用户自己从键盘输入长度的一维数组?请用C和C++分别说一下,并打一下代码,谢谢了

如题所述

1、数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。

2、数组元素的一般形式,数组名 [下标],其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。

3、a[5];a[i+j];a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数才能使用下标变量。

4、逐个输出各下标变量:for(i=0; i<10; i++),printf("%d";a[i);而不能用一个语句输出整个数组。

5、用来存放字符量的数组称为字符数组,字符数组的定义形式与前面介绍的数值数组相同。

6、由于字符型和整型通用,也可以定义为int c[10],但这时每个数组元素占2个字节的内存单元。字符数组也可以是二维或多维数组。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-21
c99标准才支持,变长数组。你的编译器不一定能编译通过。

----------------------------------

int n;
scanf ("%d", &n);
int array[n]
---------------------------------

C++ 语言使用变长数组语法一样
------------------------------------------

int n;
cin >> n

int array[n]
---------------------------------------------------
另外可以使用
vector.追问

谢谢了,不过不行诶

第2个回答  2013-03-21
int n;
cout<<"请输入需要多少个数:";
cin>>n;
int a[n];
cout<<"请输入"<<n<<"个数:\n“;
for(int i=0;i<n;i++)
cin>>a[i];
cout<<a<<endl;
system("pause");
return 0;追问

谢谢了,不过不行诶

追答

C++的写法,没问题

第3个回答  2013-03-21
#include<stdio.h>
int main()
{
int i,count;
printf("请输入你要定义数组大小");
scanf("%d",&count);
int a[count];
for(i=0;i<count;i++)
{
printf("请输入要存入数组的第%d数!",i+1);
scanf("%d",a[i]);
}
}追问

谢谢了,不过这个不行吧,你自己试试

追答

#include
int main()
{
int i,count;
cout>count;
int *a=NULL;
a=(int *)malloc(sizeof(int));

for(i=0;i>a[i];
}
cout<<"数组: "<<endl;
for(i=0;i<count;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
system("pause");
free(a);
return 0;

}

追问

谢谢了,不过晚了点,下次加油吧

第4个回答  推荐于2017-11-25
C++的代码:
int N = 0;
cin>>N;
int *p= new int[N]; //动态分配N个元素的int数组,把数组的指针赋值给p
删除动态分配的内存是:delete [] p; //方括号不可缺少。

下面使用该数组的方法就是:p[index]就是访问了下表为index的数组元素。

C语言的代码:
int *a;
int N;
scanf("%d", &N);
a = (int *) malloc(N * sizeof(int));
....
free(a);追问

先谢谢了!不过要打函数吗?我刚刚试了一下,好像还是不行啊

追答

你是问C语言还是C++呢?
你的目的是什么,我帮你写出来如何动态分配用户输入的长度的数组。

追问

就是定义一个由键盘输入长度的数组,然后在给这个数组赋一些值
比如说,我打这个好像输出时一些乱码啊
#include
using namespace std;
int main()
{
int i;
int N=0;
cin>>N;
int *p= new int[N];
for(i=0;i<N;i++);
p[i]=1;
for(i=0;i<N;i++)
cout<<p[i]<<endl;
delete [] p;
return 0;

}

追答

好的,说C++吧,C语言大致相同:
首先定义一个int N,这个N就是你要分配的数组长度。
然后,这个N要由用户由键盘指定:cin>>N;
好了,N的大小定下来了——下面进行分配内存:
int *p = new int[N];
上面这条语句是说:定义一个指针,名叫p,然后初始化这个p,
new int[N]动态创建了一个长度为N的数组(这个N刚刚已经由用户键盘指定了)
new操作符返回的是数组的首元素的地址,然后把这个地址用于初始化p,也就是p指向了刚刚分配的数组。
之后要使用这个数组就通过指针p进行间接访问了,比如:
p[0] = 2; //数组的第一个元素赋值为2,
p[1] = 4; //数组的第二个元素赋值为4
p[N-1] = 34343; //数组的最后一个元素赋值为34343

当数组不再需要的时候,需要销毁,否则它一直占用着内存没有释放,销毁的方法是:
delete [ ] p;
delete操作符是与new相对应得操作符,用于销毁动态分配的对象。

现在懂了不?
从创建、使用到销毁,都给你了代码。

追问

有点懂了,不过为什么我这个输出是一些乱码啊,麻烦你再帮我看看
#include
using namespace std;
int main()
{
int i;
int N=0;
cin>>N;
int *p= new int[N];
for(i=0;i<N;i++);
p[i]=1;
for(i=0;i<N;i++)
cout<<p[i]<<endl;
delete [] p;
return 0;

}

追答

你的代码有错误,在第一个for循环后面,你多写了一个分号。
变成了一个空语句。

#include
using namespace std;
int main(){
int N=0;
cin>>N;
int *p= new int[N];
for(int i=0;i<N;i++) p[i]=1;
for(int i=0;i<N;i++) cout<<p[i]<<endl;
delete [] p; return 0;
}

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网