注册 登录
编程论坛 C++教室

大佬求解

陈钟 发布于 2018-05-28 23:09, 1830 次点击
编写main函数和一个子函数(子函数带int *参数),在main函数中读入一个整数数组(数组大小自定义),通过传地址方式把数组传递给子函数处理,子函数的功能是把数组的最大值元素和第一个元素交换。在main函数中输出处理完成后的数组。[
7 回复
#2
林月儿2018-05-28 23:45
程序代码:
#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;  
}
#3
陈钟2018-05-29 10:59
回复 2楼 林月儿
谢谢
#4
rjsp2018-05-29 12:12
在 林月儿 的基础上,改了一点点
程序代码:
#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,", ") );
}

#5
林月儿2018-05-29 21:55
回复 4楼 rjsp
这方面您是专家,我这个c++入门都不算
#6
Jonny02012018-05-29 22:06
回复 5楼 林月儿
能用 STL 应该起码入门了
哈哈哈哈
#7
林月儿2018-05-29 22:09
回复 6楼 Jonny0201
网上搜的,哈哈,一直学的java,有机会好好学下这个
1