ccf命令行选项只能用c实现_CCF-201403-3-命令行选项

问题描述

试题编号:

201403-3

试题名称:

命令行选项

时间限制:

1.0s

内存限制:

256.0MB

问题描述:

问题描述

请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用对它进行处理。在工具名字之后可能会包含若干选项,然后可能会包含一

些不是选项的参数。

选项有两类:带参数的选项和不带参数的选项。一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b"。而带参数选项则由两个由空格分隔的字符串构成,前者的格式要求与无参数选项相同,后者则是该选项的参数,是由小写字母,数字和减号组成的非空字符串。

该命令行工具的作者提供给你一个格式字符串以指定他的命令行工具需要接受哪些选项。这个字符串由若干小写字母和冒号组成,其中的每个小写字母表示一个该程序接受的选项。如果该小写字母后面紧跟了一个冒号,它就表示一个带参数的选项,否则则为不带参数的选项。例如, "ab:m:" 表示该程序接受三种选项,即"-a"(不带参数),"-b"(带参数), 以及"-m"(带参数)。

命令行工具的作者准备了若干条命令行用以测试你的程序。对于每个命令行,你的工具应当一直向后分析。当你的工具遇到某个字符串既不是合法的选项,又不是某个合法选项的参数时,分析就停止。命令行剩余的未分析部分不构成该命令的选项,因此你的程序应当忽略它们。

输入格式

输入的第一行是一个格式字符串,它至少包含一个字符,且长度不超过 52。格式字符串只包含小写字母和冒号,保证每个小写字母至多出现一次,不会有两个相邻的冒号,也不会以冒号开头。

输入的第二行是一个正整数 N(1 ≤ N ≤ 20),表示你需要处理的命令行的个数。

接下来有 N 行,每行是一个待处理的命令行,它包括不超过 256 个字符。该命令行一定是若干个由单个空格分隔的字符串构成,每个字符串里只包含小写字母,数字和减号。

输出格式

输出有 N 行。其中第 i 行以"Case i:" 开始,然后应当有恰好一个空格,然后应当按照字母升序输出该命令行中用到的所有选项的名称,对于带参数的选项,在输出它的名称之后还要输出它的参数。如果一个选项在命令行中出现了多次,只输出一次。如果一个带参数的选项在命令行中出

现了多次,只输出最后一次出现时所带的参数。

样例输入

albw:x

4

ls -a -l -a documents -b

ls

ls -w 10 -x -w 15

ls -a -b -c -d -e -l

样例输出

Case 1: -a -l

Case 2:

Case 3: -w 15 -x

Case 4: -a -b

解题思路:

一直模拟,按照它的规则来写。这里就不赘述了,因为我感觉代码里面的注释已经很详细了。

我没用map,也没有想到用map。直接模拟的,只得到了90分。有大神路过看到博客的话请指点一二,因为我也想拿满分呐。

源代码:

#include

#include

#include

#include

#include

using namespace std;

struct node

{

int appear;//该命令是否在格式字符串中出现

int flag;//命令是否在命令行中出现

int appear_parameter;//命令后面是否有参数

string parameter;//最终的命令是什么样子的

};

node ans[26];

void init_ans()

{

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

{

ans[i].appear=0;//初始化没有在格式字符串中出现

ans[i].flag=0;//默认没有在命令行中出现

ans[i].appear_parameter=0;//初始化都没有命令参数

ans[i].parameter="";//初始化为一个空串

}

}

void init_pos()

{

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

{

ans[i].flag=0;//如果在命令行中出现的话标记为1

ans[i].parameter="";//初始化为一个空串

}

}

int main()

{

int num;//判断条数

int k=1;

string s;//格式化字符串

string ss;//需要判断的命令行

cin>>s;

init_ans();

int len_s=s.length();

for(int i=0;i

{

if(s[i]>='a'&&s[i]<='z')

{

ans[s[i]-'a'].appear=1;//该命令出现

}

else if(s[i]==':')

{

ans[s[i-1]-'a'].appear_parameter=1;//带有参数

}

}

scanf("%d",&num);

cin.ignore();//读入一个换行符,不然也会算作一个命令的

while(k<=num)

{

getline(cin,ss);

init_pos();

int len_ss=ss.length();

int ss_index=len_ss-1;

while(ss[ss_index]==' ')//考虑一下后面存在多个空格的情况,虽然没有什么用

{

ss_index--;

}

string p=ss.substr(0,ss_index+1);

ss=p;

len_ss=ss.length();

if(len_ss<=2)

{

cout<

k++;

continue;

}

ss+=" ";//在最后面加一个空格,方便处理

int l=0;//分割字符串的左边界

int r=0;//分割字符串的右边界

for(int i=0;i

{

if(ss[i]==' ')

{

l=i;

r=i;

r++;

while(ss[r]!=' ')

{

r++;

}

string temp_s=ss.substr(l+1,r-l-1);

//如果截取出来的字符串是一个命令(要绝对保证),不用担心是不是参数,下面判断到了

if(temp_s.length()==2&&temp_s[0]=='-'&&temp_s[1]>='a'&&temp_s[1]<='z')

{

if(ans[temp_s[1]-'a'].appear==0)//该命令没有出现

{

break;

}

else//该命令在格式字符串中出现过

{

if(ans[temp_s[1]-'a'].appear_parameter==0)//正常的命令,并且没有参数

{

ans[temp_s[1]-'a'].flag=1;

i=r-1;

}

else//正常的命令,并且有参数,那就读取下一个是不是参数

{

int ll=r;

int rr=r;

rr++;

while(ss[rr]!=' ')

{

rr++;

}

string temp_ss=ss.substr(ll+1,rr-ll-1);//截取出来一个参数字符串

//判断参数字符串是否符合标准

int flag_parameter=1;//默认符合标准

for(int j=0;j

{

//如果当前字符不是减号,不是小写字母,也不是数字说明不是标准参数

if((temp_ss[j]!='-')&&(temp_ss[j]'9')&&(temp_ss[j]'z'))

{

flag_parameter=0;

}

}

if(flag_parameter==0)//不符合参数标准

{

break;

}

else//符合参数标准

{

ans[temp_s[1]-'a'].flag=1;//该命令出现

ans[temp_s[1]-'a'].parameter=temp_ss;//该命令的参数

i=rr-1;

}

}

}

}

else

{

break;//不是正常的命令

}

}

}

string res="";

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

{

if(ans[i].flag==1)//出现该命令

{

if(ans[i].appear_parameter==0)//无参数类型

{

res+=" ";

res+="-";

res+=i+'a';

}

else//有参数类型

{

res+=" ";

res+="-";

res+=i+'a';

res+=" ";

res+=ans[i].parameter;

}

}

}

cout<

cout<

k++;

}

return 0;

}

CCF CSP 201403-3 命令行选项

CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

Maven学习(四)Maven 命令行选项

说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之    间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...

学习笔记——Maven 命令行选项

2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之    间必须有空格.如下面的例子: $ mvn help:des ...

Microsoft Windows Installer 工具 Msiexec&period;exe 的命令行选项

摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...

make的命令行选项

make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --direc ...

PhantomJS命令行选项

支持命令行选项有: --help或-h列出所有可能的命令行选项.立即停止,不会运行一个脚本作为参数传递. --version或-v打印的版本PhantomJS.立即停止,不会运行一个脚本作为参数传递. ...

【Python】【自动化测试】【pytest】【常用命令行选项】

https://www.cnblogs.com/cnkemi/p/9989019.html http://www.cnblogs.com/cnkemi/p/10002788.html pytest 常 ...

python 解析命令行选项

问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指 ...

Ruby 命令行选项

Ruby 命令行选项 Ruby 一般是从命令行运行,方式如下: $ ruby [ options ] [.] [ programfile ] [ arguments ... ] 解释器可以通过下列选项 ...

CCF真题之命令行选项

201403-3 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母 ...

随机推荐

C&num;&period;NET里面抽象类和接口有什么区别&quest;

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然 ...

python简单实现用户表单登录

实现简单的用户表单验证登录 user="desperado" pwd=" s=0 for i in range(10): if s < 3: username = ...

java时间库Joda-Time

虽然在java8里面有内置的最新的时间库,但是在java8之前的版本所有的时间操作都得自己写,未免有些繁琐,如果我们不自己封装的话可以用Joda-Time这个时间库,下面写下这个库的具体用法. git ...

SQL脚本--有关压缩数据库日志

/*--压缩数据库的通用存储过程  压缩日志及数据库文件大小 因为要对数据库进行分离处理 所以存储过程不能创建在被压缩的数据库中 --邹建 2004.03(引用请保留此信息)--*/ /*--调用示例 ...

sematext

https://sematext.atlassian.net/wiki/display/PUBLOGSENE/Syslog

Expert Shell Scripting

Expert Shell Scripting 好好学习这本书

CSS与HTML5响应式图片

随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...

Hadoop集群的hbase介绍、搭建、环境、安装

1.hbase的介绍(自行百度hbase,比我总结的全面具体) HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC ...

HTTP Get与Post的本质区别

作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. GET和POST是HTT ...

利用kibana插件对Elasticsearch查询

利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...

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

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

相关文章

python data frame_Python dataframer包_程序模块 - PyPI - Python中文网

数据框尝试将任何文件加载到pandas数据帧中&#xff0c;以最少的配置&#xff0c;关注生物信息学示例通常&#xff0c;您将从磁盘读取文件(open(my-file.txt, rb))。但是字节流在这里更简单。>>> from io import BytesIO>>> from dataframer import datafram…

html设置页面的高度和宽度,web显示页面有图像上设置高度和宽度很重要

因此即使浏览器只有HTML&#xff0c;它仍然能够分配适当的空间。所以我们可以修改成以下内容&#xff1a;最近我们发现谷歌浏览器对图片设置有一定的修改&#xff0c;它主要在图像上进行设置width和设置height属性&#xff0c;以防止布局发生变化并改善网站访问者的体验。Web性…

lsnrctl 与 tnsnames.ora 的联系

平台&#xff1a;Windoxs XPOracle 11G 当使用oralce的 Net Manager创建了一个名为“L3”的Listener后&#xff0c;要想使用lsnrctl启动和关闭 L3 还必须在tnsnames.ora 中配置一个名为L3的条目. listener.ora L3 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST princess…

Java EE,Docker和Maven(技术提示#89)

Java EE应用程序通常使用Maven构建和打包。 例如&#xff0c; github.com/javaee-samples/javaee7-docker-maven是一个普通的Java EE 7应用程序&#xff0c;它显示了Java EE 7依赖性&#xff1a; <dependencies><dependency><groupId>javax</groupId>…

mysql数据库计算全部女生_使用mysql存储过程-统计某个数据库下的所有表的记录数...

使用mysql存储过程-统计某个数据库下的所有表的记录数其中用到了游标(cursor)&#xff0c;循环(loop)&#xff0c;动态SQL预处理(prepare)等技术&#xff0c;特此记录一下。[sql]viewplaincopy1.CREATEPROCEDUREstatis_rows(inv_schemavarchar(50))2.BEGIN3.4.5.DECLAREsql_str…

区县级政府网站群建设要点

区县政府单位虽小&#xff0c;但行政职能齐全&#xff0c;作为服务机构&#xff0c;公民最先接触的也是区县政府&#xff0c;大部分的群众办事在区县里就可以完成&#xff1b;上级政府部门相对于区县来说&#xff0c;管理的职能要高于服务的职能&#xff0c;所以区县对公民的重…

html5 多页面共享数据库,可以跨页面使用HTML5 Web SQL数据库吗?(Can HTML5 Web SQL databases be used across pages?)...

可以跨页面使用HTML5 Web SQL数据库吗&#xff1f;(Can HTML5 Web SQL databases be used across pages?)这可能是一个非常简单的问题&#xff0c;请原谅我的无知&#xff0c;但是可以跨同一个域的页面读取Web SQL数据库吗&#xff1f;例如&#xff0c;如果我在页面上插入数据…

如何监视Java EE数据源

介绍 FlexyPool是一个开放源代码框架&#xff0c;可以监视数据源连接的使用情况。 由于我们以前缺乏对供应连接池的支持&#xff0c;因此该工具是不必要的。 FlexyPool最初是为独立环境设计的&#xff0c;并且DataSource代理配置是通过编程完成的。 使用Spring bean别名 &…

磁盘空间管理工具FolderSizes

现在的硬盘已经到了用TB来计量的级别&#xff0c;但也会感觉在不知不觉间空间竟然不够用了&#xff01;到底什么东西占用了我们这么多的磁盘空间呢? 这个软件可以帮你快速进行分析。FolderSizes 企业版是一款优秀的磁盘管理工具&#xff0c;它可以有效地帮助我们快速的查看并统…

vscode修改python终端_panda3d是python的一个高级的3D 渲染和游戏开发框架

1 介绍1.1 开发维护者:迪士尼VR工作室和卡耐基梅隆娱乐技术中心。1.2 是一个3D游戏引擎和一个 3D 渲染和游戏开发库。1.3 可以在这个框架下使用 Python 和 C 。1.4 Panda3D 是开源软件&#xff0c; 它的许可证让它可以用于任何用途&#xff0c; 包括商业用途。1.5 是python的三…

HTMl和css项目总结,HTML+CSS项目开发总结

好几天没更新博客了&#xff0c;刚实战完一个HTMLCSS的简单项目。经过几天的摸索&#xff0c;发现收益良多。之前只是单纯得写demo&#xff0c;看知识点&#xff0c;没有亲自实战项目。但实战过后才会了解&#xff0c;如何才能更好地提升自己的技术。针对这次项目开发&#xff…

Apache Camel日志组件示例

Apache Camel日志组件示例 您要将消息记录到底层的记录机制&#xff0c;请使用骆驼的log:组件。 Camel使用sfl4j作为记录器API&#xff0c;然后允许您配置记录器实现。 在本文中&#xff0c;我们将使用Log4j作为实际的记录器机制。 让我们从示例开始。 依存关系 您需要添加&am…

HDU--4768

题目&#xff1a; Flyer 原题链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4768 分析&#xff1a;二分。只需要注意到最多只有一个为奇数&#xff0c;则可以首先求出学生获得的总的传单数&#xff0c;为奇数时&#xff0c;二分找到答案。 1 #include<cstdio&…

js return的值取不到_【JS基础】隐式转换(一)

开篇JS作为一门动态语言十分灵活&#xff0c;但是伴随而来的弱类型隐式转化的问题让我们十分头疼。隐式作为一个大课题&#xff0c;很难用一个很简短的篇幅把JS的隐式转换讲解的十分清楚。所以我选择用多次少量的策略进行梳理&#xff0c;争取让你每看完一篇都会有加深对于JS隐…

html5 loaded,How do you check if a HTML5 audio element is loaded?

问题I am wanting to know how to check if a HTML5 audio element is loaded.回答1:To find out when the audio is ready to start playing, add listeners for the oncanplay or oncanplaythrough events. To find out when the audio has loaded at all, listen to the onl…

Java的坏功能是什么

总览 当您第一次学习开发时&#xff0c;您会看到关于不同功能的过分笼统的陈述&#xff0c;对于设计&#xff0c;性能&#xff0c;清晰度&#xff0c;可维护性来说&#xff0c;都是不好的&#xff0c;感觉就像是黑客&#xff0c;或者他们只是不喜欢。 这可能会得到现实世界经验…

面试题(2)

逻辑推理 1、你让工人为你工作7天&#xff0c;给工人的回报是一根金条。金条平分成相连的7段 &#xff0c;你必须在每天结束时给他们一段金条&#xff0c;如果只许你两次把金条弄断&#xff0c;你如何给你 的工人付费&#xff1f;   2、请把一盒蛋糕切成8份&#xff0c;分给8…

语句 查询每个人每个科目的最高分_转行数据分析师专栏(SQL篇)-05多表查询...

数据表&#xff08;4张&#xff09;及数据情况&#xff1a;搭建数据表数据参考&#xff1a;空杯希望&#xff1a;转行数据分析师专栏&#xff08;SQL篇&#xff09;-01SQL入门​zhuanlan.zhihu.com一、表的加法1、先新建一个表course1&#xff08;和course表数据结构一致&#…

星海中学2021高考成绩查询,广东中考时间2021

忙碌了整整一个学期&#xff0c;同学们最关心的当然是什么时候能好好的回家调节一下学习的节奏&#xff0c;一起来看看广东各个大学的寒假放假时间吧&#xff01;下面是由出国留学网小编为大家整理的“2021广东各大学寒假放假时间”&#xff0c;仅供参考&#xff0c;欢迎大家阅…

JDK 8 SummaryStatistics类

JDK 8中引入的三个新类是java.util包的DoubleSummaryStatistics &#xff0c; IntSummaryStatistics和LongSummaryStatistics 。 这些类使计算元素总数&#xff0c;元素最小值&#xff0c;元素最大值&#xff0c;元素平均值以及双精度&#xff0c;整数或long的集合中的元素总和…