求助,谁帮忙看看这道题有没更简单的做法
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1.输入10个数;2.进行处理;3.输出10个数。下面是我自己写的代码,感觉好像有点繁琐,而bg搜到的有些代码还是有问题的。谁能指点下?
程序代码:#include<iostream>
#define N 10
using namespace std;
void input(int *, int);
void output(int *, int);
void pro(int *, int);
int main()
{
int a[N];
input(a, N);
pro(a, N);
output(a, N);
return 0;
}
void input(int *pa, int n)
{
cout << "请输入十个数字:";
for(int i = 0; i < n; i++)
cin >> *(pa + i);
}
void output(int *pa, int n)
{
cout << "处理的结果为:";
for(int i = 0; i < n; i++)
cout << *(pa + i) << " ";
cout << endl;
}
void pro(int *pa, int n)
{
int *min, *max, i, temp;
min = max = pa;
for(i = 0; i < n; i++)
{
if(*min > *(pa + i)) min = pa + i;
else if(*max < *(pa + i)) max = pa + i;
}
if(max == pa && min == pa + n - 1)
{
temp = *pa;
*pa = *(pa + n - 1);
*(pa + n - 1) = temp;
}
else if(max == pa)
{
temp = *pa;
*pa = *min;
*min = temp;
temp = *(pa + n - 1);
*(pa + n - 1) = *min;
*min = temp;
}
else if(min == pa + n - 1)
{
temp = *(pa + n - 1);
*(pa + n - 1) = *pa;
*pa = temp;
temp = *(pa + n - 1);
*(pa + n - 1) = *max;
*max = temp;
}
else
{
temp = *pa;
*pa = *min;
*min = temp;
temp = *(pa + n - 1);
*(pa + n - 1) = *max;
*max = temp;
}
}








