[蓝桥杯 2020 省 AB3] 日期识别

每日一道算法题之日期识别

一、题目描述

题目来源:洛谷

【蓝桥杯 2020 第三轮省赛 AB 组 F 题】小蓝要处理非常多的数据, 其中有一些数据是日期。

在小蓝处理的日期中有两种常用的形式:英文形式和数字形式。英文形式采用每个月的英文的前三个字母作为月份标识,后面跟两位数字表示日期,月份标识第一个字母大写,后两个字母小写, 日期小于 10 时要补前导 0。1 月到 12 月英文的前三个字母分别是 Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec。数字形式直接用两个整数表达,中间用一个空格分隔,两个整数都不写前 导 0。其中月份用 1 至 12 分别表示 1 月到 12 月。输入一个日期的英文形式, 请输出它的数字形式。

C++程序要求输入输出如下:
输入格式

输入一个日期的英文形式。

输出格式

输出一行包含两个整数,分别表示日期的月和日。

示例如下:

cpp 复制代码
输入:Feb08           输出:2 8

二、思路

  本题我是采用暴力解 的办法,定义一个string类型的字符串s,用于接收输入,然后判断前三个字符和月份的对应关系,对于数字的转化,第三个字符减去字符'0',得到一个差值,这个差值再乘以十,加上第四个字符与字符'0'的差值就是得到转化后的数字。因此通过本题,学习到的一个处理办法就是如果之后题目需要你将字符数字转化为整型数字 ,可以考虑字符相减的办法。

三、C++代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

//日期识别 

int main(){
    
    string s;
    cin>>s;
    int month,day;
    if(s[0]=='J') 
	{
        if (s[1]=='a') month=1;
        else if(s[2]=='n') month=6;
        else month=7;
    }else if(s[0]=='F'){
		month=2;
    }else if(s[0]=='M')
	{
        if(s[2]=='r'){
			month=3;
        }else{
			month=5;
        } 
    }else if(s[0]=='A')
	{
        if(s[1]=='p'){
			month=4;
        }else{
			month=8;
        } 
    }else if(s[0]=='S'){
		month=9;
    }else if(s[0]=='O'){
		month=10;
    }else if (s[0]=='N'){
		month=11;
    }else{
		month=12;
    } 
    
    day=(s[3]-'0')*10+(s[4]-'0');
    cout<<month<<" "<<day<<endl;
    
}
相关推荐
稚南城才子,乌衣巷风流9 小时前
长链剖分(Long Chain Decomposition)算法详解
算法·深度优先·图论
小保CPP9 小时前
OpenCV C++基于模糊数学的图像滤波
c++·人工智能·opencv·计算机视觉
变量未定义~9 小时前
环境治理、染色时间、小蓝组网
算法
Ulyanov9 小时前
雷达导引头仿真中的坐标系——从惯性系到量测角
开发语言·python·算法·系统仿真·雷达信号处理·雷达导引头
玖玥拾9 小时前
LeetCode 13 罗马数字转整数
笔记·算法·leetcode
m沐沐10 小时前
【计算机视觉】OpenCV 物体跟踪——原理、算法与CSRT跟踪器实战
人工智能·python·深度学习·opencv·算法·计算机视觉·人脸识别
明日清晨10 小时前
VS2022禁用 NRVO/返回值优化(不调用拷贝构造函数处理方式)
c++
阿米亚波10 小时前
【C++ STL】std::array
java·开发语言·c++
choumin10 小时前
结构型模式——组合模式
c++·设计模式·组合模式·结构型模式
怪奇云呼军10 小时前
闪电智能 Voice Agent 怎样根据语速、停顿和追问方式切换话术?策略引擎拆解
开发语言·人工智能·网络协议·算法·语音识别·web app