P8722 [蓝桥杯 2020 省 AB3] 日期识别(C语言)

题目描述

小蓝要处理非常多的数据, 其中有一些数据是日期。

在小蓝处理的日期中有两种常用的形式:英文形式和数字形式。

英文形式采用每个月的英文的前三个字母作为月份标识,后面跟两位数字表示日期,月份标识第一个字母大写,后两个字母小写, 日期小于 10时要补前导 0。1 月到 12 月英文的前三个字母分别是 JanFebMarAprMayJunJulAugSepOctNovDec

数字形式直接用两个整数表达,中间用一个空格分隔,两个整数都不写前 导 0。其中月份用 1 至 12 分别表示 1 月到 12 月。

输入一个日期的英文形式, 请输出它的数字形式。

输入格式

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

输出格式

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

输入输出样例

输入 #1

Feb08

 输出 #1

2 8

输入 #2

Oct18

输出 #2

10 18

 参考代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{char* vis=(char*)malloc(sizeof(char)*5);fgets(vis,6,stdin);char a[4];strncpy(a,vis,3);//复制一定区域的子串const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; //这里作为一个常量看,不能修改,没有const会警告for(int i=0;i<12;i++){if(strcmp(a,months[i])==0){printf("%d ",i+1);}}char c[3];strncpy(c,vis+3,2);if(c[0]-'0'==0)printf("%d",c[1]-'0');elseprintf("%d%d",c[0]-'0',c[1]-'0');return 0;
}

函数解答:

fgets  用于输入
strncpy用于取一定范围的字符串子串,在头文件<string.h>中

问题解答:

问题:const char* months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };的存储位置在堆还是栈,或者是其他地方?它属于什么变量?为什么不用开辟内存空间?

答:(ai回答,如有错误敬请纠正)

const char* months[] 是一个数组,其中包含了12个字符串字面量。这些字符串字面量通常存储在程序的只读内存区域,这是为了确保它们的内容在程序的生命周期中保持不变。

  1. 存储位置: 在大多数现代操作系统和编译器中,字符串字面量(例如 "Jan", "Feb" 等)通常存储在只读的内存区域,通常称为文本段或只读数据段。这有助于防止程序意外地修改这些字符串。
  2. 变量类型const char* months[] 是一个指向字符的指针数组,而数组中的每个指针都指向一个字符串字面量。由于这些字符串是常量,因此 const char* 确保我们不会尝试修改它们。
  3. 为什么不用开辟内存空间: 字符串字面量是在编译时存储在内存中的,而不是在运行时动态分配的。因此,它们不需要通过 malloc 或其他方式动态分配内存。当程序加载到内存中时,这些字符串已经存在,并存储在特定的内存区域。

需要注意的是,虽然这些字符串字面量在内存中有固定的位置,但指针数组本身(即 months 变量)是在栈上分配的。当这个代码块执行完毕时(例如函数返回),这个数组可能会从栈上被移除,但指向的字符串字面量仍然保留在只读内存段中。

NO.37

如果小伙伴有更好的解题思路欢迎分享在评论区🌹🌹🌹

<蓝桥杯>

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

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

相关文章

2023福建省“信息安全管理与评估“---单机取证(高职组)

2023福建省“信息安全管理与评估“---单机取证(高职组) 2023福建省“信息安全管理与评估“---单机取证(高职组):公众号:鱼影安全(有联系方式)Evidence1:Evidence2:Evidence3:Evidence4:Evidence5:Evidence6:Evidence7:Evidence8:Evidence9:Evidence10:<

从入门到精通,30天带你学会C++【第十四天:洛谷选题讲解】

彩蛋 这么长的目录应该没人看吧。 Bi------------------------------------------------------------------------------- 目录 Everyday English 前言 函数 sqrt ( ) for循环 题目网址 分析题意 思路点拨 优化程序 AC代码 AC截图 数学 if判断 题目网址 思路…

视频剪辑技巧:轻松制作短视频,一键合并、剪辑、添加背景音乐

随着社交媒体的普及&#xff0c;短视频已是分享生活、娱乐和传递信息的重要方式。如果要制作短视频&#xff0c;但又不熟悉复杂的视频编辑软件&#xff0c;那么本文将讲解一些实用的视频剪辑技巧&#xff0c;轻松制作出高质量的短视频。现在一起来看看云炫AI智剪如何批量合并视…

光纤通信系统中常见类型的损伤和均衡方法

相干光纤通信系统中常见的损伤和均衡算法 光纤通信中的系统损伤损耗色度色散 CD偏振相关损耗PMD 偏振模色散RSOP 偏振态旋转PDL 偏振相关损耗 CFO 载波频率偏移和CPN 载波相位噪声 光纤通信系统损伤均衡算法 光纤通信中的系统损伤 信道中常见的损伤包括损耗、色散和偏振相关损…

【HarmonyOS开发】分布式应用的开发实践(元旦快乐)

元旦快乐&#xff0c;再见2023&#xff0c;加油2024&#xff0c;未来可期&#xff0c;愿新的一年带来健康、幸福和成功&#xff01;&#x1f4aa; &#x1f4aa;&#x1f4aa; 多种设备之间能够实现硬件互助、资源共享&#xff0c;依赖的关键技术包括分布式软总线、分布式设备虚…

机器学习基本概念及模型简单代码(自用)

监督学习 监督学习是机器学习的一种方法&#xff0c;其中我们教导模型如何做出预测或决策&#xff0c;通过使用包含输入和对应输出的已标注数据集进行训练。这种方法的关键特点是利用这些标注数据**&#xff08;即带有正确答案的数据&#xff09;**来指导模型的学习过程。 一言…

uni-app 前后端调用实例 基于Springboot 数据列表显示实现

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

【ArcGIS微课1000例】0084:甘肃积石山地震震中100km范围内历史灾害点分布图(2005-2020)

甘肃积石山地震震中100km范围内历史灾害点分布图(2005-2020)。 文章目录 一、成果预览二、实验数据三、符号化四、地图整饰一、成果预览 本实验最终效果图如下所示: 二、实验数据 以下数据可以从本专栏配套的实验数据包中0084.rar中获取。 1. 历史灾害数据。为2005-2020时…

深度学习|10.5 卷积步长 10.6 三维卷积

文章目录 10.5 卷积步长10. 6 三维卷积![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b5bfa24f57964b0f81f9602f5780c278.png) 10.5 卷积步长 卷积步长是指每计算一次卷积&#xff0c;卷积移动的距离。 设步长为k&#xff0c;原矩阵规模为nxn&#xff0c;核矩阵…

BIOS:计算机中的特洛伊木马

内容概述&#xff1a; 由于主板制造商在计算机启动时用来显示品牌徽标的图像分析组件相关的问题&#xff0c;多个安全漏洞&#xff08;统称为 LogoFAIL&#xff09;允许攻击者干扰计算机设备的启动过程并安装 bootkit。x86 和 ARM 设备都面临风险。主板固件供应链安全公司 Bin…

valgrind跨平台调试及其问题分析

背景 同事在项目中遇到了内存泄漏问题&#xff0c;长时间没有解决&#xff0c;领导临时让我支援一下。心想&#xff0c;应该不难&#xff0c;毕竟我之间做过valgrind的使用总结。并输出内存泄漏问题分析思路&#xff08;案例篇&#xff09;和快速定位内存泄漏的套路两篇文章&a…

【C语言】Ubuntu 22上用GTK写GUI程序

一、GTK介绍 GTK (GIMP Toolkit) 是一个多平台的图形用户界面工具包。它最初是为图像处理程序 GIMP 开发的&#xff0c;后来演变成为许多操作系统上开发图形界面应用程序的通用库。GTK 是用C语言编写的&#xff0c;并且是自由和开源软件&#xff0c;遵循LGPL (GNU Lesser Gene…

三菱MR-JE伺服脉冲轴应用参数设置

三菱MR-JE伺服在脉冲轴控制上的应用&#xff0c;常用参数设置如下&#xff1a; 1、常用参数 未完...

Linux用shell脚本执行乘法口诀表的两种方式

#!/bin/bash # *********************************************************# # # # * Author : 藻头男 # # * QQ邮箱 : 2322944912qq.com # …

nginx 配置代理ip访问https的域名配置

前言 代理服务器是一种中间服务器&#xff0c;用于转发客户端请求到目标服务器。Nginx是一款高性能的Web服务器和反向代理服务器&#xff0c;可以用于配置代理IP访问HTTPS的域名。在本篇文章中&#xff0c;我们将介绍如何使用Nginx配置代理IP访问HTTPS域名&#xff0c;并提供相…

代码训练营Day.21 | 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

530. 二叉搜索树的最小绝对差 1. LeetCode链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 中序遍历&#xff0c;记录前一个指针&#xff0c;并记录前一个指针和当前指针的绝对差值。递归。 class Solution { public:Tre…

Javascript 循环结构while do while for实例讲解

Javascript 循环结构while do while for实例讲解 目录 Javascript 循环结构while do while for实例讲解 一、while语句 二、do…while语句 三、for循环 疑难解答 我们从上一节课知道&#xff0c;JavaScript循环结构总有3种&#xff1a; &#xff08;1&#xff09;while语…

ARM CCA机密计算硬件架构之内存管理

实施了TrustZone安全扩展的Arm A-profile处理器呈现两个物理地址空间(PAS): 非安全物理地址空间安全物理地址空间Realm管理扩展增加了两个PAS: Realm物理地址空间Root物理地址空间下图显示了这些物理地址空间以及如何在工作系统中实施这些空间: 正如表格所示,根状态能够访…

手写一个链栈(算法村第四关青铜挑战)

本链栈用于解决迷宫问题之寻找所有路径 /*** 存储路径坐标的结点&#xff0c;称为路径结点* 因为数量无法确定&#xff0c;故使用链式结构*/ typedef struct Node {int coordinate; //坐标struct Node* next; }Node;typedef Node* PNode; //路径结点的指针类型 typedef Nod…

Spring Boot核心特性、注解和Bean作用域

Spring Boot 是基于 Spring Framework 构建应用程序的框架&#xff0c;Spring Framework 是一个广泛使用的用于构建基于 Java 的企业应用程序的开源框架。Spring Boot 旨在使创建独立的、生产级别的 Spring 应用程序变得容易&#xff0c;您可以"只是运行"这些应用程序…