求助,谁帮忙看看这道题有没更简单的做法
输入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; } }