数组长度及元素由用户输入,用函数实现数组元素排序,函数参数分别用指针和引用。C++如何编程?

要求:
1.由用户输入一维数组长度n;
2.定义指针,并根据长度n动态分配内存空间;
3.输入数组中的元素值;
4.编写函数Sort,实现数组元素的排序,其中分别通过指针和引用来传递参数;
5.显示最终排序结果。

第1个回答  2020-05-05

#include <iostream>

using namespace std;

template<typename T>

void swap_(T &a,T &b)

{

    T c;

    c = a;

    a = b;

    b = c;

}

void sort_1(int *a,int n)

{

    int min;

    for(int i=0;i<n-1;++i)

    {

        min = i;

        for(int j=i+1;j<n;++j)

        {

            if(a[j]<a[min])

                min = j;

        }

        swap_(a[i],a[min]);

    }

}

int main()

{

    int n;

    cout << "Please input the length of array: ";

    cin >> n;

    int *a = new int[n];

    cout << "Please input the number: ";

    for(int i=0;i<n;i++)

        cin >> a[i];

    sort_1(a,n);

    for(int i=0;i<n;i++)

        cout << a[i] << " ";

    delete [] a;

    return 0;

}





第2个回答  2020-05-06

代码文本:

//#include "stdafx.h"//vc++ 6.0? Maybe should add this line.

#include <iostream>

using namespace std;

void Sort(int *p,int n){//指针参数排序

int i,j,k;

for(i=0;i<n;i++){

for(k=i,j=k+1;j<n;j++)

if(*(p+k)>*(p+j))

k=j;

if(k!=i)

j=*(p+k),*(p+k)=*(p+i),*(p+i)=j;

}

}

void SortA(int *&p,int n){//引用参数排序

int i,j,k;

for(i=0;i<n;i++){

for(k=i,j=k+1;j<n;j++)

if(p[k]>p[j])

k=j;

if(k!=i)

j=p[k],p[k]=p[i],p[i]=j;

}

}

int main(int argc,char *argv[]){

int n,i,k,*p;

cout << "Enter n(int n>0)...\nn=";

if(cin >> n && n>0){

if(p=new int[n]){//动态申请内存

cout << "Enter " << n << " integer data...\n";

for(i=0;i<n;cin >> *(p+i++));//输入数据

cout << "\n调用指针形参函数\n";

for(Sort(p,n),k=i=0;i<n;i++)//调用指针形参函数

cout << *(p+i) << (++k%5 ? ' ' : '\n');

if(k%20)

cout << endl;

cout << "Enter " << n << " integer data again...\n";

for(i=0;i<n;cin >> *(p+i++));//重新输入数据

cout << "\n调用引用形参函数\n";

for(SortA(p,n),k=i=0;i<n;i++)//调用引用形参函数

cout << *(p+i) << (++k%5 ? ' ' : '\n');

delete []p;//释放所申请的内存

if(k%20)

cout << endl;

}

else{

cout << "Application memory failure, exit...\n";

return 0;

}

}

else

cout << "Input error, exit...\n";

return 0;

}

由于数组不是变量,所以没有引用,只能引用数组的首指针。供参考……

本回答被提问者和网友采纳