C++作业5.0

目录

作业1

思路

代码

作业2:

思路

代码


作业1

写一个函数show_array,要求传入两个参数 void show_array(T t,int len)

第一个参数为数组默认值,第二个参数为数组的长度

此函数的功能为创建一个长度为len类型为T,默认值为t的数组并输出。

思路

定义了一个函数模板show_array,其目的是创建一个指定类型和长度的数组,并将给定的默认值填充到数组的每个元素中,然后输出这个数组。。

代码

#include <iostream>

using namespace std;

template<typename T>
void show_array(T t,int len)
{
    T arr[len];
    for(int i=0;i<len;i++)
        arr[i]=t;
    for(int i=0;i<len;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
}

int main()
{
    show_array(3,5);
    show_array(3.14,8);
    show_array('a',10);
    return 0;
}

作业2:

定义学生类,有姓名,学号,性别,年龄等私有成员变量,有构造和析构函数,有打印信息的成员函数。

要求通过构造函数可以给属性赋予初始值。

定义大学生类,继承自学生类,大学生有专业名、成绩的私有成员变量,还有是否获得奖学金的成员函数(成绩为判断依据)。隐藏基类打印信息的成员函数,新的打印信息的成员函数也要能打印姓名、学号、性别、年龄信息。

要求通过构造函数可以给属性赋予初始值。

再定义研究生类,继承自大学生类,有导师姓名和工资的私有成员变量,有打印工资这个成员函数。

要求通过构造函数可以给属性赋予初始值。

思路

一、整体功能概述

 

实现了一个学生信息管理系统,包含了学生类(Student)、大学生类(DaStudent)和研究生类(YanStudent)的定义和使用。每个类都有特定的属性和方法,通过继承关系实现了代码的复用和扩展。

 

二、类的定义与分析

 
  1. Student类:

    • 成员变量
      • name:学生姓名,字符串类型。
      • id:学生学号,整数类型。
      • sex:学生性别,字符串类型。
      • age:学生年龄,整数类型。
    • 构造函数
      • Student(string name, int id, string sex, int age):接受学生的姓名、学号、性别和年龄作为参数,初始化成员变量。
    • 成员函数
      • show_Student():输出学生的基本信息,包括姓名、学号、性别和年龄。
    • 析构函数
      • ~Student():默认析构函数,目前为空。
  2. DaStudent类(大学生类):

    • 成员变量
      • 继承自Student类的成员变量。
      • zyname:专业名称,字符串类型。
      • score:成绩,整数类型。
    • 构造函数
      • DaStudent(string name, int id, string sex, int age, string zyname, int score):接受学生的基本信息以及专业名称和成绩作为参数,调用基类构造函数初始化继承的成员变量,并初始化自己的成员变量。
    • 成员函数
      • show_Student():重写了基类的show_Student函数,先调用基类的函数输出基本信息,然后输出专业名称和成绩。
      • jxj():判断学生是否有奖学金,根据成绩是否大于 90 来确定。
    • 析构函数
      • ~DaStudent():默认析构函数,目前为空。
  3. YanStudent类(研究生类):

    • 成员变量
      • 继承自DaStudent类的成员变量。
      • dsname:导师姓名,字符串类型。
      • money:工资,整数类型。
    • 构造函数
      • YanStudent(string name, int id, string sex, int age, string zyname, int score, string dsname, int money):接受学生的基本信息、专业名称、成绩、导师姓名和工资作为参数,调用基类构造函数初始化继承的成员变量,并初始化自己的成员变量。
    • 成员函数
      • show_money():输出研究生的工资。
    • 析构函数
      • ~YanStudent():默认析构函数,目前为空。
 

三、主函数分析

 

创建一个普通学生对象s、一个大学生对象d和一个研究生对象y,并分别调用它们的成员函数来输出信息和判断奖学金情况。

代码

#include <iostream>

using namespace std;

class Student
{
private:
    string name;
    int id;
    string sex;
    int age;
public:
    Student(string name,int id,string sex,int age):name(name),id(id),sex(sex),age(age){}
    ~Student(){}
    void show_Student()
    {
        cout<<"姓名:"<<name<<" "<<"学号:"<<id<<" "<<"性别:"<<sex<<" "<<"年龄:"<<age;
    }
};

class DaStudent:public Student
{
private:
    string zyname;
    int score;
public:
    DaStudent(string name,int id,string sex,int age,string zyname,int score):Student(name,id,sex,age),zyname(zyname),score(score){}
    ~DaStudent(){}

    void show_Student()
    {
        cout<<endl;
        Student::show_Student();
        cout<<" "<<"专业:"<<zyname<<" "<<"成绩:"<<score<<" ";
    }
    int jxj()
    {
        return score>90;
    }

};

class YanStudent:public DaStudent
{
private:
    string dsname;
    int money;
public:
    YanStudent(string name,int id,string sex,int age,string zyname,int score,string dsname,int money):DaStudent(name,id,sex,age,zyname,score),dsname(dsname),money(money){}
    ~YanStudent(){}
    void show_money()
    {
        cout<<"研究生工资:"<<money<<endl;
    }
};

int main()
{
    Student s("张三",01,"man",14);
    s.show_Student();
    DaStudent d("李四",02,"man",18,"电科",95);
    d.show_Student();
    cout<<"是否有奖学金:"<<(d.jxj()?"是":"否")<<endl;
    YanStudent y("王五",03,"woman",18,"土木",60,"老王",666);
    y.show_money();

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值