BJFUOJ-C++程序设计-实验2-类与对象

完整题目见BJFUOJ-C++程序设计-实验2-类与对象-CSDN博客

A 评分程序

答案:

#include<iostream>
#include<cstring>

using namespace std;

class Score{
private:
    string name;//记录学生姓名
    double s[4];//存储4次成绩,s[0]和s[1]存储2次随堂考试,s[2]存储期中考试,s[3]存储期末考试
    double total;//记录总评成绩
    char grade='B';  //记录对应的等级
public:
    void Input();
    void Evalauate();
    void Output();
};

void Score::Input()
{
    string n;
    double t1 ,t2,t3,t4;
    cin>>n>>t1>>t2>>t3>>t4;
    name=n;
    s[0]=t1;
    s[1]=t2;
    s[2]=t3;
    s[3]=t4;
    total=t1*0.25+t2*0.25+t3*0.25+t4*0.5;
}

void Score::Evalauate()
{
    if(total>=90)
        grade='A';
    else if(total>=80)
        grade='B';
    else if(total>=70)
        grade='C';
    else if(total>=60)
        grade='D';
    else
        grade='E';
}

void Score::Output()
{
    if(s[0]>=0&&s[0]<=50&&s[1]>=0&&s[1]<=50&&s[2]>=0&&s[2]<=100&&s[3]>=0&&s[3]<=100)
        cout<<"name: "<<name<<", total: "<<total<<", grade: "<<grade;
    else{
        cout<<"error";
    }
}

int main()
{
    Score *s1=new Score;
    s1->Input();
    s1->Evalauate();
    s1->Output();
    return 0;
}

重要知识点:

类的指针类型对象:
使用指针类型调用其成员。

B 日期类(选做)

答案:

#include<iostream>
#include<cstring>
using namespace std;

int getDays(int m, int y)
{
    if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
    {
        switch (m)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 2:
            return 29;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        }
    }
    else
    {
        switch (m)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 2:
            return 28;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        }
    }
    return 0;
}


class Date
{
public:
   Date(int d = 0, int m = 0, int y = 0); //构造函数
   int get_day() const; // 返回day
   int get_month() const; //返回month
   int get_year() const; // 返回year
   static void set_default(int, int, int); //设置default_date
   static int get_default_day(); //返回缺省day
   static int get_default_month(); //返回缺省month
   static int get_default_year(); //返回缺省year
   Date & add_year(int n); //加n年
   Date & add_month(int n); //加n月,考虑超过12月
   Date & add_day(int n); //加n天,考虑进位月和年,考虑闰年
private:
   int day, month, year;
   static Date default_date; //初始化为 1901年1月1日
};

Date::Date(int d,int m,int y)
{
    day=d;
    month=m;
    year=y;
}

int Date::get_day() const
{
    return day; 
} 

int Date::get_month() const
{
    return month;   
} 

int Date::get_year() const
{
    return year;    
} 

Date Date::default_date(1, 1, 1901);

void Date::set_default(int td, int tm, int ty)
{
    default_date=Date(td,tm,ty);
}

int Date::get_default_day()
{
    return default_date.day;
}

int Date::get_default_month()
{
    return default_date.month;
}

int Date::get_default_year()
{
    return default_date.year;
}

Date & Date::add_day(int n)
{
    day+=n;
    while(day>getDays(month,year))//注意使用while而非if,下同
    {   
        day-=getDays(month,year);
        add_month(1); 
    }
    return *this;
}

Date & Date::add_month(int n)
{
    month+=n;
    while(month>12)
    {
        month-=12;
        year++;
    }
    add_day(0);//处理加“月”后“2月30日”、“4月31日”之类的情况。下同
    return *this;
}

Date & Date::add_year(int n)
{
    year+=n;
    add_day(0);
    return *this;
}



int main()
{
   char type[110];
   int day,mon,year;
   int addday,addmon,addyear;
   while(cin>>type)
   {
      if(strcmp(type,"Date") == 0)
      {
         cin>>day>>mon>>year;
         Date mydate(day,mon,year);
         cin>>addday>>addmon>>addyear;
         mydate.add_day(addday).add_month(addmon).add_year(addyear);
         cout << mydate.get_day() << " " << mydate.get_month() << " " << mydate.get_year() << endl;
      }
      else if(strcmp(type,"defaultDate") == 0) 
      {
          cout << Date::get_default_day() << " " << Date::get_default_month() << " " << Date::get_default_year() << endl;
      }
      else if(strcmp(type,"setdefaultDate") == 0)
      {
         cin>>day>>mon>>year;
         Date::set_default(day,mon,year);
         cout << Date::get_default_day() << " " << Date::get_default_month() << " " << Date::get_default_year() << endl;
      }
   }
   return 0;
}

重要知识点:

吐槽一下,这题出的真逆天
基本上算是对之前知识点的大杂烩
·成员函数返回值为类时, return *this返回自身对象的使用。
·部分代码逻辑值得参考:
如add_day(0);
getDays函数的使用与实现;
经典易错闰年判断:(y % 4 = = 0 && y % 100 != 0) || (y % 400 == 0) 1800年不是闰年

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇