【CSP试题回顾】201503-3-节日

CSP-201503-3-节日

关键点:格式化输出

在C++中,格式化输出通常利用iostream库中的功能,特别是iomanip头文件提供的一系列操作符。这些操作符用于控制输出格式,如宽度、填充、对齐方式等。在你提供的代码中,用于格式化输出的部分主要涉及setwsetfill操作符。

  1. setw(int n):这是一个格式化操作符,用于设置下一个输出值的宽度。在此处,n代表输出值应占用的字符数。如果实际数值的位数少于n,则根据对齐方式(默认右对齐),输出会在左侧填充空格或其他字符(如果设置了填充字符)。

  2. setfill(char c):这个操作符用于设置用于填充额外空间的字符。默认情况下,如果使用setw设置的宽度大于实际数据的宽度,空出的位置会被空格填充。setfill可以改变这个默认行为,用另一个字符来替代空格。例如,setfill('0')会使用0来填充空白。例如

    • setw(4) << setfill('0') << year:这保证了年份year以四个字符的宽度输出,不足四位的部分会用0补足。例如,如果年份是1995,它将正常输出为"1995";如果年份是205,则输出为"0205"。

解题思路

  1. 输入年份和日期规则:用户输入五个整数:a(月份),b(该月的第几个星期),c(星期几),y1(开始年份),y2(结束年份)。程序需要输出从y1年到y2年每年的a月第b个星期c的日期。

  2. 闰年判断:实现一个isLeapYear函数来判断给定的年份是否是闰年。如果年份能被400整除,或者能被4整除但不能被100整除,则该年是闰年。这对于计算二月份的天数和确定日期很重要。

  3. 计算天数总和:从1850年开始,计算到目标年份(year)之前的所有年份中每一年的天数总和。普通年有365天,闰年有366天。

  4. 月份处理:累加目标年份的月份之前的所有月份的天数。如果目标年份是闰年并且目标月份大于2月(意味着影响到二月的天数),则需要额外加一天。

  5. 计算目标月份的第一天是星期几:已知1850年1月1日是星期二,基于这一点和之前累计的天数,可以计算出目标月份的第一天是星期几。

  6. 计算目标日期:基于目标月份的第一天是星期几,计算出该月的第b个星期c是哪一天。这里需要考虑目标星期c与该月第一天星期的差,并计算出准确日期。

  7. 输出结果:对于每个年份,先检查计算出来的日期是否合法(即是否超出了该月的实际天数)。如果日期合法,则以“yyyy/mm/dd”的格式输出;如果不合法(如计算出的日期超出了该月的天数),则输出"none"。

  8. 异常处理和格式化:程序需要处理各种边界情况,如闰年的二月、每个月的天数不同等。同时,输出格式要求年、月、日分别以四位数、两位数、两位数表示,位数不足时前面补零。

完整代码

#include<iostream>
#include<string>
#include<vector>
#include <iomanip> 
using namespace std;bool isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int daysOfMonth[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };int main() {int month, weekOrdinal, weekday, startYear, endYear;cin >> month >> weekOrdinal >> weekday >> startYear >> endYear;for (int year = startYear; year <= endYear; year++) {long long dayCount = 0;  // 从1850年1月1日起的总天数for (int i = 1850; i < year; i++) {dayCount += isLeapYear(i) ? 366 : 365;}for (int i = 1; i < month; i++) {dayCount += daysOfMonth[i - 1];}if (isLeapYear(year) && month > 2) dayCount++;  // 闰年且月份超过2,增加一天int firstDayOfWeek = (2 + dayCount) % 7;  // 当前年月的1号是星期几if (firstDayOfWeek == 0) firstDayOfWeek = 7;  // 调整星期的值,使其从1到7int dayOfMonth = 1 + (weekOrdinal - 1) * 7;  // 当月的目标日期int offset = weekday - firstDayOfWeek;  // 需要调整的天数if (offset < 0) offset += 7;dayOfMonth += offset;// 检查日期是否存在(注意闰年)if (dayOfMonth > (month == 2 && isLeapYear(year) ? 29 : daysOfMonth[month - 1])) {cout << "none" << endl;  // 日期不存在}else {cout << year << "/" << setw(2) << setfill('0') << month << "/" << setw(2) << setfill('0') << dayOfMonth << endl;}}return 0;
}

请添加图片描述

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

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

相关文章

基于Springboot+Layui餐厅点餐系统

一、项目背景 在互联网经济飞速发展的时代&#xff0c;网络化企业管理也在其带领下快速兴起&#xff0c;开发一款自主点餐系统会受到众多商家的青睐。现如今市场上的人力资源价格是非常高昂的&#xff0c;一款自主点餐系统可以减少餐厅的人力开销&#xff0c;将服务员从繁忙的…

RESTful接口规范参考

介绍 REST&#xff08;Representational State Transfe&#xff09;&#xff0c;一种架构设计风格&#xff0c;而不是强制标准&#xff0c;主要用于客户端与服务端接口规范&#xff1b;在现代的软件开发中&#xff0c;RESTful API已经成为应用程序之间通信的重要桥梁&#xff…

【Java】小白友好的Javassist源代码级别常用API学习笔记

目录 介绍 Javassist&ASM? Javassist关键类 常用方法 ClassPool 的常用方法 CtClass 的常用方法 CtMethod 的常用方法 CtField 的常用方法 补充 setSuperclass in Javassist constructor in Javassist toBytecode in Javassist Javassist实现TemplatesImpl恶…

电磁兼容EMC:单、双面板的均匀传输线

目录 1 传输线 2 均匀传输线 3 特征阻抗 4 应用案例 为何要讲单、双面板的均匀传输线&#xff1f;因为均匀传输线能保证信号质量&#xff0c;减少EMC问题&#xff0c;而单双面板没有完整的地和电源平面&#xff0c;很难实现均匀传输线的布线&#xff0c;所以更需要知道如何在…

[数据集][图像分类]玉米叶子病害分类数据集9145张4类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;9145 分类类别数&#xff1a;4 类别名称:["cercospora_leaf_spot gray…

08 |「Fragment 」

前言 实践是最好的学习方式&#xff0c;技术也如此。 文章目录 前言一、简介1、是什么2、为什么要有 Fragment3. Fragment 详细解释 二、Fragment 与 Activity 的直观理解三、Fragment 的创建1、Fragment 的创建方式2、Fragment 的增删替查1&#xff09; 替换&#xff08;常见&…

01背包问题 刷题笔记

思路 dp 用f[i][j]来表示当体积为j时 考虑前i件物品可以获得的 最大值 记住f[i][j]本身是个价“价值” 考虑两种状态 是否将第i件物品放入背包里面 将背包的体积从小到大递增来进行考虑 首先 考虑条件 如果当前增加的体积放不下下一件物品 则该体积 可以获得的最大值可以直接…

[剪藏] - 教育系统的成功

我在国内并没有系统地学习语音&#xff0c;在英国也未能成功&#xff0c;现在美国我确定我已经行驶在轨道上了&#xff08;即使未来的作业分数及格或不及格&#xff09;。 我反思有这么几点&#xff1a; 1. 美国紧扣系统的教材&#xff0c;不是老师自由发挥。教材是知识精英们…

tidyverse去除表格中含有NA的行

在tidyverse中&#xff0c;特别是使用dplyr包&#xff0c;去除含有NA的行可以通过filter()函数结合is.na()和any()或all()函数来实现。dplyr是tidyverse的一部分&#xff0c;提供了一系列用于数据操作的函数&#xff0c;使数据处理变得更加简单和直观。 以下是一个简单的例子&…

软考笔记--软件系统质量属性

一.软件系统质量属性的概念 软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说&#xff0c;软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理…

关于汽车E\E架构演进的思考(2)

目录 1.概述 2. 整车通信的限制 3 如何保证融合ECU的功能安全和信息安全 4.小结 1.概述 上篇文章主要聊了当前电子电气架构以及未来电子电气架构的特点&#xff0c;简述了即将要面临的挑战&#xff0c;下面我们继续讲述挑战。 2. 整车通信的限制 下一代架构主要以以太网…

python 爬虫 爬电视剧 小网站没经验别看 这个网站没看到不让爬的公告 也没说流量啥的 应该能爬 你们用的话要注意 只供学习使用 不可商用

在开始运行爬虫之前&#xff0c;请确保已经安装了相关依赖&#xff0c;并且在目标小网站上搜索你想要下载的电视剧名称&#xff0c;确认能够精确搜索到相关内容而没有被禁止爬取或者受到流量限制。如果你对爬虫没有相关经验&#xff0c;建议先撤退。 为了爬取电视剧内容&#…

记一次busybox-mountPath简单但容易忽略的问题open /proc/self/fd: no such file or directory

目录 一.设备条件介绍 二.我的目的 三.问题所在 1.在用以下pod进行测试的时候出现问题 2.报错 3.解决 4.解决完成 一.设备条件介绍 [rootk8s-master pv]# containerd --version containerd containerd.io 1.6.25 d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f ​ [rootk…

Centos9环境部署MySQL的PXC

前期理解 pxc就是将多个mysql数据库整合为一个集群&#xff0c;每台服务器上的mysql数据库会实时同步&#xff0c;而且节点与节点之间&#xff0c;他们相互的关系是对等的。PXC 最关注的是数据的一致性&#xff0c;对待事物的行为时&#xff0c;要么在所有节点上执行&#xff…

爬虫(四)

1.图片验证码 import requestsres requests.get(https://www.gushiwen.cn/RandCode.ashx)with open("code.png", "wb") as f:f.write(res.content)2.打码平台 网址&#xff1a;http://www.ttshitu.com/&#xff0c;找到开发文档点击Python,没有钱了要用我…

Day 53 |● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和

1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size()1,vector<int>(text2.size()1,0));int res 0;for(int i 1; i < text1.size(); i){for(int j 1; j <…

Leetcode148 排序链表

排序链表 题解1 线性表题解2 自顶向下归并排序题解3 自底向上归并排序 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回排序后的链表 。 题解1 线性表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* L…

网络编程第1天

OSI的七层网络模型有哪些&#xff0c;每一层有什么作用&#xff1f; &#xff08;1&#xff09;应用层 负责处理不同应用程序之间的通信&#xff0c;需要满足提供的协议&#xff0c;确保数据发送方和接收方的正确 应用层提供的协议&#xff1a; HTTP&#xff1a;超文本传输…

React-Redux简单使用

1.配置环境 1.1开启项目 npx create-react-app react-redux-pro 1.2安装配套工具 说明&#xff1a;安装Redux Toolkit和react-redux。Redux Toolkit(RTK)~官方推荐编写Redux逻辑的方式&#xff0c;是一套工具的集合集&#xff0c;简化书写方式&#xff1b;react-redux-用来…

【Leetcode】3028.边界上的蚂蚁

题目描述 思路 题目中要求我们返回 蚂蚁返回到边界的次数。简单来想&#xff0c;就是蚂蚁原来的位置的一维坐标为0&#xff0c;然后经过&#xff0c;若干次移动&#xff0c;统计有几次坐标再次变为0的个数。 我们利用前缀和&#xff0c;像定义一个数组&#xff0c;算出前缀和数…