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

C++ 经典问题贴!!!!

hehe98 发布于 2014-11-10 22:31, 793 次点击
#include<iostream>
using namespace std;

void main()
{
    int m;
    int *n;
    n = new int;
    cout<<"输入一个整数:\n";
    cin>>*n;
    int *a;
    a = new int[*n];
    cout<<"输入"<<*n<<"个整数\n";
    for(int i =1;i<*n;i++)
    cin>>a[*n];
    int j =0;
    for(j=0; j<*n; j++)
        for(int i=0;i<*n-j;i++)
        if(a[i]>a[i+1])
        {m = a[i];a[i]=a[i+1];a[i+1]=m;}
        for(int i =0;i<*n;i++)
        cout<<a[i]<<"\t\n";
        delete n;
        delete [] a;
}


代码是为了实现内存动态分配   然后对输入的数进行排序  但不知道什么原因导致 最后 输出的是地址, 而不是值。
4 回复
#2
stop12042014-11-11 07:46
前面没错. 但你从第一个for循环开始就错了
输入5
    for(int i =1;i<*n;i++)
    cin>>a[*n];
*n = 5 .那么你循环4次的结果全部是输入到 a[5]里面. 比如输入1\2\3\4\  那么你的a[5]值会是 1234
#3
lmq142014-11-13 16:12
回复 楼主 hehe98
#include<iostream>
using namespace std;

int main()
{
    int m;
    int *n;
    n = new int;
    cout<<"输入一个整数:\n";
    cin>>*n;
    int *a;
    a = new int[*n];
    cout<<"输入"<<*n<<"个整数\n";
   // for(int i =0;i<*n;i++)
   //cin>>a[i];
    int j =0;
    for(j=0; j<*n; j++)
        for(int i=0;i<*n-j;i++)
        if(a[i]>a[i+1])
        {m = a[i];a[i]=a[i+1];a[i+1]=m;}
        for(int i =0;i<*n;i++)
        cout<<a[i]<<"\t\n";
        delete n;
        delete [] a;
}
把注释的部分改了
#4
hehe982014-11-18 13:56
回复 3 楼 lmq14
你好,我这是“取址  ”出问题了吧
#5
abc82387782014-11-18 16:09
新手受教了
1