实验2

回答

1.以容器容量大小为迭代次数,历尽函数,将结果返回容器储存
2.minmax只用迭代1次,那两个共要两次
3一样

代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
#include<iomanip>
#include<cstdlib>
#include<ctime>

template<typename T>
void output(const T &c);

int generate_random_number();
void test1();
void test2();

int main()
{
	std::srand(std::time(0));
	std::cout<<"测试1:\n";
	test1();
	
	std::cout<<"\n测试2:\n";
	test2();
	
}

template <typename T>
void output(const T &c){
	for(auto &i:c)
	   std::cout<<i<<' ';
	std::cout<<'\n';	
}

int generate_random_number(){
	return std::rand()%101;
}

void test1(){
	using namespace std;
	
	vector<int> v0(10);
	generate(v0.begin(),v0.end(),generate_random_number);
	cout<<"v0: ";output(v0);
	
	vector<int> v1{v0};
	sort(v1.begin(),v1.end());
	cout<<"v1: ";output(v1);
	
	vector<int> v2{v0};
	sort(v2.begin()+1,v2.end()-1);
	cout<<"v2: ";output(v2);
}

void test2(){
	using namespace std;
	
	vector<int> v0(10);
	generate(v0.begin(),v0.end(),generate_random_number);
	cout<<"v0: ";output(v0);
	
	auto min_iter=min_element(v0.begin(),v0.end());
	auto max_iter=max_element(v0.begin(),v0.end());
	cout<<"最小值"<<*min_iter<<endl;
	cout<<"最大值"<<*max_iter<<endl;
	
	auto ans=minmax_element(v0.begin(),v0.end());
	cout<<"最大值"<<*(ans.second)<<endl;
	cout<<"最小值"<<*(ans.first)<<endl;
	
	double avg1=accumulate(v0.begin(),v0.end(),0.0)/v0.size();
	cout<<"均值:"<<fixed<<setprecision(2)<<avg1<<endl;
	
	sort(v0.begin(),v0.end());
	double avg2=accumulate(v0.begin()+1,v0.end()-1,0.0)/v0.size();
	cout<<"去掉最大最小值的均值:"<<fixed<<setprecision<<avg2<<endl;
}

截图

屏幕截图 2026-10-19 143808

posted @ 2026-10-21 14:50  2699(  阅读(6)  评论(0)    收藏  举报