今天小编和大家一起通过几个实例学习C++基础知识,下面进行实例解析:
【1-1】编写一个程序,实现一个整数、长整数、浮点数和双精度数除以2的计算。
【分析】这是一个典型的函数重载的程序。声明函数div()为除法函数,每个函数的功能基本都是一致的,不同的只是形式参数的类型不同而已。程序代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
using namespace std;
int division( int x){ return x/2; }
long division( long x){ return x/2; }
float division( float x){ return x/2; }
double division( double x){ return x/2; }
int main()
{
int a; long b; float c; double d;
cout<< "input a,b,c,d:" <<endl; cin>>a>>b>>c>>d;
if (a!=0) cout<<a<< "/2=" <<division(a)<<endl;
else cout<< "input error!" <<endl;
if (b!=0) cout<<b<< "/2=" <<division(b)<<endl;
else cout<< "input error!" <<endl;
if (c!=0) cout<<c<< "/2=" <<division(c)<<endl;
else cout<< "input error!" <<endl;
if (d!=0) cout<<d<< "/2=" <<division(d)<<endl;
else cout<< "input error!" <<endl;
return 0;
}
|
【总结】这是一个最原始的程序,并且很机械化。有心的读者会发现上面的程序有许多重复的地方,这个正是我们后面模板里面会讲到的内容。
【1-2】编写一个函数,从三个整数中找出最大值和最小值,并返回。
【分析】这个程序要求一次调用从主调函数中获取两个值,这不是值传递能够解决的问题,必然会考虑使用地址传递。实现地址传递有两种方法,一种是指针实现,另一种就是采用引用。变量的引用既方便又直观,非常利于理解。程序代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
using namespace std;
void swap( int &a, int &b)
{ int t; t=a; a=b; b=t;}
void max( int a, int b, int c, int &maxnum, int &minnum)
{
if (a<=b) swap(a,b);
if (a<=c) swap(a,c);
if (b<=c) swap(b,c);
maxnum=a; minnum=c;
}
int main()
{
int a,b,c,maxnum,minnum;
cout<< "input a,b,c:" ; cin>>a>>b>>c;
max(a,b,c,maxnum,minnum);
cout<< "maxnum=" <<maxnum<<endl;
cout<< "minnum=" <<minnum<<endl;
return 0;
}
|
【总结】这个程序又两个被调函数,都用到引用。使用引用来一次返回两个参数值,方便简洁。
【1-3】编写一个函数,求立方体体积,默认边长为10。
【分析】这个程序需要用到带有默认形参值的函数。则在声明函数时,为形参赋予默认值。当函数调用时,如果输入实参值,则默认函数值不起作用。而在没有实参值输入的情况下,就使用默认形参值进行计算。程序代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
using namespace std;
float volumn( float a=10, float b=10, float c=10);
int main()
{
float a,b,c;
cout<< "没有实际参数值时,volumn=" <<volumn()<<endl;
cout<< "input a,b,c:" ; cin>>a>>b>>c;
cout<< "有实际参数值时,volumn=" <<volumn(a,b,c)<<endl;
return 0;
}
float volumn( float a, float b, float c)
{ return a*b*c; }
|
【总结】用带有默认参数值的函数需要注意的时,默认参数值只能在函数声明时标注,而在函数定义时则不能标注。当然,函数声明和函数定义标注在一起时不受这个限制。
【1-4】编写一个程序,计算分别选修2、3和4门课程的学生的平均分。
【分析】这也是一个典型的函数重载的问题。这几个函数的区别在于参数个数不同。程序代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <iostream>
using namespace std;
float avg( float , float );
float avg( float , float , float );
float avg( float , float , float , float );
int main()
{
cout<< "The first student:" <<avg(80.0f,70.2f)<<endl;
cout<< "The second student:" <<avg(80.1f,78.1f,12.3f)<<endl;
cout<< "The third student:" <<avg(45.6f,90.1f,78.6f)<<endl;
return 0;
}
float avg( float x, float y) { return (x+y)/2.0; }
float avg( float a, float b, float c) { return (a+b+c)/3; }
float avg( float a, float b, float c, float d){ return (a+b+c+d)/4; }
|
【分析】这几个avg函数重载的出发点是由于其形参个数不同。并且由于函数体只有一句话,并且没有选择和循环等复杂结构,故也可以将其定义为内联函数,以提高程序运行效果。
以上就是今天小编跟大家分享的C++经典实例,需要大家亲自动手操作才能领会C++语言带给我们的乐趣。