一、实验目的
1. 掌握内联函数、重载函数、带缺省参数函数的定义及使用;
2.掌握程序的多文件组织;
3.掌握作用域概念,变量的存储类型及它们之间的差别。
二、实验内容
1.重载函数允许不同的函数使用相同的名字,这使得完成类似任务可以使用相同函数名。编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,函数原型如下:
double area(double radius=0); //计算圆面积,参数为半径,缺省参数0,表示点面积
double area(double a, double b); //计算矩形面积,参数为长和宽
double area(double a, double b, double h); //计算梯形面积,参数为两底和高
double area(double a, double b, double c, int); //计算三角形面积,参数为三边长,int型参数起标示作用,以区别于梯形面积函数,不参加计算
提示:
(1)常数π可以这样定义:#define PI 3.141593
(2)计算三角形面积的海式:p=(a+b+c)/2,s=(p*(p-a)*(p-b)*(p-c))^0.5
(3)开方函数为sqrt(),在cmath.h中
编程实现上述4个重载函数,并自行设置参数对其进行调用,将结果输出到屏幕。
#include #include #define PI 3.141593 using namespace std; double area(double r) { double s; s=PI*r*r; return(s); } double area(double a,double b) { double s; s=a*b; return(s); } double area(double a,double b,double h) { double s; s=(a+b)*h/2; return(s); } double area(double a,double b,double c,int) { double s,p; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return(s); } int main() { double a,b,c,d,e,f,g,h,i,j; cin>>a; cin>>b>>c; cin>>d>>e>>f; cin>>g>>h>>i>>j; double k; k=area(a); double l; l=area(b,c); double m; m=area(d,e,f); double n; n=area(g,h,i,j); cout<<"圆的面积s="< } 圆的半径、矩形长、矩形宽、梯形上底、梯形下底、梯形高、三角形直角边、三角形直角边、斜边均取值为1 如下图: 2.将上题以多文件方式组织,在area.h中声明4个面积函数原型,在area.cpp中定义各函数,然后在main.cpp中包含area.h并定义主函数,对4个面积函数逐一调用,各函数调用时的传入参数自行设定,将结果向屏幕输出。 注意:using namespace std; 只能说明一次,或者说只能在一个文件中说明。 编程是: //area.h double area(double r); double area(double a, double b); double area(double a, double b, double h); double area(double a, double b, double c, int); //area.cpp #include #include "area.h" #define PI 3.141593 double area(double r) {double s; s=PI*r*r; return(s); double area(double a,double b) {double s; s=a*b; return(s); } double area(double a,double b,double h) {double s; s=(a+b)*h/2; return(s); } double area(double a,double b,double c,int) {double s,p; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return(s); } //main.cpp #include #include "area.h" using namespace std; int main() {double a,b,c,d,e,f,g,h,i,j; cin>>a; cin>>b>>c; cin>>d>>e>>f; cin>>g>>h>>i>>j; double k; k=area(a); double l; l=area(b,c); double m; m=area(d,e,f); double n; n=area(g,h,i,j); cout<<"s="< } 3.对全局变量、局部变量和静态局部变量作用域的分析应用。分析并写出下列程序的执行结果,然后输入计算机执行,比较分析结果与执行结果。 #include using namespace std; int a = 300, b = 400, c = 500;//全局 void funa( int c){ //局部变量 static int a = 5; a+=c; cout<} void funb(int a){ a= b; cout<} void func(){ int c=0; cout< ::c-=100; } int main(){ funa(a); funb(b); funa(b); func();