当前位置: 首页 > news >正文

C/C++蓝桥杯之日期问题

问题描述:小明正在整理一批文献,这些文献中出现了很多日期,小明知道这些日期都在1960年1月1日至2059年12月31日之间,令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的,更加麻烦的是年份都省略了前两位,使得文献上的一个日期存在很多可能的日期与其对应。

例如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。

程序输入格式:AA/BB/CC(0<=A,B,C<=9)

输出格式:输出若干个不相同的日期,每个日期一行格式是:''yyyy-mm-dd''多个日期按从早到晚的顺序排列。

分析:本题的思路很简单,将输入的三个数据分别进行年,月,日的合法判断,如果合法就输出,但是求解本题要注意以下两点。

(1)月份数据的表示

由于每月的天数没有规律性,所以最好的方法就是利用数组将每月的天数表示出来,如:

int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

这里还要注意闰年问题,如果是闰年,则二月的数据就会不同,可以采用另一个数组存储

如:int leapdays[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

(2)合法年/月/日的存储

对于一组数据可能会出现重复的合法年/月/日。例如:01/01/01,这三组合法数据都是2001/01/01,所以这要进行去重。

去重时,可以采用直接判断三组数据是否相等的方法,也可以利用C++ STL中的set容器进行自动去重。

用C语言: 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//不是闰年的时候
int leapdays[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };//是闰年的时候
int data[4][4];//用来存放日期
int i;//用于数组的序号 
int leapyear(int year)//判断是否是闰年
{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){return 1;}else{return 0;}
}
void check(int y, int m, int d)
{if (y >= 60)//年份的后两位大于60,说明应该是19年开头{y = 19 * 100 + y;}else//否则是20年开头{y = 20 * 100 + y;}if (m > 12)return;if(leapyear(y))//判断是否是闰年,采用对应的数组{if(leapdays[m]<d)return;}else{if(days[m]<d)return;}if (i > 0)//进行去重处理{for (int j = 0; j < i; j++){if (data[j][0] == y && data[j][1] == m && data[j][2] == d)//判断日期是不是合法 return;}}data[i][0] = y;data[i][1] = m;data[i][2] = d;i++;
}int main()
{int a, b, c, e, f, g;int d[3];i = 0;scanf("%d/%d/%d", &a, &b, &c);check(a, b, c);//分别互换日期查看是否成立check(c, a, b);check(c, b, a);for (int j = 0; j < i; j++){d[j] = data[j][0] * 10000 + data[j][1] * 100 + data[j][2];}for (int m = 0; m < i; m++)//按从早到晚的顺序排列{for (int n=0; n < i - 1 - m; n++){if (d[n] > d[n + 1]){int tmp = d[n];d[n] = d[n + 1];d[n + 1] = tmp;}}}for (int j = 0; j < i; j++)//打印{e = d[j] / 10000;f = (d[j] / 100) % 100;g = d[j] % 100;printf("%d-%02d-%02d\n", e, f, g);}return 0;
}

用C++:

#include<bits/stdc++.h>
using namespace std;
struct date  //定义一个结构体存放日期
{ int year;int month;int day;
}que[4];
int s=0; //用于结构体的序号 
int cmp(date x,date y);//比较函数sort的参数,定义了怎样排序 
int leapyear(int year);//用于判断是不是闰年 
int judge_date(int year,int month,int day);//判断日期是不是合法 
void judge(int year,int month,int day);//主要调用上面函数,把日期存进数组 void judge(int year,int month,int day)
{int flag=1; //标记日期是否重复 if(year>=60)//年份的后两位大于60,说明应该是19年开头year = 19* 100 + year;else year = 20* 100 + year;if(judge_date(year,month,day)){   //如果日期合法 for(int i=0;i<s;i++){    //判断结构体中是否已经存在相同的日期 if(que[i].day==day&&que[i].month==month&&que[i].year==year){   flag=0;break;}}if(flag){   //如果没有相同的日期就存进结构体中 que[s].year=year;que[s].month=month;que[s].day=day;s++;}}	
}int judge_date(int year,int month,int day) //判断日期是否合法 
{  int sum;switch(month) //判断输入的月份一共有多少天,和输入的天数比较 {  case 1: case 3: case 5: case 7: case 8: case 10: case 12:sum=31;break;case 4:case 6: case 9: case 11:sum=30;break;case 2:sum=28;break;}if(month==2&&leapyear(year))sum=29;if(sum>=day&&day>0&&month>=1&&month<=12) //如果天数小于该月总天数,且大于0,月份也在1~12,则合法 return 1; elsereturn 0;
}int leapyear(int year)
{   //判断是否闰年 if(year%4==0 && year%100!=0 || year%400==0)return 1;elsereturn 0;
}int cmp(date x,date y)
{   //比较函数 if(x.year<y.year) //年份按递增排序 return 1;else if(x.year==y.year) {   //如年份相同,比较月份 if(x.month<y.month)return 1;else if(x.month==y.month) //如月份相同,比较天数 {  if(x.day<y.day)return 1;}}return 0;
} 
int main()
{int a,b,c;scanf("%d/%d/%d",&a,&b,&c);judge(a,b,c);//分别把日期换位置,看是否合法judge(c,a,b);judge(c,b,a);sort(que,que+s,cmp);//按从早到晚的顺序排列 for(int i=0;i<s;i++)//输法日期 printf("%d-%02d-%02d\n",que[i].year,que[i].month,que[i].day);return 0;
}

相关文章:

C/C++蓝桥杯之日期问题

问题描述&#xff1a;小明正在整理一批文献&#xff0c;这些文献中出现了很多日期&#xff0c;小明知道这些日期都在1960年1月1日至2059年12月31日之间&#xff0c;令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日…...

【理解指针(二)】

文章目录 一、指针的运算&#xff08;1&#xff09;指针加整数&#xff08;2&#xff09;指针减指针&#xff08;指针关系运算&#xff09; 二、野指针&#xff08;1&#xff09;野指针的成因&#xff08;1.1&#xff09;指针未初始化&#xff08;1.2&#xff09;指针的越界访问…...

使用AI纠正文章

我写了一段关于哲学自学的读书笔记&#xff0c;处于好奇的目的&#xff0c;让AI帮我纠正语法和逻辑。我的原文如下&#xff1a; 泰勒斯第一次提出了水是万物本源的说法&#xff0c;对于泰勒斯为什么提出这样的观点&#xff0c;或者是这样的观点是怎么来的&#xff0c;我们无从所…...

拼多多API批量获取商品详情信息

随着电子商务的蓬勃发展&#xff0c;淘宝作为中国最大的在线购物平台之一&#xff0c;每天需要处理海量的商品上架和交易。为了提高工作效率&#xff0c;自动化上架商品和批量获取商品详情信息成为了许多商家和开发者的迫切需求。本文将详细介绍淘宝的API接口及其相关技术&…...

杨辉三角(C语言)

杨辉三角 一.什么是杨辉三角 一.什么是杨辉三角 每个数等于它上方两数之和。 每行数字左右对称&#xff0c;由1开始逐渐变大。 第n行的数字有n项。 前n行共[(1n)n]/2 个数。 … 当前行的数上一行的数上一行的前一列的数 void yanghuisanjian(int arr[][20], int n) {for (int i…...

宏任务与微任务:JavaScript异步编程的秘密

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

vant van-field 密码输入框小程序里隐藏、显示密码bug总结

老规矩先上效果图: vant 输入框组件 密码的隐藏与显示功能&#xff1a; 注: 用password属性控制密码的显示与隐藏 不要用type属性&#xff0c;type属性在真机上有时会没有效果 1、当然如果只用typepassword 不需要切换显示、隐藏也可以使用。 2、如果用到了密码的显示与…...

代理ip应用场景

代理IP是一种网络技术&#xff0c;它允许用户通过中间来访问互联网资源&#xff0c;隐藏真实的IP地址代理IP的应用场景非常泛&#xff0c;以下是一些常见的应用场景&#xff1a; 1 隐私保护&#xff1a;使用代理IP可以隐藏用户的真实IP地址&#xff0c;保护个人隐私。在浏览网…...

C/C++指针详解

接下来我们来介绍一下什么是指针&#xff1f; 指针其实就是元素存放地址&#xff0c;更加形象的比喻&#xff1a;在酒店中如果你想要去注必须去付费不然不能住&#xff0c;在计算机也同样如此&#xff08;但是不需要付费哦&#xff09;每当我们使用一个变量或其他需要申请空间…...

实验一:华为VRP系统的基本操作

1.1实验介绍 1.1.1关于本实验 本实验通过配置华为设备&#xff0c;了解并熟悉华为VRP系统的基本操作 1.1.2实验目的 理解命令行视图的含义以及进入离开命令行视图的方法 掌握一些常见的命令 掌握命令行在线帮助的方法 掌握如何撤销命令 掌握如何使用命令快捷键 1.1.3实验组网 …...

ChatGPT发不出消息?GPT发不出消息怎么办?

前言 今天发现&#xff0c;很多人的ChatGPT无法发送信息&#xff0c;我就登陆看一下自己的GPT的情况&#xff0c;结果还真的无法发送消息&#xff0c;ChatGPT 无法发送消息&#xff0c;但是能查看历史的对话&#xff0c;不过通过下面的方法解决了。 第一时间先打开官方的网站&a…...

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 回顾一下第一代 GPT-1 &#xff1a; 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式&#xff1b;模型架构是基于 Transformer 的叠加解码器&#xff08;掩码自注意力机制、残差、Layernorm&#xff09;&a…...

解决:Glide 在回调中再次加载图片报错

一、问题说明 Glide 加载图片时监听了回调&#xff0c;并在失败时再次加载其它图片后报错。 代码&#xff1a; Glide.with(mContext).load(imgTeacher).listener(new RequestListener<Drawable>() {Overridepublic boolean onLoadFailed(Nullable GlideException e, O…...

Java学习笔记之IDEA的安装与下载以及相关配置

1 IDEA概述 ​IDEA全称IntelliJ IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境&#xff1a; ​把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具。 2 IDEA…...

【共享内存】System V共享内存{通信原理/相关接口/代码测试}

文章目录 1.初识共享内存1.0浅谈System V1.1什么是共享内存&#xff1f;1.2Linux-System V共享内存1.3图解共享内存1.4对共享内存的理解 2.创建共享内存2.1共享内存如何创建&#xff1f;2.2代码运行与测试2.3shm与pipe的区别2.4shm缺乏访问控制 3.代码理解shm3.1Log.hpp3.2comm…...

Web渗透测试流程

什么是渗透测试 渗透测试 (penetration test),是通过模拟恶意黑客的攻击方法&#xff0c;来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析&#xff0c;这个分析是从一个攻击者可能存在的位置来进行的&#xff0c;并且从这个…...

探索机器学习的无限可能性:从初学者到专家的旅程

探索机器学习的无限可能性&#xff1a;从初学者到专家的旅程 在当今数字时代&#xff0c;机器学习无疑是最引人注目的技术之一。它已经深入到我们生活的方方面面&#xff0c;从个性化推荐到自动驾驶汽车&#xff0c;再到医疗诊断和金融预测。但是&#xff0c;即使我们已经见证…...

【python】六个常见爬虫案例【附源码】

大家好&#xff0c;我是博主英杰&#xff0c;整理了几个常见的爬虫案例&#xff0c;分享给大家&#xff0c;适合小白学习 一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序&a…...

Java零基础-多维数组

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…...

Linux网络套接字之UDP网络程序

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 实现一个简单的对话发消息的功能&#xff01; 目录…...

docker网络模式-none-host-bridge-container-overlay

&#x1f31f;docker网络模式 &#x1f433; none 模式&#xff08;无网络&#xff09; 特点&#xff1a;容器拥有自己的网络命名空间&#xff0c;但 不配置任何网络接口&#xff08;除了 lo 回环接口&#xff09;。用途&#xff1a;适用于不需要网络功能的容器&#xff0c;比…...

跨平台 Conda 环境迁移:从 Linux 到 Windows 的完整指南

1. 为什么需要跨平台迁移 Conda 环境&#xff1f; 作为一个常年混迹在 Linux 和 Windows 双系统的开发者&#xff0c;我深刻理解环境迁移的痛苦。你可能遇到过这种情况&#xff1a;在 Linux 服务器上训练好的机器学习模型&#xff0c;想在 Windows 本地机器上部署测试&#xff…...

双降论文重复率与AI率工具实测,2026高效方案汇总

现在国内高校和期刊普遍采用重复率AIGC率双重审核标准&#xff0c;单一功能的降重或消AI痕迹工具已经难以满足投稿、毕业需求。我们针对知网、维普、Turnitin等主流检测平台做了多轮实测&#xff0c;筛选出几款适配不同场景的高效工具&#xff0c;覆盖中英文论文、本科生初稿到…...

Speechless:终极微博备份神器,5分钟掌握完整PDF导出指南

Speechless&#xff1a;终极微博备份神器&#xff0c;5分钟掌握完整PDF导出指南 【免费下载链接】Speechless 把新浪微博的内容&#xff0c;导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你是否曾担心那些记录…...

Windows HEIC缩略图终极指南:3分钟搞定iPhone照片预览

Windows HEIC缩略图终极指南&#xff1a;3分钟搞定iPhone照片预览 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还在为Windows…...

手把手教你用Orbbec Astra Pro在ROS中实现ORB-SLAM2(Ubuntu16.04环境)

深度视觉实战&#xff1a;Orbbec Astra Pro与ORB-SLAM2在ROS中的全流程部署指南 当三维视觉遇上机器人操作系统&#xff0c;会碰撞出怎样的火花&#xff1f;如果你正在寻找一套高性价比的RGB-D SLAM解决方案&#xff0c;Orbbec Astra Pro与ORB-SLAM2的组合绝对值得尝试。本文将…...

突破Windows音频限制:Equalizer APO系统级音效处理的3大创新

突破Windows音频限制&#xff1a;Equalizer APO系统级音效处理的3大创新 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo Equalizer APO作为一款开源系统级音频处理引擎&#xff0c;通过直接集成到Windo…...

Stable Yogi Leather-Dress-Collection 多模型对比评测:与同类开源模型的优势分析

Stable Yogi Leather-Dress-Collection 多模型对比评测&#xff1a;与同类开源模型的优势分析 最近在尝试用AI做皮革服饰设计&#xff0c;发现了一个挺有意思的模型——Stable Yogi Leather-Dress-Collection。听名字就知道&#xff0c;它是专门针对皮革服装设计这个细分领域的…...

NIUSHOP V6 多商户 B2B2C 商城系统介绍

多商户 B2B2C 商城系统是专为企业打造“平台多商户”协同运营的电商生态&#xff0c;支持平台自营第三方店铺入驻混合模式&#xff0c;覆盖实物电商、本地生活、O2O 全场景&#xff0c;支持多城市多商圈精细化运营&#xff0c;实现商品、订单、资金、数据全链路统一管理。 系统…...

阿里云:调整标准版、专业版用户的API免费额度并支持按量付费

阿里云此次调整DataWorks API免费额度&#xff0c;表面上是取消每日调用限制、简化计费&#xff0c;但深层逻辑是AI算力需求井喷后&#xff0c;“价格战”向“价值战”转向的行业缩影。 如果说“龙虾”AI智能体的爆火点燃了这场变革的导火索&#xff0c;那么阿里云此举&#xf…...