文章标题

来源:互联网 发布:js判断option是否选中 编辑:程序博客网 时间:2024/05/29 08:16

CCF 命令行选项

#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;struct state{    char c;    int tag;//0:不带参数,1:带参数};struct result1{    int i;    char * s;};int main(){    struct state cs[52];    char c;    scanf("%c",&c);    int len=0;    while(c!='\n'){        if(c!=':'){cs[len].c=c;cs[len++].tag=0;}        else {cs[len-1].tag=1;}        scanf("%c",&c);    }    int n;    scanf("%d",&n);getchar();    char od[n][256];    for(int i=0;i<n;i++)        gets(od[i]);    /**对cs排序*/    for(int i=1;i<len;i++)        for(int j=0;j<len-i;j++){            if(cs[j].c>cs[j+1].c){                int t1,t2;                t1=cs[j].c;t2=cs[j].tag;                cs[j].c=cs[j+1].c;cs[j].tag=cs[j+1].tag;                cs[j+1].c=t1;cs[j+1].tag=t2;            }        }    struct result1 r[len];    for(int i=0;i<n;i++){        for(int i=0;i<len;i++) r[i].i=0;        int k,j=0,flag=0;char c1;        while(od[i][j]!='\0'&&flag==0){            while(od[i][j]!='-'&&od[i][j]!='\0') j++;            if(od[i][j]=='-'){                c1=od[i][++j];                for(k=0;k<len;k++){                    if(c1==cs[k].c){                        if(cs[k].tag==1){/**该选项带参数*/                            while(od[i][++j]==' ');                            if(od[i][j]=='-'||od[i][j]=='\0'){flag=1;}                            else {r[k].i=1;r[k].s=&od[i][j];while(od[i][++j]!=' ');od[i][j++]='\0';}                        }                        else{/**该选项不带参数*/                            while(od[i][++j]==' ');                            if(od[i][j]!='-'&&od[i][j]!='\0'){flag=1;}                            else r[k].i=1;                        }                        break;                    }                }                if(k==len)/**没有该选项*/                    flag=1;            }        }        /**输出*/        printf("Case %d: ",i);        for(int i=0;i<len;i++){            if(r[i].i==1){                if(cs[i].tag==0)                    printf("-%c ",cs[i].c);                else                    printf("-%c %s ",cs[i].c,r[i].s);            }        }        printf("\n");    }    return 0;}
0 0