函数声明第四章利用函数实现指定的功能

改章节笔者在广东逛街的时候突然想到的...今天就有想写几篇关于函数声明的博客,所以回家到之后就奋笔疾书的写出来发表了

//p89
//在主函数中调用其他函数
#include <iostream>
using namespace std;
void printstar(void)
{
	cout<<"******************************"<<endl;
}
void print_message(void)
{
	cout<<"	Welcome to C++!"<<endl;
}
int main(void)
{
	printstar();
	print_message();
	printstar();
	return 0;
}

    运行结果:

    

//p91
//调用函数时的数据传递
#include <iostream>
using namespace std;
int max(int x,int y)
{
	int z;
	z=x>y?x:y;
	return z;
}
int main()
{
	int a,b,c;
	cout<<"Please enter two integer numbers:"<<endl;
	cin>>a>>b;
	c=max(a,b);
	cout<<"max="<<c<<endl;
	return 0;
}

    运行结果:

    

//p95
//对被调用的函数做声明
#include <iostream>
using namespace std;
int main()
{
	float add(float x,float y);//对add函数作声明
	float a,b,c;
	cout<<"Please enter a,b:"<<endl;
	cin>>a>>b;
	c=add(a,b);
	cout<<"sum="<<c<<endl;
	return 0;
}
float add(float x,float y)//义定add函数
{
	float z;
	z=x+y;
	return z;
}

    运行结果:

    

//p98
//求四个数中的大最数
#include <iostream>
using namespace std;
int main()
{
	int max_4(int,int,int,int);//max_4函数的声明
	int a,b,c,d,max;
	cout<<"Please enter 4 interger numbers:"<<endl;
	cin>>a>>b>>c>>d;
	max=max_4(a,b,c,d);
	cout<<"max="<<max<<endl;
	return 0;
}
int max_4(int a,int b,int c,int d)//义定max_4函数
{
	int max(int,int);//max函数的声明
	int m;
	m=max(a,b);
	m=max(m,c);
	m=max(m,d);
	return m;
}
int max(int x,int y)//义定max函数
{
	if(x>y)
		return x;
	else
		return y;
}

    运行结果:

    

//p101
//递归调用求春秋
#include <iostream>
using namespace std;
int age(int);//函数声明
int main()
{
	cout<<age(5)<<endl;
	return 0;
}
int age(int n)//函数义定
{
	int c;
	if(n==1)
		c=10;
	else
		c=age(n-1)+2;
	return c;
}

    运行结果:

    

//p102
//用递归求n!
#include <iostream>
using namespace std;
long fac(int);//函数声明
int main()
{
	int n;
	long y;
	cout<<"Please input an integer:"<<endl;
	cin>>n;
	y=fac(n);
	cout<<n<<"!="<<y<<endl;
	return 0;
}
long fac(int n)//递归函数义定
{
	long f;
	if(n<0)
	{
		cout<<"n<0,data error!"<<endl;
		f=-1;
	}
	else if(n==0||n==1)
		f=1;
	else
		f=fac(n-1)*n;
	return f;
}

    运行结果:

    

//p103
//函数指定为置内函数
#include <iostream>
using namespace std;
inline int max(int,int,int);//声明置内函数,左端有inline
int main()
{
	int i=10,j=20,k=30,m;
	m=max(i,j,k);
	cout<<"max="<<m<<endl;
	return 0;
}
inline int max(int a,int b,int c)//义定max为置内函数
{
	if(b>a)//求a,b,c的大最者
		a=b;
	if(c>a)
		a=c;
	return a;
}

    运行结果:

    

//p105
//函数的重载
#include <iostream>
using namespace std;
int main()
{
	int max(int,int,int);//函数声明
	double max(double,double,double);//函数声明
	long max(long,long,long);//函数声明
	int i1,i2,i3,i;
	cin>>i1>>i2>>i3;
	i=max(i1,i2,i3);
	cout<<"i_max="<<i<<endl;
	double d1,d2,d3,d;
	cin>>d1>>d2>>d3;
	d=max(d1,d2,d3);
	cout<<"d_max="<<d<<endl;
	long g1,g2,g3,g;
	cin>>g1>>g2>>g3;
	g=max(g1,g2,g3);
	cout<<"g_max="<<g<<endl;
	return 0;
}
int max(int a,int b,int c)//义定求三个整数中的大最者的函数
{
	if(b>a)
		a=b;
	if(c>a)
		a=c;
	return a;
}
double max(double a,double b,double c)//义定求三个双精度中的大最者的函数
{
	if(b>a) 
		a=b;
	if(c>a) 
		a=c;
	return a;
}
long max(long a,long b,long c)//义定求三个长整数中的大最者的函数
{
	if(b>a)
		a=b;
	if(c>a)
		a=c;
	return a;
}
    每日一道理
春蚕死去了,但留下了华贵丝绸;蝴蝶死去了,但留下了漂亮的衣裳;画眉飞去了,但留下了美妙的歌声;花朵凋谢了,但留下了缕缕幽香;蜡烛燃尽了,但留下一片光明;雷雨过去了,但留下了七彩霓虹。

    运行结果:

    

//p106
//求三个或两个整数的大最值
#include <iostream>
using namespace std;
int main()
{
	int max(int,int,int);//函数声明
	int max(int,int);//函数声明
	int a=8,b=-12,c=27;
	cout<<"max(a,b,c)="<<max(a,b,c)<<endl;
	cout<<"max(a,b)="<<max(a,b)<<endl;
	return 0;
}
int max(int a,int b,int c)//义定求三个数大最值的函数
{
	if(b>a)
		a=b;
	if(c>a)
		a=c;
	return a;
}
int max(int a,int b)//义定求两个数大最值的函数
{
	if(a>b)
		return a;
	else
		return b;
}

    运行结果:

    

//p107
//利用函数模板求三个数的大最值(整数,双精度,长整数)
#include <iostream>
using namespace std;
template <typename T>//模板声明,其中T为型类参数
T max(T a,T b,T c)//义定一个通用函数,用T作虚拟的型类名
{
	if(b>a)
		a=b;
	if(c>a)
		a=c;
	return a;
}
int main()
{
	int i1=185,i2=-76,i3=567,i;
	double d1=56.87,d2=90.23,d3=-3214.78,d;
	long g1=67854,g2=-912456,g3=673456,g;
	i=max(i1,i2,i3);//调用模板函数,T被int替换
	d=max(d1,d2,d3);//T被double替换
	g=max(g1,g2,g3);//T被long替换
	cout<<"i_max="<<i<<endl;
	cout<<"d_max="<<d<<endl;
	cout<<"g_max="<<g<<endl;
	return 0;
}

    运行结果:

    

//p109
//应用带认默参数的函数求两个或三个数中的大最数
#include <iostream>
using namespace std;
int main()
{
	int max(int a,int b,int c=0);//函数声明,参形c有认默值
	int a,b,c;
	cin>>a>>b>>c;
	cout<<"max(a,b,c)="<<max(a,b,c)<<endl;
	cout<<"max(a,b)="<<max(a,b)<<endl;
	return 0;
}
int max(int a,int b,int c)//函数义定
{
	if(b>a)
		a=b;
	if(c>a)
		a=c;
	return a;
}

    运行结果:

    

    

//p115
//用static声明静态局部变量
#include <iostream>
using namespace std;
int f(int a)//义定f函数,a为参形
{
	auto int b=0;//义定b为动自变量
	static int c=3;//义定c为静态局部变量
	b=b+1;
	c=c+1;
	return a+b+c;
}
int main()
{
	int a=2,i;
	for(i=0;i<3;i++)
		cout<<f(a)<<" ";
	cout<<endl;
	return 0;
}

    运行结果:

    

//p116
//用static声明静态局部变量,求出1到5的阶乘
#include <iostream>
using namespace std;
int fac(int);//函数声明
int main()
{
	int i;
	for(i=1;i<=5;i++)
		cout<<i<<"!="<<fac(i)<<endl;
	return 0;
}
int fac(int n)
{
	static int f=1;//f为静态局部变量,函数结束时f的值不释放
	f=f*n;//在f原值基础上乘以n
	return f;
}

    运行结果:

    

//p118
//用extern声明外部变量
#include <iostream>
using namespace std;
int max(int,int);
int main()
{
	extern int a,int b;//对全局变量a,b作前提用引声明
	cout<<max(a,b)<<endl;
	return 0;
}
int a=15,b=-7;//义定全局变量a,b
int max(int x,int y)
{
	int z;
	z=x>y?x:y;
	return z;
}

    运行结果:

    

//p118
//file1
//用extern在多文件中声明外部变量
#include <iostream>
using namespace std;
extern int a,b;//对a,b作外部变量声明
int main()
{
	cout<<a<<","<<b<<endl;
	return 0;
}
//file2
int a=3,b=4;

    运行结果:

    

//p124
//file1
//用外部函数现实求两个数的大最值
#include <iostream>
using namespace std;
int main()
{
	extern int max(int,int);//声明在本函数中要调用其他文件中义定的max函数
	int a,b;
	cin>>a>>b;
	cout<<max(a,b)<<endl;
	return 0;
}
//file2
int max(int x,int y)//省略extern默以为外部函数
{
	int z;
	z=x>y?x:y;
	return z;
}

    运行结果:

    

文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

posted @ 2013-04-27 19:14  xinyuyuanm  阅读(365)  评论(0编辑  收藏  举报