C++函数重载示例程序

/*C++面向对象程序设计(第二版)
 *杜茂康,李昌兵,曹慧英,王永编著
 *电子工业出版社,2011年7月第一次印刷
 *ISBN978-7-121-13625-2,定价:42元
 *第58页习题11的由Adam本人自己编写参考程序
 *程序用随机数生成函数rand()给数组初始化
 *在显示数组元素的子程序displayArray中
 *调用求数组最小元素的子程序min()
 *在输出数组各元素的后面输出最小元素
 */
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
using namespace std;
const int MAXNUMBER=10;

/*
 *自己定义生成随机数的子程序
 *通过用当前系统时间对应的总秒数初始化随机数发生器的种子
 *因为连续调用随机数生成器的间隔时间不到一秒
 *导致连续产生多个随机数都使用了相同的种子
 *所以连续产生了很多相同的随机数
 *如果不考虑计算机运算速度的提高
 *可以用系统时间的毫秒数或微妙数作随机数的种子
 */
int myRand(){
	time_t now_time;
	now_time = time(NULL);
	srand(now_time);
	return rand();
}

void initial(int x[]){
	for(int i=0;i<MAXNUMBER;i++){
		x[i]=rand();
	}
}

void initial(double x[]){
	for(int i=0;i<MAXNUMBER;i++){
		x[i]=rand()/3.0;
	}
}

void initial(float x[]){
	for(int i=0;i<MAXNUMBER;i++){
		x[i]=rand()/3.0f;
	}
}

void initial(long x[]){
	for(int i=0;i<MAXNUMBER;i++){
		x[i]=rand()*7;
	}
}

int min(int x[]){
	int index=0;      //变量index存储最小元素的下标,初始化为0
	for(int i=1;i<MAXNUMBER;i++){
		if(x[i]<x[index]){
			index=i;      //如果元素x[i]小于下标为index的元素x[index],则把index替换为i
		}
	}
	return index;
}

int min(double x[]){
	int index=0;      //变量index存储最小元素的下标,初始化为0
	for(int i=1;i<MAXNUMBER;i++){
		if(x[i]<x[index]){
			index=i;     //如果元素x[i]小于下标为index的元素x[index],则把index替换为i
		}
	}
	return index;
}

int min(float x[]){
	int index=0;     //变量index存储最小元素的下标,初始化为0
	for(int i=1;i<MAXNUMBER;i++){
		if(x[i]<x[index]){
			index=i;      //如果元素x[i]小于下标为index的元素x[index],则把index替换为i
		}
	}
	return index;
}
int min(long x[]){
	int index=0;
	for(int i=1;i<MAXNUMBER;i++){
		if(x[index]>x[i]){
			index=i;     //如果index对应的元素x[index]大于第i个元素,则把index替换为i
		}
	}
	return index;
}

void displayArray(int x[]){
	cout<<endl<<"数组中int类型元素分别是:\n"
		<<setiosflags(ios::left);
	for(int i=0;i<MAXNUMBER;i++){
		cout<<i<<":"<<setw(8)<<x[i]<<" ";
		if(((i+1)%5)==0){
			cout<<endl;
		}
	}
	cout<<"int类型数组中数值最小的元素是:"
		<<min(x)<<":"<<setw(8)<<x[min(x)]
		<<resetiosflags(ios::left)<<endl;
}

void displayArray(double x[]){
	cout<<endl<<"数组中double类型元素分别是:\n"
		<<setiosflags(ios::left);
	for(int i=0;i<MAXNUMBER;i++){
		cout<<i<<":"<<setw(10)<<x[i]<<" ";
		if(!((i+1)%5)){
			cout<<endl;
		}
	}
	cout<<"doubl类型数组中数值最小的元素是:"
		<<min(x)<<":"<<setw(10)<<x[min(x)]
		<<resetiosflags(ios::left)<<endl;
}

void displayArray(float x[]){
	cout<<endl<<"数组中float类型元素分别是:\n";
	cout.setf(ios::left);
	for(int i=0;i<MAXNUMBER;i++){
		cout<<i<<":";
		cout.width(10);
		cout<<x[i]<<" ";
		if(((i+1)%5)==0){
			cout<<endl;
		}
	}
	cout<<"floa类型数组中数值最小的元素是:"
		<<min(x)<<":";
	cout.width(10);
	cout<<x[min(x)]<<resetiosflags(ios::left)
		<<endl;
}

void displayArray(long x[]){
	cout<<endl<<"数组中long类型元素分别是:\n"
		<<setiosflags(ios::left);
	for(int i=0;i<MAXNUMBER;i++){
		cout<<i<<":"<<setw(8)<<x[i]<<" ";
		if(!((i+1)%5)){      //每输出五个元素换行
			cout<<endl;
		}
	}
	cout<<"long类型数组中数值最小的元素是:"
		<<min(x)<<":"<<setw(8)<<x[min(x)]
		<<resetiosflags(ios::left)<<endl;
}

void main(){
	srand(time(NULL));   //用当前系统时间的秒数初始化随机数生成器的种子,也就是起始值
	int a[MAXNUMBER];
	double b[MAXNUMBER];
	float c[MAXNUMBER];
	long d[MAXNUMBER];
	initial(a);
	displayArray(a);

	initial(b);
	displayArray(b);

	initial(c);
	displayArray(c);

	initial(d);
	displayArray(d);
	
	/*
	cout<<rand()<<endl;
	time_t now_time;
	now_time = time(NULL);
	cout<<now_time;
	*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值