csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现

试题编号:201509-3

试题名称:日期计算 时间限制:1.0s 内存限制:256.0MB

问题描述:

成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是

317d9305c6f14dac2efa00018332b7b4.png

而当用户为Jerry 时,网页的源代码是

439ef272ff8559741e326480e58a2ed3.png

这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作,成成觉

得他需要引入一套模板生成系统。

模板是包含特殊标记的文本。成成用到的模板只包含一种特殊标记,格式为 {{ VAR }},其中 VAR 是一个变量。该标记在模板生成时会被变量 VAR 的值所替代。例如,如果变量 name = "Tom",则 {{ name }} 会生成 Tom。具体的规则如下:   ·变量名由大小写字母、数字和下划线 (_) 构成,且第一个字符不是数字,长度

不超过 16 个字符。

·变量名是大小写敏感的,Name 和 name 是两个不同的变量。

·变量的值是字符串。

·如果标记中的变量没有定义,则生成空串,相当于把标记从模板中删除。   ·模板不递归生成。也就是说,如果变量的值中包含形如 {{ VAR }} 的内容,不

再做进一步的替换。

输入格式

输入的第一行包含两个整数 m, n,分别表示模板的行数和模板生成时给出的变量个数。

接下来 m 行,每行是一个字符串,表示模板。

接下来 n 行,每行表示一个变量和它的值,中间用一个空格分隔。值是字符串,用双引号 (") 括起来,内容可包含除双引号以外的任意可打印 ASCII 字符(ASCII 码

范围 32, 33, 35-126)。

输出格式

输出包含若干行,表示模板生成的结果。

样例输入 11 2

html>

User {{ name }}

{{ name }}

Address: {{ address }}

name "David Beckham" email "david@beckham.com"

样例输出

html>

User David Beckham

David Beckham

Address:

评测用例规模与约定   0 ≤ m ≤ 100   0 ≤ n ≤ 100

输入的模板每行长度不超过 80 个字符(不包含换行符)。

输入保证模板中所有以 {{ 开始的子串都是合法的标记,开始是两个左大括号和一

个空格,然后是变量名,结尾是一个空格和两个右大括号。

输入中所有变量的值字符串长度不超过 100 个字符(不包括双引号)。

保证输入的所有变量的名字各不相同。

分析:

题目本身逻辑不能,这题主要考验对程序输入,输出,字符串的运用。这里我用C语言来写,主要的scanf,printf的格式控制符的了解,这里给出两个不错的链接:

http://blog.csdn.net/qingkong8832/article/details/6667701

http://blog.csdn.net/sdhfll/article/details/1892926

代码在此:

#include#include#define F_PATH "C:\\Users\\Administrator\\Desktop\\C\\data.txt"

#define ADDITION 10 //字符串添加多余空间防止溢出

typedef struct{

char value[80 + ADDITION];

}late;// 一行模板

typedef struct{

char key[100 + ADDITION];

char value[100 + ADDITION];

}variable;// 一个变量

int main()

{

int m, n;

late str[100 + ADDITION];

variable var[100 + ADDITION];

char ch;

scanf("%d %d", &m, &n);

/*while( (ch=getchar()) != '\n' )

continue;*/

ch = getchar();// 必须加这个,因为%[]读取时会把上一个\n给读取到进去然后跳过直接空字符串。不用ch = getchar();就得在上一个scanf()改成 scanf("%d %d\n", &m, &n)。又或者把ch = getchar();换成上面那个我while循环

for(int i = 0; i < m; i ++)

{

scanf("%[^\n]%*c", str[i].value);//接收一行

}

for(int i = 0; i < n; i ++)

{

scanf("%s %*c%[^\"]", var[i].key, var[i].value);

scanf("%*c"); // %[^\"] 不会接收后面的\",不过\"还是在输入缓存中,在获取变量的值后需要把这个\"从输入缓存中去掉以免影响下一次

}

for(int i = 0; i < m; i ++)//循环输出m行模板

{

int len = strlen(str[i].value);

for(int j = 0; j < len; j ++)//循环判断没行模板的每个字符

{

if(str[i].value[j] == '{' && str[i].value[j+1] == '{')//由于没有嵌套,所有直接判断即可

{

char strtemp[100];

j += 3;//跳入模板变量区域

int u = 0;

while(str[i].value[j] != ' ')//获取模板里的变量

{

strtemp[u ++] = str[i].value[j];

j ++;

}

for(int k = 0; k < n; k ++)//查找对应的变量替代输出

{

if(strcmp(strtemp, var[k].key) == 0)

{

printf("%s", var[k].value);

break;

}

}

j += 3;//跳出模板变量区域

}

else

{

printf("%c", str[i].value[j]);//无需替换字符直接输出

}

}

printf("\n");

}

return 0;

}

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

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

相关文章

osgi架构与linux_OSGi:进入微服务架构的门户

osgi架构与linux在构建可扩展&#xff0c;可靠的分布式系统的背景下&#xff0c;“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知&#xff0c;Java平台本身在模块化方面很弱&#xff08; Java 9将通过交付Jigsaw项目来解决此问题&#xff09;&#xff0c;这为…

引入我们全新的YouTube频道进行视频课程编程

嘿&#xff0c;极客们&#xff0c; 收到社区的反馈并紧贴行业发展趋势&#xff0c;我们非常高兴宣布推出全新的Youtube频道 &#xff01; 在我们的频道上&#xff0c;我们将主持与Java编程有关的视频课程&#xff0c;但通常也会进行软件开发。 我们将介绍代码演练以及完整的…

田忌赛马c语言程序设计,还是杭电1052田忌赛马

已结贴√问题点数&#xff1a;20 回复次数&#xff1a;2还是杭电1052田忌赛马//昨天那个算法漏洞挺大&#xff0c;但我重新构思了&#xff0c;但运行到312ms还是wa了。我测试了许多数据&#xff0c;结果是对的&#xff0c;郁闷了&#xff0c;谁能救救我啊&#xff1f;#include&…

ArrayList clone()– ArrayList深拷贝和浅拷贝

示例程序以ArrayList克隆方法为例。 学生对象上的ArrayList深层复制和浅层复制示例。 1.简介 ArrayList clone&#xff08;&#xff09;– ArrayList深复制和浅复制 。 ArrayList clone&#xff08;&#xff09;方法用于创建list的浅表副本 。 在新列表中&#xff0c;仅复制对…

南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

《南京邮电大学算法设计实验报告——动态规划法》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《南京邮电大学算法设计实验报告——动态规划法(12页珍藏版)》请在人人文库网上搜索。1、实 验 报 告(2009/2010学年 第一学期)课程名称算法分析与设计A实验名称动 态 规 …

启动jboss_3种启动JBoss BPM流程的基本方法

启动jboss这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。 规划项目可能包括流程项目&#xff0c;但是您是否考虑过可以启动流程的各种方式&#xff1f; 也许您的JBoss BPM Suite在您的体系结构中本地运行&#xff0c;也许您在云中运行&#xff0c;但是无论它…

单片机控制灯光亮度c语言程序,基于51单片机控制LED灯光亮度并报警

利用pwm控制led灯光亮度大小。可以显示许多亮度等级 到最低或者最高亮度等级会发出报警。设计思路&#xff1a;LED一般是恒流操作的&#xff0c;如何改变LED的亮度呢&#xff1f;答案就是PWM控制。在一定的频率的方波中&#xff0c;调整高电平和低电平的占空比&#xff0c;即可…

将Quarkus应用程序部署到AWS Elastic Beanstalk

Elastic Beanstalk允许在AWS云中部署和管理应用程序&#xff0c;而无需了解运行这些应用程序的基础架构。 使用Elastic Beanstalk&#xff0c;您可以运行可处理HTTP请求的网站&#xff0c;Web应用程序或Web API&#xff0c;但也可以运行辅助应用程序以运行长任务。 Elastic Be…

c语言中rand()%900,c语言 n=rand()%5是什么意思

rand()函数会产生范围为0至32767的随机数&#xff0c;% 让它与5求余&#xff0c;变成0至4的随机数&#xff0c;不过每次启动程序产生的随机数都相等&#xff0c;在用srand(unsigned int)输入种子数后产生的才不一样&#xff0c;一般都用的 srand((unsigned int)time(NULL)) 产生…

gradle 构建应用流程_使用Gradle构建和应用AST转换

gradle 构建应用流程最近&#xff0c;我想在Gradle项目中构建并应用本地ast转换。 虽然我可以找到几个有关如何编写转换的示例&#xff0c;但找不到完整的示例来显示完整的构建过程。 转换必须单独编译然后放在类路径中&#xff0c;因此其源代码不能简单地放在Groovy源代码树的…

c语言malloc calloc,C语言内存管理:malloc、calloc、free的实现

任何一个对C稍稍有了解的人都知道malloc、calloc、free。前面两个是用户态在堆上分配一段连续(虚拟地址)的内存空间&#xff0c;然后可以通过free释放&#xff0c;但是&#xff0c;同时也会有很多人对其背后的实现机制不了解。这篇文章则是通过介绍这三个函数&#xff0c;并简单…

在雅加达EE TCK中使用Arquillian的可能方法

最近&#xff0c;我们讨论了如何创建独立的Jakarta Batch测试套件&#xff08;TCK&#xff09;。 对于大多数提交者而言&#xff0c;使用Arquillian将测试从实现中如何执行抽象化是很自然的。 但是Romain提出了一个有趣的想法&#xff0c;即使用纯JUnit5引起了我的思考。 它并没…

c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...

c语言 帮我检查一下 输入一段文字&#xff0c;每行用回车结束&#xff0c;文字输入完毕可以使用某个特殊字符作为结束&#xff0c;0HIDE152019.04.28浏览4次分享举报c语言输入一段文字&#xff0c;每行用回车结束&#xff0c;文字输入完毕可以使用某个特殊字符作为结束&#xf…

gradle发布jar_使用Gradle将JAR工件发布到Artifactory

gradle发布jar因此&#xff0c;我浪费了一两天&#xff08;只是投资&#xff09;来了解如何使用Gradle将JAR发布到本地运行的Artifactory服务器。 我使用Gradle Artifactory插件进行发布。 我迷失在无穷循环中&#xff0c;包括各种版本的各种插件和执行各种任务。 是的&#xf…

c++语言 自己构造函数 成员对象构造函数 调用顺序,C++类成员构造函数和析构函数顺序示例详细讲解...

对象并不是突然建立起来的&#xff0c;创建对象必须时必须同时创建父类以及包含于其中的对象。C遵循如下的创建顺序&#xff1a;(1)如果某个类具体基类&#xff0c;执行基类的默认构造函数。(2)类的非静态数据成员&#xff0c;按照声明的顺序创建。(3)执行该类的构造函数。即构…

最新的20多个JMS面试问答(2020)

快速浏览JMS&#xff08;Java消息服务&#xff09;常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中&#xff0c;我们将了解2020年常见的JMS面试问题。作为面试的一部分&#xff0c;如果您有6年以上的经验&#xff0c;就有机会在JMS领域提出…

【学习笔记】SAR相关概念

文章目录 1. 基础SAR—复数据转换—多视处理—自适应滤波—地理编码—斜地距转换—地形辐射校正—转DB影像 2. SAR 平差—自动匹配—区域网平差—几何精校正—镶嵌线编辑 3.干涉 SAR(InSAR/DInSAR)—配准—干涉图计算—基线计算—去除平地相位—相干性计算—干涉图滤波—相位解…

c语言逆序输出6A8F,【C语言】将二进制数逆序输出。比如6为000...0110,逆序后为0110....

//将二进制数逆序输出。比如6为000...0110,逆序后为0110...000#include unsigned int reverse_bit(int num){int i;int bit;unsigned new_num 0;for (i 0; i//将二进制数逆序输出。比如6为000...0110,逆序后为0110...000#include unsigned int reverse_bit(int num){int i;in…

加载dll api_运行时类加载以支持不断变化的API

加载dll api我维护一个IntelliJ插件 &#xff0c;可以改善编写Spock规范的体验。 这个项目的挑战是在单个代码库中支持多个且不兼容的IntelliJ API版本。 回想起来&#xff0c;该解决方案很简单&#xff08;这是野外适配器模式的一个示例&#xff09;&#xff0c;但是最初它需要…

12生肖 c语言设计,语言十二生肖教案

十二生肖中班教案十二生肖教案反思语言教案十二生肖点击进入查看全文2010虎年运势测算&#xff0c;走好运&#xff0c;发大财&#xff01;宝宝三个月&#xff0c;来说一说之前购买的海量的婴儿用品的使用况(配合图片)&#xff0c;大家可以都来讨论一下吧。太败了&#xff0c;之…