1 实验目的
熟悉C++中输入、输出流的使用方法,体会函数重载的优点及其使用规则,学会如何利用new和delete进行动态内存分配。
2 实验内容
(1)C++输入输出流
要求:输入一个整数,判断数的奇偶性后输出结果,要求使用C++输入输出流完成。
(2)C++的函数扩展
要求:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积。
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型参数起表示作用,以区别于梯形,不参加计算。
(3)C++的动态内存分配
要求:使用new来创建一个包含5个int类型的动态数组[5,3,9,8,6],并输出最大值和最小值,最后使用delete来释放该数组
3 实验步骤
(1)C++输入输出流
首先声明一个整数,利用cin为其赋值,然后通过模2来判断奇偶性。原代码如下:
#include <iostream>
int main()
{
using namespace std;
int num;
cout << "please input a integer: ";
cin >> num;
if(num % 2 == 1)
cout << num << " is odd." <<endl;
else
cout << num << " is even." <<endl;
return 0;
}
(2)C++的函数扩展
本题考察函数重载的使用。注意到同名函数的参数列表需要不同,因而在最后一个函数的参数列表中故意设置一个flag以区别前面的函数。源代码如下:
#include <iostream>
#include <math.h>
double area(double radius) // 圆面积,参数为半径
{
const double Pi = 3.1415927;
double circle_area;
circle_area = Pi * radius * radius;
return circle_area;
}
double area(double a, double b)// 计算矩形面积,参数为长和宽
{
double rectangle_area;
rectangle_area = a * b;
return rectangle_area;
}
double area(double a, double b, double h)// 计算梯形面积,参数为两底和高
{
double trapezoid_area;
trapezoid_area = 0.5 * (a + b) * h;
return trapezoid_area;
}
double area(double a, double b, double c, int flag)// 三角形,参数为三边长,int型参数起表示作用,以区别于梯形,不参加计算
{
double triangle_area, semiperimeter;
semiperimeter = (a + b + c) / 2;
triangle_area = sqrt(semiperimeter * (semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c));
return triangle_area;
}
int main()
{
using namespace std;
double radius, circle_area;
cout << "please input radius: ";
cin >> radius;
circle_area = area(radius);
cout << "circle's area: " << circle_area << endl;
double a, b, rectangle_area;
cout << "please input length and width: ";
cin >> a >> b;
rectangle_area = area(a,b);
cout << "rectangle's area: " << rectangle_area << endl;
double h, trapezoid_area;
cout << "please input topline, baseline and height: ";
cin >> a >> b >> h;
trapezoid_area = area(a,b,h);
cout << "trapezoid's area: " << trapezoid_area << endl;
double c, triangle_area;
cout << "please input length of three sides: ";
cin >> a >> b >> c;
triangle_area = area(a,b,c,1);
cout << "triangle's area: " << triangle_area << endl;
return 0;
}
(3)C++的动态内存分配
首先利用new申请一个具有五个元素的整型数组指针变量,然后赋值,寻找最值,最后,利用delete释放内存。代码如下:
#include <iostream>
int main()
{
using namespace std;
int *a = new int[5];
a[0] = 5;
a[1] = 3;
a[2] = 9;
a[3] = 8;
a[4] = 6;
int max = a[0], min = a[0];
for(int i=1;i<5;++i)
{
if(a[i]>max)
max = a[i];
else if(a[i]<min)
min = a[i];
}
cout << "max: " << max <<endl
<< "min: " << min <<endl;
delete []a;
return 0;
}
4 实验结果
(1)C++输入输出流
输入5,有
输入6,有
(2)C++的函数扩展
输入圆的半径:3;
长方形的长:4,宽:3;
梯形的上底:2,下底:4,高2;
三角形三边:3,4,5。
输出有:
(3)C++的动态内存分配
5 心得小结
通过本次实验,我学会了如何使用C++的输入输出流进行基本的输出、赋值等操作,熟悉了如何利用new和delete进行动态内存的申请,了解了函数重载的使用方法。在编程实践中,发现自己对于动态内存申请的一些操作还不太熟悉,还不能很好的同C语言的一些规则区分开来,需要再看书练习加以巩固。