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个重载函数,并自行设置参数对其进行调用,将结果输出到屏幕。 2. 将上题以多文件方式组织,在area_funcs.h中声明4个面积函数原型,在area_funcs.cpp中定义各函数,然后在main.cpp中包含area_funcs.h并定义主函数,对4个面积函数逐一调用,各函数调用时的传入参数自行设定,将结果向屏幕输出。 注意:using namespace std; 只能说明一次,或者说只能在一个文件中说明。
时间: 2024-02-25 10:54:30 浏览: 84
函数重载的详解和应用
好的,我会回答你的问题。以下是对你的问题的回答:
1. 以下是根据你给出的函数原型编写的程序:
```cpp
#include <iostream>
#include <cmath>
#define PI 3.141593
using namespace std;
double area(double radius = 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 main() {
cout << "圆的面积:" << area(2) << endl;
cout << "矩形的面积:" << area(3, 4) << endl;
cout << "梯形的面积:" << area(2, 3, 4) << endl;
cout << "三角形的面积:" << area(3, 4, 5, 0) << endl;
return 0;
}
double area(double radius) {
return PI * radius * radius;
}
double area(double a, double b) {
return a * b;
}
double area(double a, double b, double h) {
return (a + b) * h / 2;
}
double area(double a, double b, double c, int) {
double p = (a + b + c) / 2;
double s = sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}
```
2. 以下是使用多文件方式组织的程序:
在area_funcs.h中声明4个面积函数原型:
```cpp
#ifndef AREA_FUNCS_H
#define AREA_FUNCS_H
double area(double radius = 0);
double area(double a, double b);
double area(double a, double b, double h);
double area(double a, double b, double c, int);
#endif
```
在area_funcs.cpp中定义各函数:
```cpp
#include "area_funcs.h"
#include <cmath>
#define PI 3.141593
double area(double radius) {
return PI * radius * radius;
}
double area(double a, double b) {
return a * b;
}
double area(double a, double b, double h) {
return (a + b) * h / 2;
}
double area(double a, double b, double c, int) {
double p = (a + b + c) / 2;
double s = sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}
```
在main.cpp中包含area_funcs.h并定义主函数,对4个面积函数逐一调用,各函数调用时的传入参数自行设定,将结果向屏幕输出:
```cpp
#include <iostream>
#include "area_funcs.h"
using namespace std;
int main() {
cout << "圆的面积:" << area(2) << endl;
cout << "矩形的面积:" << area(3, 4) << endl;
cout << "梯形的面积:" << area(2, 3, 4) << endl;
cout << "三角形的面积:" << area(3, 4, 5, 0) << endl;
return 0;
}
```
阅读全文