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

请问各位高手这个简单程序为何无法正常工作

荀减一 发布于 2016-05-10 15:06, 3737 次点击
目的是输出排序后的数
程序代码:
#include<iostream>
#include<string>
using namespace std;

void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int SelectMinKey(int a[], int n, int i)
{
    int k = i;
    for (int j = i + 1; j< n; ++j) {
        if (a[k] > a[j]) k = j;
    }
    return k;
}

void selectSort(int a[], int n){
    int key;
    for (int i = 0; i< n; ++i)
    {
        key = SelectMinKey(a, n, i);           //选择最小的元素  
        if (key != i)
            swap(a[i], a[key]);           //最小元素与第i位置元素互换
    }
}

void main()
{
    int n, arr[1];
    int *p=arr;
    cout << "Please input array number: " << endl;
    cin >> n;
    p = new int(n - 1);
    cout << "Please input all the integer: " << endl;
    for (int i = 0; i < n; i++)
        cin >> arr[i];

    selectSort(arr, n);
    for (int i = 0; i < n; i++)
        cout << arr[i];
    system("pause");
}
2 回复
#2
rjsp2016-05-11 09:05
鬼知道“无法正常工作”是个什么意思?
如果编译失败,贴出编译器给出的错误信息
如果运行结果不符合自己的预期,贴出你的输入数据期待的输出数据,以及 实际的输出数据

只能瞎猜猜,我猜你的main函数其实想要的是这样:
int main( void )
{
    cout << "Please input array number: ";
    size_t n;
    cin >> n;

    cout << "Please input all the integer: ";
    int* p = new int[n];
    for( size_t i=0; i!=n; ++i )
        cin >> p[i];

    SelectSort( p, n );

    for( size_t i=0; i!=n; ++i )
        cout << ' ' << p[i];

    return 0;
}
#3
荀减一2016-05-11 12:10
回复 2楼 rjsp
版主大大猜的真准,请问是我new函数的不正确使用而导致的无法输出排序吗?
1