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

news2024/11/25 20:29:28

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日”之类的情况。下同
	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年不是闰年

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1639676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

003 redis分布式锁 jedis分布式锁 Redisson分布式锁 分段锁

文章目录 Redis分布式锁原理1.使用set的命令时&#xff0c;同时设置过期时间2.使用lua脚本&#xff0c;将加锁的命令放在lua脚本中原子性的执行 Jedis分布式锁实现pom.xmlRedisCommandLock.javaRedisCommandLockTest.java 锁过期问题1乐观锁方式&#xff0c;增加版本号(增加版本…

香港立法會議員容海恩女士確定出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的飛速發展&#xff0c;全球正步入邊緣計算智能化與分布式AI深度融合的新紀元&#xff0c;共同演繹著分布式智能創新應用的壯麗篇章。在這一背景下&#xff0c;邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量…

区块链 | IPFS:CID

&#x1f98a;原文&#xff1a;Anatomy of a CID &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 CID 在分布式网络中与其他节点交换数据时&#xff0c;我们依赖于内容寻址&#xff08;而不是中心化网络的位置寻址&#xff09;来安全地定位…

Flutter笔记:Widgets Easier组件库(5)使用加减器

Flutter笔记 Widgets Easier组件库&#xff08;5&#xff09;&#xff1a;使用加减器 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…

项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)

1.主要内容 包括&#xff1a;组织通用治理、组织通用管理、法律法规与标准规范。 2.详细内容 第22章 组织通用治理 1分 第23章 组织通过管理 1分 第24章 法律法规与标准规范 2分

python+Pyppeteer+SpringBoot验证码自动识别登录(文末附源码)

效果如下&#xff1a; 实现流程&#xff1a; 一、Pyppeteer打开网址 import asyncio from pyppeteer import launch import pdb import random# 启动 Pyppeteer browser await launch({headless: False}) page await browser.newPage()# 打开登录页面 await page.goto(http…

【跟马少平老师学AI】-【神经网络是怎么实现的】(五)梯度消失问题

一句话归纳&#xff1a; 1&#xff09;用sigmoid激活函数时&#xff0c;BP算法更新公式为&#xff1a; 用sigmoid函数&#xff0c;O取值为0~1&#xff0c;O(1-O)最大值为0.25&#xff0c;若神经网络层数多&#xff0c;则会造成更新项趋近于0&#xff0c;称为梯度消失。 2&#…

蓝桥杯练习系统(算法训练)ALGO-950 逆序数奇偶

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 老虎moreD是一个勤于思考的青年&#xff0c;线性代数行列式时&#xff0c;其定义中提到了逆序数这一概念。不过众所周知我们…

I2C接口18路LED呼吸灯驱动IS31FL3218互相替代SN3218替换HTR3218

I2C接口18路LED呼吸灯控制电路IC 该型号IC为QFN24接口&#xff0c;属于小众产品&#xff0c;IS31FL3218、SN3218、HTR3218S管脚兼容&#xff0c;需要注意的是HTR3218管脚与其他型号不兼容。 I2C接口可实现多个LED灯的呼吸灯控制&#xff0c;可实现单色控制18个LED灯&#xff0…

场景文本检测识别学习 day06(Vi-Transformer论文精读、MAE论文阅读)

Vi-Transformer论文精读 在NLP领域&#xff0c;基于注意力的Transformer模型使用的非常广泛&#xff0c;但是在计算机视觉领域&#xff0c;注意力更多是和CNN一起使用&#xff0c;或者是单纯将CNN的卷积替换成注意力&#xff0c;但是整体的CNN 架构没有发生改变VIT说明&#x…

亚马逊关键字搜索商品列表API接口:探索海量商品的利器

亚马逊关键字搜索商品列表API接口允许开发者通过输入关键字或特定参数&#xff0c;在亚马逊平台上进行商品搜索&#xff0c;并返回符合搜索条件的商品列表信息。这些信息包括商品的标题、图片、价格、评价等&#xff0c;为商家、开发者以及市场分析师提供了丰富的商品数据支持。…

信息系统项目管理师0082:项目基础(6项目管理概论—6.2项目基本要素—6.2.1项目基础)

点击查看专栏目录 文章目录 6.2项目基本要素6.2.1项目基础1.独特的产品、服务或成果2.临时性工作3.项目驱动变更4.项目创造业务价值5.项目启动背景记忆要点总结6.2项目基本要素 6.2.1项目基础 项目是为创造独特的产品、服务或成果

【Java从入门到精通】Java 正则表达式

目录 正则表达式实例 &#x1f349;java.util.regex 包 &#x1f349;实例 &#x1f349;捕获组 &#x1f349;实例 &#x1f349;RegexMatches.java 文件代码&#xff1a; &#x1f349;正则表达式语法 &#x1f349;Matcher 类的方法 &#x1f349;索引方法 &#…

常用SQL命令

应用经常需要处理用户的数据&#xff0c;并将用户的数据保存到指定位置&#xff0c;数据库是常用的数据存储工具&#xff0c;数据库是结构化信息或数据的有序集合&#xff0c;几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据&#xff0c;进行数据访问控制&…

一周零碎时间练习微服务(nacos,rq,springcloud,es等)内容

目录 1 总览1.1 技术架构1.2 其他1.2.1 数据库1.2.2 后端部分1.2.2.1 复习feign1.2.2.2 复习下网关网关的核心功能特性&#xff1a;网关路由的流程断言工厂过滤器工厂全局过滤器 过滤器执行顺序解决跨域问题 1.2.2.3 es部分复习 1.2.3 前端部分 2 day1 配置网关2.1 任务2.2 网关…

机器学习笔记-14

机器学习系统设计 1.导入 以垃圾邮件分类器为例子&#xff0c;当我们想要做一个能够区分邮件是否为垃圾邮件的项目的时候&#xff0c;首先在大量垃圾邮件中选出出现频次较高的10000-50000词作为词汇表&#xff0c;并为其设置特征&#xff0c;在对邮件分析的时候输出该邮件的特…

OpenCV4.9失焦去模糊滤镜(67)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9的基于距离变换和分水岭算法的图像分割(66) 下一篇 :OpenCV4.9去运动模糊滤镜(68) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是退化图像模型失焦图像的 PSF 是多少如何恢复…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更换理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

ubuntu外置网卡配置AP模式

外置网卡RTL8811CU设置 UBUNTU使用RTL8811CU网卡&#xff08;包含树莓派&#xff09; 外置网卡配置AP模式流程 1. 检查网卡支持情况&#xff08;是否支持AP模式&#xff09; iw list找到以上部分&#xff0c;发现支持AP 2. 安装依赖 sudo apt-get update sudo apt-get in…

Django数据库创建存储及管理

一、什么是ORM Django的ORM(Object-Relational Mapping)是Django框架中一个非常重要的组件。ORM可以让开发者以面向对象的方式操作数据库,而不需要直接编写SQL语句。 具体来说,Django ORM提供了以下功能: 模型定义:开发者可以在Django应用中定义Python类来表示数据库表,这些…