动态申请内存 要求要有指针与数组结合,求最大值与最小值并交换其位置后输出

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:18:59
整型数组a具有N个元素,pa是一个整型指针,要求利用指针运算求数组的最大值及最小值,并交换其在数组中的位置。
要求要用到动态申请内存.用C++来做
我是这样做的
#include <iostream.h>
int main()
{
int N;
cin>>N;
int *pa=new int[N];
int a[N];
pa=a;
for(pa=a;pa<a+N;pa++)
cin>>*pa;
int*max,*min;
max=a;min=a;
for(pa=a;pa<a+N;pa++)
{
if(*max<*pa)
max=pa;
else
if(*min>*pa)
min=pa;

}
for(pa=a;pa<a+N;pa++)
cout<<*pa<<" ";
cout<<endl;
delete[]pa;

return 0;
}

它说在 int a[N];这错了;
那该怎么做啊,要求是一定要定义个数组

1, 内存分配不妥
2, 你忘了交换

#include <iostream.h>
int main()
{
int N;
int *a,*pa;
cin>>N;
pa = a = new int[N];
//d int *pa=new int[N];
//d int a[N];
//d pa=a;
for(pa=a;pa<a+N;pa++)
cin>>*pa;
int*max,*min;
max=a;min=a;
for(pa=a;pa<a+N;pa++)
{
if(*max<*pa)
max=pa;
else
if(*min>*pa)
min=pa;
}
//swap
*max = *max ^ *min;
*min = *max ^ *min;
*max = *max ^ *min;

for(pa=a;pa<a+N;pa++)
cout<<*pa<<" ";
cout<<endl;
delete[]a;

return 0;
}

/*要动态申请内存的话,这就要到,数据结构的一些知识了。。朋友,我是要C语言写的,其实C++和C语言的转化挺简单,你自己试一下吧。呵呵。学习这些东西最好自己想呀,这些才能学会。。 */
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define Status int
typedef struct Array
{
int d