实验题目:c++基础(C++对C的扩充)。
实验目的:通过编写C++程序,掌握函数参数的调用规则和重载函数的使用。
实验内容及步骤:
-
编写一个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:返回圆的半径;函数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 版权协议,转载请附上原文出处链接和本声明。