大佬求解
编写main函数和一个子函数(子函数带int *参数),在main函数中读入一个整数数组(数组大小自定义),通过传地址方式把数组传递给子函数处理,子函数的功能是把数组的最大值元素和第一个元素交换。在main函数中输出处理完成后的数组。[
#include<iostream> #include<algorithm> #include<iterator> using namespace std; void change(int *arr, int n){ int max=*max_element(arr,arr+n); for(int i=0;i<n;i++) if(max==arr[i]){ arr[i]=arr[0]; arr[0]=max; break; } } int main() { int n[]={1,4,22,3,8,35}; change(n, 6); copy(n,n+6,ostream_iterator<int>(cout,",")); return 0; }
#include <iostream> #include <algorithm> #include <iterator> using namespace std; void change_maxvalue_to_top( int* arr, size_t n ) // 按照C++风格,这里参数列表应该是( int* first, int* last ) { if( n != 0 ) iter_swap( arr, max_element(arr,next(arr,n)) ); } int main( void ) { int arr[] = { 1, 4, 22, 3, 8, 35 }; change_maxvalue_to_top( arr, size(arr) ); copy( begin(arr), end(arr), ostream_iterator<decltype(*arr)>(cout,", ") ); }