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

代碼

#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<map>
using namespace std;
void spilt(vector<string>& v, char s[], char t[])
{char *sp;sp=strtok(s,t);while(sp){v.push_back(sp);sp=strtok(NULL,t);}
}
void mygetline(char pc[])
{char c;while((c=getchar())!='\n'&&c!=EOF)*pc++=c;*pc='\0';
}
int main()
{string format;char s[257];int i,j,n;cin>>format>>n;getchar();for(i=1;i<=n;i++){vector<string> sv;map<string,string> m;mygetline(s);// 切分命令行:命令和各個參數分開spilt(sv,s," ");// 處理各個參數,放入map變量m中for(j=1;j<(int)sv.size();j++){// 判斷是否是選項,選項則處理if(sv[j].size()==2&&sv[j][0]=='-') {int pos=format.find(sv[j][1]);// 選項在格式中未找到則出錯結束if(pos==-1)break;// 選項未出現過則添加if(m.find(sv[j])==m.end())m[sv[j]]="";// 更新參數:后出現優先if(format[pos+1]==':'&&j+1<(int)sv.size()){m[sv[j]]=sv[j+1];j++;}}elsebreak;}cout<<"Case "<<i<<":";for(map<string,string>::iterator iter=m.begin();iter!=m.end();iter++){cout<<" "<<iter->first;if(iter->second!="")cout<<" "<<iter->second;}cout<<endl;}return 0;
}

?

轉載于:https://www.cnblogs.com/5211314jackrose/p/7532040.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 枚舉 values_JAVA 枚舉運用一 values方法

importjava.lang.reflect.Method;importjava.lang.reflect.Type;importjava.util.Set;import java.util.*;public classEnumJavaClass {public enumEnumClass{One("參數變量枚舉一"),Two("參數變量枚舉二"),Three("參數變量枚舉三");privateStri…

telnet測試端口是否正常打開

點擊計算機的開始菜單--》運行 &#xff0c;輸入CMD命令&#xff0c;然后確定。打開cmd命令行。 輸入telnet測試端口命令&#xff1a; telnet IP 端口 或者 telnet 域名 端口 回車 如果端口關閉或者無法連接&#xff0c;則顯示不能打開到主機的鏈接&#xff0c;鏈接失敗 端口…

Linux歷史,安裝,分區,版本

Linux 歷史 1970年是 UNIX元年&#xff0c;這一年 Kenneth Lane Thompson 和 Dennis Ritchie 合作編寫了UNIX系統。Stallman 發起了GNU 計劃&#xff0c;他本人開發了Emacs, GCC, GDB.Minix&#xff1a;教學用的類UNIX系統&#xff0c;由于UNIX是收費的且價格昂貴&#xff0c;因…

放棄Eclipse Juno

在上一個博客中&#xff0c;我發布了有關Eclipse 4.2 Juno設置的信息。 萬一我需要重新安裝其他東西&#xff0c;也可以作為參考。 當時我沒有談論的是我與Juno共同遇到的問題。 我以為這是我自己的安裝程序&#xff0c;很麻煩&#xff0c;但是此后并沒有太大改善。 我遇到的主…

Java instead of 用法_我又不是你的誰--java instanceof操作符用法揭秘

背景故事《曾經最美》是朱銘捷演唱的一首歌曲&#xff0c;由陳佳明填詞&#xff0c;葉良俊譜曲&#xff0c;是電視劇《水晶之戀》的主題曲。歌曲時長4分28秒。 歌曲歌詞&#xff1a;看不穿你的眼睛藏有多少悲和喜像冰雪細膩又如此透明仿佛片刻就要老去整個城市的孤寂不止一個你…

3.26

http://codeforces.com/gym/101196/attachments A題 B題 題意&#xff1a;一群人玩桌上足球(>4人)&#xff0c;分成黑白兩隊&#xff0c;每隊有進攻和防守兩名玩家&#xff0c;如果有一方失敗則失敗方的防守坐到等候席的結尾、進攻被流放到防守區再上來一個人作為進攻方。而…

scala akka通信機制

https://www.2cto.com/kf/201701/587514.html轉載于:https://www.cnblogs.com/rocky-AGE-24/p/7542874.html

JUnit通過失敗測試案例

為什么要建立一種預期測試失敗的機制&#xff1f; 有一段時間&#xff0c;人們會希望并期望JUnit Test案例失敗。 盡管這種情況很少見&#xff0c;但確實發生了。 我需要檢測JUnit測試何時失敗&#xff0c;然后&#xff08;如果期望的話&#xff09;通過而不是失敗。 具體情況是…

CentOS6.5安裝MySQL5.7詳細教程

CentOS6.5安裝MySQL5.7詳細教程 注&#xff1a;文中所寫的安裝過程均在CentOS6.5 x86下通過測試 主要參考博文&#xff1a; https://segmentfault.com/a/1190000003049498 http://www.th7.cn/db/mysql/201601/175073.shtml 1.檢測系統是否已經安裝過mysql或其依賴&#xff0c;若…

cmake 查看編譯命令,以及在vscode中如何使用cmke

通過設置如下配置選項&#xff0c;可以生成compile_commands.json 文件&#xff0c;記錄使用的編譯命令 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)獲得現有模塊列表 cmake --help-module-list查看命令文檔 cmake --help-command find_file查看模塊的詳細信息 cmake --help-mo…

php學習八:封裝

一&#xff1a;在php中&#xff0c;用class關鍵字來創建一個類&#xff0c;即進行封裝&#xff1b;在類里面有成員屬性和方法行為組成&#xff1a; 1.成員屬性:用關鍵字var來聲明,可以給初始值也可以不給;現在var廢棄&#xff0c;用public來聲明&#xff0c;public為共有屬性&a…

純Java JavaFX 2.0菜單

在有關JavaFX的最新文章中 &#xff0c;我集中討論了不使用JavaFX 1.x的JavaFXScript和不使用JavaFX 2.0的新FXML來使用JavaFX 2.0的新Java API 。 所有這些示例均已使用標準Java編譯器進行了編譯&#xff0c;并使用標準Java啟動 器執行。 在本文中&#xff0c;我將繼續演示使用…

設置QtreeWidget水平滾動條

轉載請注明出處&#xff1a;http://www.cnblogs.com/dachen408/p/7552603.html //設置treewidget水平滾動條 ui.treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);ui.treeWidget->header()->setStretchLastSection(false);轉載于:https…

java 序列化 uid,Java中的序列化版本uid

How is Serialization id stored in the instance of the object ?The Serialization id we declare in Java is static field;and static fields are not serialized.There should be some way to store the static final field then. How does java do it ?解決方案The ser…

HTML5本地存儲

什么是Web Storage Web Storage是HTML5里面引入的一個類似于cookie的本地存儲功能&#xff0c;可以用于客戶端的本地存儲&#xff0c;其相對于cookie來說有以下幾點優勢&#xff1a; 存儲空間大&#xff1a;cookie只有4KB的存儲空間&#xff0c;而Web Storage在官方建議中為每個…

番石榴秒表

番石榴的秒表是番石榴第10版的另一個新番石榴類&#xff08;作為Optional &#xff0c;這是另一篇近期文章的主題&#xff09;。 顧名思義&#xff0c;這個簡單的類提供了一種方便地測量兩個代碼點之間經過的時間的方法。 與使用System.currentTimeMillis&#xff08;&#xff…

CF 839 E-最大團

CF 839 E Soltion: 就是怎么求最大團的問題: 以下是\(O(7000\times n^2)\)的做法 求一個最大團,然后將所有的藥水平均分配,到最大團的所有點上,計算答案. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorit…

sse java_SSE詳解

SSE(Server-Sent Events):通俗解釋起來就是一種基于HTTP的&#xff0c;以流的形式由服務端持續向客戶端發送數據的技術應用場景由于HTTP是無狀態的傳輸協議,每次請求需由客戶端向服務端建立連接,HTTPS還需要交換秘鑰&#xff0c;所以一次請求,建立連接的過程占了很大比例在http…

520. Detect Capital

題目&#xff1a; Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds: All letters in this word are capitals, like "USA".A…

盒模型的屬性丶display顯示丶浮動

一丶盒模型的屬性(重要) 1.padding padding是標準文檔流,父子之間調整位置 <!DOCTYPE html><html><head><meta charset"UTF-8"><title>padding</title><style>*{padding: 0;margin: 0;}.box{width: 200px;height: 200px;b…