实验目录:点击打开链接
1、第一题
1、定义一个point类。要求:
数据成员:x,y
成员函数:
设置x的值,设置y的值,获取x的值,获取y的值,
move函数(将点移动到新的位置,新位置的坐标以形参的方式给出)
编写主函数进行测试
#include<bits/stdc++.h>
using namespace std;
class Point
{
double x,y;
public:
friend istream&operator >>(istream &in ,Point &a)
{
cout<<"请输入坐标"<<endl;
in>>a.x>>a.y;
return in;
}
friend ostream&operator <<(ostream &out ,Point &a)
{
cout<<"坐标:"<<endl;
out<<a.x<<" "<<a.y<<endl;
return out;
}
int move(double i,double j)
{
x=i;
y=j;
}
};
int main()
{
Point p;
cin>>p;
double x,y;
cout<<"请输入移动后坐标"<<endl;
cin>>x>>y;
p.move(x,y);
cout<<p;
return 0;
}
2.第二题
2、创建一个Student类,该类中具有学生姓名,学号,性别,年龄,三科成绩、平均成绩等数据成员。在该类中定义成员函数实现相关信息的输入、输出
,学生成绩的统计。实现并测试这个类。
#include<bits/stdc++.h>
using namespace std;
class Student
{
string name,id,age,sex;
double m,c,e,ave;
public:
friend istream&operator >>(istream &in, Student&a)
{
cout<<"学生姓名";in>>a.name;
cout<<"学号";in>>a.sex;
cout<<"性别";in>>a.sex;
cout<<"年龄";in>>a.age;
cout<<"语文成绩";in>>a.c;
cout<<"数学成绩";in>>a.m;
cout<<"英语成绩";in>>a.e;
return in;
}
friend ostream&operator <<(ostream &out ,Student &a)
{
cout<<"学生姓名";out<<a.name<<endl;
cout<<"学号";out<<a.sex<<endl;
cout<<"性别";out<<a.sex<<endl;
cout<<"年龄";out<<a.age<<endl;
cout<<"语文成绩";out<<a.c<<endl;
cout<<"数学成绩";out<<a.m<<endl;
cout<<"英语成绩";out<<a.e<<endl;
cout<<"平均成绩";out<<a.ave<<endl;
return out;
}
int getave()
{
ave=(c+m+e)/3;
}
};
int main()
{
Student s;
cin>>s;
s.getave();
cout<<s;
return 0;
}
3.第三题
3、写两个重载函数sort,分别实现对int和double 数组进行排序。两个函数分别采用冒泡排序和选择排序。在main函数中调用这两个函数。
#include<iostream>
using namespace std;
void sort(int a[10],int);
void sort(double b[10],int);
int main()
{
int a[10]={3,1,2,4,5,2,6,7,8,0};
double b[10]={1.0,2.3,1.3,4.5,7.8,8.9,4.4,5.1,8.9,1.7};
sort(a,10);
sort(b,10);
return 0;
}
void sort(int a[10],int n)
{int i,j,temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void sort(double b[10],int n)
{int i,j,k;
double temp;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(b[j]<b[k])
k=j;
if(k!=i)
{
temp=b[k];
b[k]=b[i];
b[i]=temp;
}
}
for(i=0;i<n;i++)
cout<<b[i]<<" ";
cout<<endl;
}
4.第四题
4、编写一个函数,求两个或三个正数的最大值。要求:用带默认值的函数实现。
#include<iostream>
using namespace std;
int max(int x,int y,int z);//注意声明时z不能赋值
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<max(a,b)<<endl;
cout<<max(a,b,c);
return 0;
}
int max(int x,int y,int z=0)
{
int m;
if(x>y&&x>z) m=x;
if(y>x&&y>z) m=y;
if(z>x&&z>y) m=z;
return m;
}
五.第五题
创建一个函数plus,它把两个数值加在一起,返回它们的和,提供处理int、double和string类型的重载版本。
#include<iostream>
using namespace std;
int pluss(int x,int y); //olus不能用
double pluss(double x,double y);
string pluss(string x,string y);
int main()
{
int a,b;
cin>>a>>b;
cout<<pluss(a,b)<<endl;
double c,d;
cin>>c>>d;
cout<<pluss(c,d)<<endl;
string x,y;
cin>>x>>y;
cout<<pluss(x,y)<<endl;
return 0;
}
int pluss(int x,int y)
{
return x+y;
}
double pluss(double x,double y)
{
return x+y;
}
string pluss(string x,string y)
{
return x+y;
}
六.第六题
6、定义动态整数数组,数组大小由输入值决定,对数组中的数据进行降序排序。算法结束时,回收存储空间。
#include <iostream>
using namespace std;
int main()
{ int n;
cin>>n;
int *a;
a=new int [n];
for(int i=0;i<n;i++)
cin>>a[i];
for(i=1;i<=n-1;i++)
for(int j=0;j<=n-i-1;j++)
{
if(a[j]<a[j+1])
{ int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
for( i=0;i<n;i++)
cout<<a[i]<<"\t";
delete []a;
return 0;
}
七.第七题
7、用new和delete运算符动态分配内存空间的方法编写程序。从键盘输入15个整型数放入一个数组中,并计算所有元素之和,打印出最大值、最小值和平均值
#include<iostream>
using namespace std;
int main()
{
int *p=new int[15];
cout<<"输入15个整数:"<<endl;
int min=0,max=0,sum=0;
for(int i=0;i<15;i++)
{ cin>>p[i];
if(i>0)//不是第一个元素
{if(min>p[i])
min=p[i];
if(max<p[i])
max=p[i];
}
else //是第一个元素
min=max=p[i];
sum=sum+p[i];
}
int aver=sum/15.0;
cout<<"sum="<<sum<<endl<<"average="<<aver<<endl<<"max="<<max<<endl<<"min="<<min<<endl;
delete []p;
return 0;
}