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年不是闰年
相关文章:

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]存储期…...
数据库语法复习
总结: DDL(数据定义语言) CREATE DATABASE:创建一个新的数据库。DROP DATABASE:删除一个数据库。CREATE TABLE:创建一个新的表。DROP TABLE:删除一个表。ALTER TABLE:修改表的结构&a…...

Tomcat、MySQL、Redis最大支持说明
文章目录 一、Tomcat二、MySQL三、Redis1、最大连接数2、TPS、QPS3、key和value最大支持 一、Tomcat 查看SpringBoot内置Tomcat的源码,如下: 主要就是看抽象类AbstractEndpoint,可以看到默认的核心线程数10,最大线程数200 通过…...
MATLAB数值计算工具箱介绍
MATLAB是一个强大的数学计算平台,它提供了广泛的数值计算工具箱,这些工具箱覆盖了从基础的线性代数到复杂的数值分析和优化问题。以下是MATLAB中一些关键工具箱的详细介绍: 1. 线性代数工具箱(Linear Algebra Toolbox)…...
2023 广东省大学生程序设计竞赛(部分题解)
目录 A - Programming Contest B - Base Station Construction C - Trading D - New Houses E - New but Nostalgic Problem I - Path Planning K - Peg Solitaire A - Programming Contest 签到题:直接模拟 直接按照题目意思模拟即可,为了好去…...

ROS2学习——Docker环境下安装于使用(1)
目录 一、简要 二、ROS2和ROS1区别 三、环境搭建与安装 (2)拉取ubuntu22.04镜像 (2)安装ROS2 1. 基本设置 2.设置源 3.安装ROS2功能包 4.测试 四、相关指令学习 1.小海龟测试 2.ros2 node等指令 3.rqt 一、简要 随着R…...
数据仓库之Hologres
官方文档 简介 Hologres是阿里云推出的一种云原生的实时分析型数据仓库。它是基于开源项目Apache Hudi(Hadoop Upserts Deletes and Incrementals)进行扩展和优化的。Hologres提供了高性Hologres是阿里云推出的一种云原生的实时分析型数据仓库。它是基…...

MacOS搭建docker本地私有镜像库
相关环境 macOS: bigsur 11.7.8 docker desktop: 4.22.0 docker engine: 24.0.5 准备工作 本机已经安装好docker desktop,未安装的自行参考其他教程。如果不能翻墙,可以修改本地的镜像地址,可在docker desktop 设置中的docker engine中修…...

Unity Material(材质)、Texture(纹理)、Shader(着色器)简介
文章目录 一、概念二、Rendering Mode三、Main Maps三、参考文章 一、概念 Material(材质):物体的“色彩”、“纹理”、“光滑度”、“透明度”、“反射率”、“折射率”、“发光度”等,材质的本质是shader的实例(载体)Texture(贴图):附件到…...

《视觉十四讲》例程运行记录(1)—— 课本源码下载和3rdparty文件夹是空的解决办法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、第二版十四讲课本源码下载1. 安装git工具 二、Pangolin下载和安装1. 源码下载2. Pangolin的安装(1) 安装依赖项(2) 源码编译安装(2) 测试是否安装成功 二、…...

VLM与基础分割模型的联合使用
最近做的项目里有涉及大模型,里面有一部分的功能是: 将图片输入VLM(视觉语言模型,我使用的是llava),询问图中最显著的物体,将其给出的答案作为基础分割模型(我使用的是Grounded-SAM)的text prom…...
JS数组去重的方法
目录 1、includes 2、indexOf 3、Set结合Array.from 4、filter 5、reduce 6、使用双重for循环 介绍一下数组常用的去重复方法 以以下数组为例子来介绍,一维的数字类型数组: const arr [1, 2, 2, 2, 3, 1, 6, 4, 4, 6, 5, 7] 1、includes funct…...

Go实战训练之Web Server 与路由树
Server & 路由树 Server Web 核心 对于一个 Web 框架,至少要提供三个抽象: Server:代表服务器的抽象Context:表示上下文的抽象路由树 Server 从特性上来说,至少要提供三部分功能: 生命周期控制&…...
C#中接口设计相关原则
在C#中,接口(Interface)是一种引用类型,它定义了一个契约,指定了一个类必须实现的成员(属性、方法、事件、索引器)。接口不提供这些成员的实现,只指定成员必须按照特定的方式被实现。…...

Pytorch学习笔记——卷积操作
一、认识卷积操作 卷积操作是一种数学运算,它涉及两个函数:输入函数(通常是图像)和卷积核(也称为滤波器或特征检测器)。卷积核在输入函数上滑动,将核中的每个元素与其覆盖的输入函数区域中的对应…...

探索鸿蒙开发:鸿蒙系统如何引领嵌入式技术革新
嵌入式技术已经成为现代社会不可或缺的一部分。而在这个领域,华为凭借其自主研发的鸿蒙操作系统,正悄然引领着一场技术革新的浪潮。本文将探讨鸿蒙开发的特点、优势以及其对嵌入式技术发展的深远影响。 鸿蒙操作系统的特点 鸿蒙,作为华为推…...

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…...
PHP基础【介绍,注释,更改编码,赋值,数据类型】
源码 <?php //单行注释 /* 多行注释 *///通过header()函数发送http头的请求信息用来指定页面的字符集编码 header("Content-type:text/html;Charsetutf-8"); //告诉浏览器,当前页面的内容类型是HTML,并且页面内容使用的是UTF-8编码。//ph…...

ASP.NET小型证券术语解释及翻译系统的设计与开发
摘 要 在系统设计上,综合各种翻译类型网站优缺点,设计出具有任何使用者都可添加术语信息的且只有管理员能够实现术语修改及删除等独特方式的术语查看管理系统。此方式能够使术语量快速增大,并且便于使用者及管理员操作,满足相互…...

硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。
1. 音频接口 音频插座是一种用于连接音频信号线路的电子元件,常见于音频设备(如音响、耳机、话筒等)中。它的主要作用是将电子信号转化为声音信号,以满足人们对于音乐、电影、游戏等方面的需求。 根据插头形状的不同,音…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...