C++练习题:学生成绩登记及演示

C++练习题:
1.写一个科目类,包含科目名称,科目分数2个数据成员,一个衡量是否及格的成员函数,用其构造函数为科目对象赋值。

2.写一个学生类,含学号,姓名2个数据成员,以及一个成绩对象指针成员(指向语数外三门成绩对象组成的数组),
在学生类的构造函数中为成绩对象指针成员赋值(申请空间),在学生成绩展示成员函数中,将其三门成绩逐一展示并说明是否及格。

3.主函数中只需要定义一个学生对象,进行成绩登记及演示。
符合题意版:

#include<iostream>
using namespace std;
class Subject {
private:
	char Sname[10];
	int  Score;
public:
	Subject();
	void Pass();
};

Subject::Subject()
{
	cout << "请输入科目名字:";
	cin >> Sname;
	cout << "请输入科目成绩:";
	cin >> Score;
}

void Subject::Pass()
{
	cout << Sname << Score;
	if (Score > 60) {
		cout << " 及格" << endl;
	}
	else {
		cout << " 不及格" << endl;
	}
}


class Student
{
private:
	char Number[12];
	char Name[10];
	Subject* p;
public:
	Student();
	void StuPrint();
};

Student::Student()
{
	p = new Subject[3];
}

void Student::StuPrint()
{
	p[0].Pass();
	p[1].Pass();
	p[2].Pass();
}

void main()
{
	Student s1;
	s1.StuPrint();
}

在这里插入图片描述
随意发挥版:

#include <string>
#include <iostream>

/*
1.写一个科目类,包含科目名称,科目分数2个数据成员,一个衡量是否及格的成员函数,用其构造函数为科目对象赋值。

2.写一个学生类,含学号,姓名2个数据成员,以及一个成绩对象指针成员(指向语数外三门成绩对象组成的数组),
  在学生类的构造函数中为成绩对象指针成员赋值(申请空间),在学生成绩展示成员函数中,将其三门成绩逐一展示并说明是否及格。

3.主函数中只需要定义一个学生对象,进行成绩登记及演示。
*/

using namespace std;

class subject {
private:
    string SubjectName;  //科目名称
    int score;          //科目分数
public:
    void Set(string x, int y) {     //定义赋值函数
        this->SubjectName = x;
        this->score = y;
        return;
    }
    bool check() {                  //一个衡量是否及格的成员函数
        return this->score >= 60;
    }
    void print() {
       
        cout << this->SubjectName << ":" << this->score << " ";
        if (!this->check())
        {
            cout << "成绩不合格" << endl;
        }
        else
        {
            cout << "成绩合格" << endl;
        }
           
    }
};
class student {
private:
    int id;             //学生姓名
    string name;        //学生学号
    subject w[3];       //语数外三个科目
public:
    void Set() {
        cout << "Please input Student's name and id: " << endl;
        cin >> this->name >> id;
        string SubjectName;
        int score;
        cout << "Please input the SubjectName and score:" << endl;
        for (int i = 0; i < 3; i++) {
            cin >> SubjectName;
            cin >> score;
            w[i].Set(SubjectName, score);
        }
        return;
    }
    void print() {
        cout << "姓名:  " << this->name << " 学号:  " << this->id << endl<<"学生成绩:"<<endl;
        for (int i = 0; i < 3; i++) {
            w[i].print();
        }
    }
};
int main() {
    cout << "学成成绩登记查询入口:" << endl;
    student a;
    a.Set();
    a.print();
    return 0;
}

运行结果:

学成成绩登记查询入口:
Please input Student's name and id:
赵海棠 007
Please input the SubjectName and score:
语文 100
数学 59
英语 99
姓名:  赵海棠 学号:  7
学生成绩:
语文:100 成绩合格
数学:59 成绩不合格
英语:99 成绩合格

题目稍有变化:
写一个科目类,包含科目名称,科目分数2个数据成员,一个衡量科目是否及格的成员函数,用其构造函数为科目对象提供初始值,该构造函数无参数,在构造函数里面读入具体的值。

写一个学生类,含学号,姓名2个数据成员,以及一个科目类对象指针成员(指向语数外三门科目对象组成的对象数组),在学生类的构造函数中为学生的学号和姓名提供初始值,并为科目对象指针申请空间,在学生类中用成员函数展示其三门课成绩并说明是否及格,请编写程序。

程序参考运行结果如下:
在这里插入图片描述
符合题意版:

#include<iostream>

using namespace std;
class Subject {
    string SubjectName;
    int SubjectScore;
public:
    Subject();
    void check();
};
Subject::Subject()
{
    cout << "请输入科目名字:";
    cin >> SubjectName;
    cout << "请输入" << SubjectName << "成绩:";
    cin >> SubjectScore;
}
void Subject::check()
{
    cout << SubjectName <<" "<< SubjectScore;
    if (SubjectScore < 60) {
        cout << " 不及格 " << endl;
    }
    else {
        cout << " 及格 " << endl;
    }
}
class Student
{
    long int id;
    string name;
    Subject* p;
public:
    Student();
    ~Student();
    void print();
};
Student::Student()
{
    name = "张某三";
    id = 2019001;
    p = new Subject[3];
}
Student::~Student()
{
    delete[] p;
}
void Student::print()
{
    cout << "学号:" << id<< ",姓名:" << name << ",成绩如下:" << endl;
    p[0].check();
    p[1].check();
    p[2].check();
}
int main()
{
    Student b;
    b.print();
    return 0;
}

在这里插入图片描述

随意发挥版:


#include <string>

#include <iostream>

using namespace std;

class Subject

{

public:

Subject();//无参构造函数

Subject(string x, float y);//有参构造函数

~Subject();

void Set(string x, float y) {     //定义赋值函数

SubjectName = x;

score = y;

}

bool check() {                  //一个衡量是否及格的成员函数

return this->score >= 60;

}

void print() {



cout << this->SubjectName << ":" << this->score << " ";

if (!this->check())

{

cout << "不及格" << endl;

}

else

{

cout << "及格" << endl;

}



}

private:

string SubjectName;  //科目名称

float score;          //科目分数

};





Subject::Subject()

{

}



Subject::Subject(string x, float y)

{

SubjectName=x;

score=y;


}



Subject::~Subject()

{

}

class Student

{

public:

Student();

~Student();



void Set() {


string SubjectName;

int score;

for (int i = 0; i < 3; i++) {

cout << "请输入科目名称:";

cin >> SubjectName;

cout << "请输入"<<SubjectName <<"成绩:" ;

cin >> score;


w[i].Set(SubjectName, score);

}

return;

}



void print() {


cout << "学号:  " << this->id << ",\t" << "姓名:  " << this->name  << ",\t成绩如下:" << endl;

for (int i = 0; i < 3; i++) {

w[i].print();

}

}


private:

string id;             //学生姓名

string name;        //学生学号

Subject w[3];


//语数外三个科目

};



Student::Student()

{

this->id = "2019001";

this->name = "赵海棠";

}



Student::~Student()

{

}

int main() {


Student a;

a.Set();

a.print();


return 0;

}


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值