[蓝桥杯 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;
    
}
相关推荐
鱼子星_4 分钟前
【C++】string(上):string的基本使用
c++·笔记·字符串
米尔的可达鸭1 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
tachibana21 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹1 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
炸膛坦客1 小时前
单片机/C/C++八股:(二十三)#define 和 typedef 的区别
c语言·c++·单片机
大鱼>1 小时前
宠物活动轨迹追踪系统:GPS/BDS+UWB+BLE多定位融合方案
人工智能·深度学习·算法·iot·宠物
旖-旎2 小时前
《LeetCode 646 最长数对链 || LeetCode 1143 最长公共子序列》
c++·算法·leetcode·动态规划
Frostnova丶2 小时前
(15)LeetCode 189. 轮转数组
数据结构·算法·leetcode
Lumos1862 小时前
故障保护与鲁棒性(十七)
算法
阿米亚波2 小时前
【C++ STL】std::list
c++·windows·笔记·stl·list