大一下实验总结(三)

编写一个函数,求两个或三个正数的最大值。要求:用带默认值的函数实现。(注:本题不需要定义类)

注意所要求的是正数的最大值,要求在一个函数中实现比较两个或者三个数,因此需要定义一个带有默认值的函数,来保证实现。

#include <iostream>

using namespace std;

int pan(int a,int b,int c=0)
{
    int i=a;
    if(i>b)
     { if(i>c)
      i=i;
     }
    else
      {
          i=b;
          if(i>c)
            i=i;
        else i=c;
      }
    return i;
}

int main()
{
    int x,y,z;
    cin>>x>>y>>z;
    cout<<pan(x,y)<<endl;
    cout<<pan(x,y,z)<<endl;

    return 0;
}

运行结果

Last login: Wed Mar 23 16:53:22 on ttys001

1 2 3
2
3
i@HUAWEI-MateBook-X-Pro ~ % 

设计一个时间类,其中数据成员:年 月 日;成员函数有三个:(1)构造函数设置年月日的具体值;;(2)判断该年是否为闰年;(3)将年月日输出。编写主函数,实现并测试这个类。

利用构造函数初始化,然后用判断后输出

代码

#include <iostream>

using namespace std;

class Time
{
private:
    int y,m,d;
public:
     Time()
     {cin>>y>>m>>d;}
    void output();
    void pan();
};

void Time::output()
{
    cout<<y<<"年"<<m<<"月"<<d<<"日"<<endl;
}

void Time::pan()
{
    if(y%100==0)
    {
        if(y%400==0)
         cout<<"是闰年"<<endl;
        else
        cout<<"不是闰年"<<endl;
    }
    else
    cout<<"是闰年"<<endl;
}
int main()
{
    class Time a;
    a.pan();
    a.output();

    return 0;
}

 运行结果

Last login: Wed Mar 23 17:40:57 on ttys000
2020 12 1
是闰年
2020年12月1日
i@HUAWEI-MateBook-X-Pro ~ % 


重做之前的一道题,要求使用构造函数。

题目要求如下:定义三角形类,完成:为三边置值、取三边的值并输出、求三角形周长、求三角形面积、输出三角形周长和面积。要求使用构造函数为三边赋值。提示:可以定义一个无参的构造函数,在此构造函数中通过键盘输入的方法输入三边的值。

按照题目构造即可

 代码

#include<iostream>
using namespace std;
#include<cmath>
class triangle
{private:
   int a;
   int b;
   int c;
 public:
   triangle()
   {
       cin>>a>>b>>c;
   }
   int length();
   float area();
   void print();
};
int triangle::length()
 {return a+b+c;}
float triangle::area()
 {float d;
  d=(a+b+c)/2.0;

  return(sqrt(d*(d-a)*(d-b)*(d-c)));

}
void triangle::print(){cout<<length()<<endl<<area()<<endl;}

int main()
{

    triangle s;
    s.print();
    return 0;
}

运行结果

Last login: Wed Mar 23 17:41:13 on ttys000
2 6 7
15
5.56215
i@HUAWEI-MateBook-X-Pro ~ % 


设计并测试一个名为Rectangle 的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。提示:一种方法,可以定义一个矩形类,在类中定义4个数据成员,分别表示左下角和右上角两个点的x、y坐标,这时,在主函数中只需定义一个矩形类的对象即可;第二种方法,可以定义一个坐标类,在类中定义2个数据成员,分别表示x坐标和y坐标,这时,在主函数中需要定义两个坐标类对象,即左下角坐标和右上角坐标对象。

这里选择定义四个数据成员的类求解面积

#include <iostream>
#include <cmath>

using namespace std;

class Rectangle
{
private:
    double x,y,n,m;
public:
    Rectangle()
    {
        cin>>x>>y>>n>>m;
    }
    double area();

};
double Rectangle::area()
{
    double i=fabs(y-m),j=fabs(x-n);
   return i*j;
}
int main()
{
    Rectangle r;
    cout<<r.area()<<endl;

    return 0;
}

 运行结果

Last login: Wed Mar 23 17:41:13 on ttys000
0 0 12 15
180
i@HUAWEI-MateBook-X-Pro ~ % 


创建一个Student类,该类中具有学生姓名,学号,性别,年龄,三科成绩、平均成绩等数据成员。在该类中定义成员函数实现相关信息的输入、输出,学生成绩的统计。实现并测试这个类。

下述代码默认平均成绩未知

代码

#include <iostream>
#include  <cstring>

using namespace std;

class Student
{
private:
    string a,b;
    char c;
    int d;
    double x,y,z,m;
public:
    Student ()
    {
        cin>>a>>b>>c>>d>>x>>y>>z;

    }
    void ave();
    void output();
};
void Student::ave()
{
   m=(x+y+z)/3.0;
}
void Student::output()
{
    cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<x<<" "<<y<<" "<<z<<" "<<m<<endl;
}
int main()
{
    Student a;
    a.ave();
    a.output();
    return 0;
}

 注:代码只包含了只有一个同学的情况,可以定义有关Student类的数组进行多个同学的数据处理。


创建一个函数plus,它把两个数值加在一起,返回它们的和,提供处理int、double和string类型的重载版本。 (注:本题不需要定义类) (注意函数名plusVC++6.0编译系统下能调试通过,但在一些编译系统下会报错,因为在某些编译系统下被处理成了关键字,报错时换个名字即可,比如改成plus1等)

定义重载函数 ,数据成员分别为int、double、string。

代码

#include <iostream>
#include <cstring>

using namespace std;
void plus1(int a,int b)
{
    cout<<a+b<<endl;
}
void plus1(double a,double b)
{
    cout<<a+b<<endl;
}
void plus1(string a,string b)
{
    cout<<a+b<<endl;
}
int main()
{
    double m,n;
    string i,j;
    int x,y;
    cin>>m>>n;
    plus1(m,n);
    cin>>i>>j;
    plus1(i,j);
    cin>>x>>y;
    plus1(x,y);
    return 0;
}

运行结果

Last login: Wed Mar 23 17:48:29 on ttys000
2.3 6.9
9.2
sahow sdoix
sahowsdoix
9 11
20
i@HUAWEI-MateBook-X-Pro ~ % 

 


定义动态整数数组,数组大小由输入值决定,对数组中的数据进行降序排序。算法结束时,回收存储空间。(注:本题不需要定义类)

new一个动态正数数组,在主函数排序输出,最后记得delete就OK。

代码

#include <iostream>

using namespace std;

int main()
{
    int *p,n;
    cin>>n;
    p=new int [n];
    for(int i=0;i<n;i++)
        cin>>p[i];
    if(p)
    {
     for(int i=0;i<n-1;i++)
         for(int j=0;j<n-i-1;j++)
           if(p[j]<p[j+1])
           swap(p[j],p[j+1]);
      for(int i=0;i<n;i++)
          cout<<p[i]<<" ";
    }
    cout<<endl;
        delete []p;
    return 0;
}

 运行结果

Last login: Wed Mar 23 18:00:28 on ttys000
5
2 3 6 1 5
6 5 3 2 1 
i@HUAWEI-MateBook-X-Pro ~ % 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值