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;
}