9月12日实验报告

  • Post author:
  • Post category:其他


实验题目:c++基础(C++对C的扩充)。

实验目的:通过编写C++程序,掌握函数参数的调用规则和重载函数的使用。

实验内容及步骤:

  1. 编写一个C++风格的程序,实现用两个整数相加,两个浮点数相加,三个整数相加,要求用函数

    重载

    实现。(函数名字一样,参数个数和类型可以区分)
#include<iostream> //预处理命令 
using namespace std;//使用名字空间std 

int add(int x,int y)//定义第一个函数,两个整数相加,函数名都是add,但参数类型和个数不同,该部分是函数的重载实现
{
	return x+y;
}
float add(float x,float y)//定义第二个函数,两个浮点数相加 
{
	return x+y;
}

int add (int x,int y,int z)//定义第三个函数,三个整数相加 
{
	return x+y+z;
}

int main()//主函数首部 
{        //函数体开始 
	int a,b,c,t;//定义变量,实现函数调用 
	cin>>a>>b;//,指向变量,输入a,b
	t=add(a,b);//函数调用 
	cout<<"t="<<t<<endl;//输出 
	
	cin>>a>>b>>c;
	t=add(a,b,c);
	cout<<"t="<<t<<endl;
	
	float x,y,r;
	cin>>x>>y;
	r=add(x,y);
	cout<<"r="<<r<<endl;
	
	return 0;//如果程序正常结束,向操作系统返回一个零值 
}

运行结果:

2、编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前30项,并将结果存储到

动态分配

的空间中;

未实现动态分配代码:
#include<iostream>
using namespace std;

int main()
{
	int f[30]={1,1}; //定义初始值,Fibonacci数列的前2项,都为1
	int i;
	
	for(i=2;i<30;i++) //for循环,从第3项开始,即i=2时 
	f[i]=f[i-1]+f[i-2];
	
	for(i=0;i<30;i++)
	cout<<f[i]<<endl;
	
	return 0;
}

运行结果:

实现动态分配代码:
#include<iostream>
using namespace std;

int main()
{
    //int f[30]={1,1};
	int *p;
	p=new int [30];
	p[0]=1;
	*(p+1)=1;// p[1]
	int i;
	
	for(i=2;i<30;i++)//for循环,从第3项开始,即i=2时 
	p[i]=p[i-1]+p[i-2];
	
	for(i=0;i<30;i++)
	cout<<p[i]<<endl;
	
	delete[]p;
	return 0;
}

运行结果:

3、编写一个C++风格的程序,自定义一个函数,要求实现输入两个整数,让他们交换两个数的位置后输出,要求写一个自定义函数,且函数参数使用指针实现数据交换;

#include<iostream>
using namespace std;

void swap(int *a,int *b)//地址作为实参,即swap(&a,&b),形参用指针,即swap(int *a,int *b)
{
	int t; //定义第三个变量作为中转 
	t=*a;
	*a=*b;
	*b=t; //以上三行赋值作用是实现a和b的交换 
}
int main()
{
	int a,b;
	cin>>a>>b;//输入a,b 
	swap(&a,&b); //调用swap实现交换,如果写swap(a,b);只是值传递,不会改变主调函数中的实参的值,所以要实现交换a和b的位置,且改变实参的值只能是用地址传递 
	cout<<a<<'\n'<<b<<endl;//换行输出 
	return 0;
}

运行结果:

  1. 求圆的周长和面积,要求:从键盘上输入圆的半径,自定义三个函数,函数1:返回圆的半径;函数2:求其周长;函数3:求其面积。

方法一:

#include<iostream>
using namespace std;
int main()
{
	double r,Girth,Area;
	const double Pi=3.1415926;//常量,固定值不可改变 
	cin>>r;
	Girth=2*Pi*r;
	Area=Pi*r*r;
	cout<<"半径是:"<<r<<endl;
	cout<<"周长是:"<<Girth<<endl;
	cout<<"面积是:"<<Area<<endl; 
	return 0;
}

运行结果:

方法二:利用封装

#include<iostream> 
using namespace std;
const double Pi=3.1415926;
double Set_Radius(double r)
{
	return r;
}
double Get_Radius(double r)
{
	return r;
}
double Get_Girth(double r)
{
	return 2*Pi*r;
}
double Get_Area(double r)
{
	return Pi*r*r;
}
int main()
{
	double r,Girth,Area;
	r=Set_Radius(1.2);//调用函数的方式实现对半径的设置:把括号里的值传递给函数Set_Radius
    //函数再把这个值return,return后再通过赋值语句把半径r做了设定 
	cout<<"以下是第一个圆的信息:"<<endl;
	cout<<"半径是:"<<Set_Radius(r)<<endl; 
	cout<<"周长是:"<<Get_Girth(r)<<endl; //获取这个半径所对应的周长 
	cout<<"面积是:"<< Get_Area(r)<<endl;//获取这个半径所对应的面积 
	
	r=Set_Radius(1.3);//改变r,变成另外一个圆 
	cout<<"以下是第二个圆的信息:"<<endl;
	cout<<"半径是:"<<Set_Radius(r)<<endl; 
	cout<<"周长是:"<<Get_Girth(r)<<endl; 
	cout<<"面积是:"<< Get_Area(r)<<endl; 
	
	return 0;
}

运行结果:

方法三:面向对象的思想

#include<iostream>
using namespace std;
const double Pi=3.1415926;//设定好常量 
class Circle//完成一个圆的类定义 
{
	private://私有的函数 
	double r;//私有成员r 
	public://共有的函数 
	void Set_Radius(int radius)//设置半径,为公有成员 
	{
		r=radius;//将参数radius对私有成员r进行赋值 
	}
	double Get_Radius()//获取半径,获取的是私有成员r里面记录的半径,为公有成员  
	{
		return r;
	}
	double Get_Girth()//获取周长,即将私有成员r拿来做运算,为公有成员 
	{
		return 2*Pi*r;
	}
	double Get_Area()//获取面积,为公有成员  
	{
		return Pi*r*r;
	}
};
int main()
{
Circle A,B;
A.Set_Radius(1);
cout<<"半径是:"<<A.Get_Radius()<<endl;
cout<<"周长是:"<<A.Get_Girth()<<endl;
cout<<"面积是:"<<A.Get_Area()<<endl; 
B.Set_Radius(2);
cout<<"半径是:"<<B.Get_Radius()<<endl;
cout<<"周长是:"<<B.Get_Girth()<<endl;
cout<<"面积是:"<<B.Get_Area()<<endl; 
return 0;
} 

运行结果:



版权声明:本文为Yutouxn0原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。