注册 登录
编程论坛 C++教室

新人,刚学到数组,求教动态数组

zeng20289863 发布于 2015-04-30 15:54, 978 次点击
如题,老师出了个题目:
                      数组排序:从键盘读入若干整数,将它们按由低到高排序输出。
我想设计一个任意长度,即由用户自己决定长度的数组。
听说动态数组可以实现。
求教动态数组
14 回复
#2
wp2319572015-04-30 16:01
自己分配内存就可以了
#3
wp2319572015-04-30 16:06
至于想使用类似
    int n=5;
    int t[n];
这样的代码   微软的ide是不支持的
#4
zeng202898632015-04-30 16:11
回复 2楼 wp231957
分配内存?能不能按照我们老师的题目来做个例子?谢谢
#5
wp2319572015-04-30 16:24
你试试这个东东  我只做了录入与输出部分   排序的部分自己实现吧

程序代码:

#include <stdio.h>
#include <malloc.h>

int main()
{
    int n;
    int *p;
    printf("请输入要输入的数组元素的个数:");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",p+i);
    }
    printf("----------------------\n");
    for(i=0;i<n;i++)
    {
        printf("%d  ",*(p+i));
    }
    free(p);
    return 0;
}
#6
诸葛欧阳2015-04-30 16:30
c++用new分配空间delete释放空间
#7
zeng202898632015-04-30 16:33
回复 5楼 wp231957
虽然看不懂C语言,但是还是谢谢了,我会努力的
#8
zeng202898632015-04-30 16:35
回复 6楼 诸葛欧阳
大神可否帮我实现一下?万分感谢,我还没学到new  和 delete
#9
zeng202898632015-04-30 16:38
回复 6楼 诸葛欧阳
就是定义这个动态数组部分就行
#10
林月儿2015-04-30 16:42
楼上的加个排序
#include <stdio.h>
#include <malloc.h>

int main()
{
    int n,i,x,j,m;
    int *p;
    printf("请输入要输入的数组元素的个数:");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
    {m=i;
        scanf("%d",&x);
        for(j=0;*(p+j)<x;j++);
        while(m>j){
            *(p+m)=*(p+m-1);m--;
        }*(p+m)=x;
    }
    printf("----------------------\n");
    for(i=0;i<n;i++)
    {
        printf("%d  ",*(p+i));
    }
    free(p);
    return 0;
}
#11
wp2319572015-04-30 16:46
程序代码:

#include <iostream>

using namespace std;

int main()
{
    int n;
    int *p;
    cout<<"请输入要输入的数组元素的个数:";
    cin>>n;
    p=new int[n];
    int i=0;
    for(i=0;i<n;i++)
    {
        cin>>p[i];
    }
    cout<<"----------------------\n";
    for(i=0;i<n;i++)
    {
        cout<<*(p+i)<<" ";
    }
    delete p;
    return 0;
}
#12
林月儿2015-04-30 16:56
#13
诸葛欧阳2015-04-30 19:19
程序代码:
#include<iostream>
using namespace std;
int main()
{
    int n,i;
    int *p;
    cout<<"输入要开辟的内存数:";
    cin>>n;
    p=new int [n];
    for(i=0;i<n;i++)
        cin>>p[i];
    for(i=0;i<n;i++)
        cout<<'\t'<<p[i];
    delete []p;  //注意如果申请一个数组释放时一定要将整个数组都释放必须加上[]
    return 0;
}
#14
rjsp2015-05-05 12:03
直接输入数据,不再输入时,windows输入ctrl+z回车,linux输入ctrl+d回车
程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

int main( void )
{
    std::vector<int> buf;
    std::copy( std::istream_iterator<int>(cin), std::istream_iterator<int>(), std::back_inserter(buf) );
    cin.clear(); // 如果你此后不需要再使用cin的话,就可以不恢复cin的状态
    std::sort( buf.begin(), buf.end() );
    std::copy( buf.begin(), buf.end(), std::ostream_iterator<int>(cout," ") );

    return 0;
}

先输入待输入的数据数量,然后再输入指定数量的数据
程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

int main( void )
{
    size_t n;
    cin >> n;

    std::vector<int> buf( n, 0 );
    std::copy_n( std::istream_iterator<int>(cin), n, buf.begin() );
    std::sort( buf.begin(), buf.end() );
    std::copy( buf.begin(), buf.end(), std::ostream_iterator<int>(cout," ") );

    return 0;
}

#15
h11876477352015-05-07 20:00
#include<iostream>
using namespace std;

int main()
{
    int n;
    cout <<"请输入n";
    cin >> n;
    int *p = new int [n];
    cout <<"请输入n格实数";
    for(int i=0;i<n;i++)
        cin >> p[i];
    ........
    return 0;
}


刚学完c++ 希望对你有帮助  

还有我的老师说过 ,用指针做动态数组容易出错  可以用vector函数实现
1