c++ 实验四 期末回顾

实验目录:点击打开链接

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类,该类中具有学生姓名,学号,性别,年龄,三科成绩、平均成绩等数据成员。在该类中定义成员函数实现相关信息的输入、输出

,学生成绩的统计。实现并测试这个类

扫描二维码关注公众号,回复: 1814290 查看本文章

#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,分别实现对intdouble 数组进行排序。两个函数分别采用冒泡排序和选择排序。在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,它把两个数值加在一起,返回它们的和,提供处理intdoublestring类型的重载版本

#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、用newdelete运算符动态分配内存空间的方法编写程序。从键盘输入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;
}


猜你喜欢

转载自blog.csdn.net/sdz20172133/article/details/80866397