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

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';elsegrade='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; // 返回dayint get_month() const; //返回monthint get_year() const; // 返回yearstatic void set_default(int, int, int); //设置default_datestatic int get_default_day(); //返回缺省daystatic int get_default_month(); //返回缺省monthstatic int get_default_year(); //返回缺省yearDate & 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.mzph.cn/news/831369.shtml

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

相关文章

与 Apollo 共创生态:企业解决方案Apollo X 9.0,七载同舟,携手远航,视频简说

目录 介绍背景方案与项目Apollo 开源项目Apollo X 企业解决方案落地因素助力企业落地流程 预置套件需求定义功能定义场景用例融合技术面向园区功能安全Cyber RT企业硬件套件 开发工具链研发迭代范式协同研发工具链标定工具地图工具仿真平台数据闭环 企业合作模式合作方式 共创计…

挑战一周完成Vue3项目Day4: 用户管理+角色管理+菜单管理+首页+暗黑模式/主题切换

一、用户管理 1.静态搭建 src/views/acl/user/index.vue <template><el-card style"height:80px;"><el-form :inline"true" class"form"><el-form-item label"用户名&#xff1a;"><el-input placehold…

Docker——生产案例(如何修改Docker部署服务的端口映射)

目录 前言 1. 测试环境中新建Apache服务 2.停止容器和Docker服务 3.修改容器配置 4.重启Docker服务并访问测试 前言 由于接替原工作人员的工作之后&#xff0c;上级需要修改Docker部署Apache服务的端口映射&#xff0c;将89端口修改为99端口&#xff0c;那我们该如何修改呢…

JAVA 学习·泛型(二)——通配泛型

有关泛型的基本概念&#xff0c;参见我的前一篇博客 JAVA 学习泛型&#xff08;一&#xff09;。 协变性 泛型不具备协变性 在介绍通配泛型之前&#xff0c;先来看一下下面的例子。我们定义了一个泛型栈&#xff1a; import java.util.ArrayList; class GenericStack<E>…

如何完全卸载QT

第一步&#xff0c;用QT自带的软件卸载QT 第二步&#xff0c;卸载下面路径的所有QT配置 C:用户/(你的用户)/AppData/Local/目录下所有与Qt相关内容 C:用户/(你的用户)/AppData/Local/Temp/所有与Qt相关内容 C:用户/(你的用户)/AppData/Roaming/所有与Qt相关内容

android init进程启动流程

Android系统完整的启动流程 android 系统架构图 init进程的启动流程 init进程启动服务的顺序 bool Service::Start() {// Starting a service removes it from the disabled or reset state and// immediately takes it out of the restarting state if it was in there.flags_…

vue快速入门(五十一)历史模式

注释很详细&#xff0c;直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式&#xff0c;历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

Hive 表定义主键约束

文章目录 1.建表语句2.主键约束3.主键约束的意义参考文献 1.建表语句 先看一下官方给的完整的见表语句&#xff1a; CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data…

全新TOF感知RGBD相机 | 高帧率+AI,探索3D感知新境界

海康机器人在近期的机器视觉新品发布会上推出的全新TOF感知RGBD相机,无疑是对当前机器视觉技术的一次革新。这款相机不仅融合了高帧率、轻松集成、体积小巧以及供电稳定等诸多优点,更重要的是,它将AI与3D感知技术完美结合,通过高帧率+AI算法,实现了对不同场景的快速捕捉与…

电脑重装系统ip地址会变吗

在数字化世界中&#xff0c;IP地址就像是每个计算机设备的“门牌号”&#xff0c;它帮助我们在互联网上进行定位和通信。然而&#xff0c;当我们的电脑系统进行重新安装时&#xff0c;许多用户会担心其IP地址是否会发生改变。虎观代理小二将带您深入探讨电脑重装系统后IP地址的…

Android Studio报错:Constant expression required

【出现的问题】&#xff1a; 使用JDK17以上版本&#xff0c;switch语句报错&#xff1a;Constant expression required 【解决方法】&#xff1a; 在gradle.properties配置文件下添加代码&#xff1a; android.nonFinalResIdsfalse 如图&#xff1a; 接着再点击右上角的Sync…

详解 Go 程序的启动流程,你知道 g0,m0 是什么吗?

自古应用程序均从 Hello World 开始&#xff0c;你我所写的 Go 语言亦然&#xff1a; import "fmt"func main() {fmt.Println("hello world.") }这段程序的输出结果为 hello world.&#xff0c;就是这么的简单又直接。但这时候又不禁思考了起来&#xff0…

Android Studio实现简单的自定义钟表

项目目录 一、项目概述二、开发环境三、详细设计3.1、尺寸设置3.2、绘制表盘和指针3.3、动态效果 四、运行演示五、总结展望六、源码获取 一、项目概述 在安卓开发中&#xff0c;当系统自带的View已经无法满足项目需求时&#xff0c;就要自定义View。在Android中是没有与钟表有…

chrome extension插件替换网络请求中的useragent

感觉Chrome商店中的插件不能很好的实现自己想要的效果,那么就来自己动手吧。 本文以百度为例: 一般来说网页请求如下: 当前使用的useragent是User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safar…

android studio项目实战——备忘录(附源码)

成果展示&#xff1a; 1.前期准备 &#xff08;1&#xff09;在配置文件中添加权限及启动页面顺序 ①展开工程&#xff0c;打开app下方的AndroidManifest.xml,添加权限&#xff0c;如下&#xff1a; <uses-permission android:name"android.permission.CAMERA"…

【Proteus】LED呼吸灯 直流电机调速

1.LED呼吸灯 #include <REGX51.H> sbit LEDP2^0; void delay(unsigned int t) {while(t--); } void main() {unsigned char time,i;while(1){for(time0;time<100;time){for(i0;i<20;i){LED0;delay(time);LED1;delay(100-time);}}for(time100;time>0;time--){fo…

软件工程全过程性文档(软件全套文档整理)

软件项目相关全套精华资料包获取方式①&#xff1a;进主页。 获取方式②&#xff1a;本文末个人名片直接获取。 在软件开发的全过程中&#xff0c;文档是记录项目进展、决策、设计和测试结果的重要工具。以下是一个简要的软件全过程性文档梳理清单&#xff1a; 需求分析阶段…

基于 Spring Boot 博客系统开发(五)

基于 Spring Boot 博客系统开发&#xff08;五&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;四&#xff09;&#x1f…

go-mysql-transfer 同步数据到es

同步数据需要注意的事项 前提条件 1 要同步的mysql 表必须包含主键 2 mysql binlog 必须是row 模式 3 不支持程序运行过程中修改表结构 4 要赋予连接mysql 账号的权限 reload, replication super 权限 如果是root 权限则不需要 安装 go-mysql-transfer ​ git clone…

每日OJ题_DFS爆搜深搜回溯剪枝⑧_力扣980. 不同路径 III

目录 力扣980. 不同路径 III 解析代码 力扣980. 不同路径 III 980. 不同路径 III 难度 困难 在二维网格 grid 上&#xff0c;有 4 种类型的方格&#xff1a; 1 表示起始方格。且只有一个起始方格。2 表示结束方格&#xff0c;且只有一个结束方格。0 表示我们可以走过的空…