[蓝桥杯 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;
    
}
相关推荐
刚学HTML5 分钟前
leetcode 05 回文字符串
算法·leetcode
蜀黍@猿9 分钟前
【C++ 基础】从C到C++有哪些变化
c++
Am心若依旧40910 分钟前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
zh路西法20 分钟前
【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(一):从电梯出发的状态模式State Pattern
c++·决策树·状态模式
AC使者25 分钟前
#B1630. 数字走向4
算法
冠位观测者29 分钟前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
轩辰~34 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
@小码农43 分钟前
202411 第十六届蓝桥杯青少组 STEMA 考试真题 汇总
职场和发展·蓝桥杯
lxyzcm1 小时前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
蜀黍@猿1 小时前
C/C++基础错题归纳
c++