标签:指令 getchar 开头 cstring gets turn documents 输出 name
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<map> 6 using namespace std; 7 char s[300]; 8 map<char,int> o,a; 9 map<char,string> m; 10 int main() 11 { 12 cin>>s; 13 int i,j,n; 14 for(i=0;s[i]!=‘\0‘;++i) 15 if(s[i]==‘:‘) 16 o[s[i-1]]++; 17 else 18 o[s[i]]++; 19 cin>>n; 20 getchar(); 21 for(i=1;i<=n;++i) 22 { 23 a.clear(); 24 m.clear(); 25 gets(s); 26 printf("Case %d:",i); 27 for(j=1;s[j]!=‘ ‘&&s[j]!=‘\0‘;++j); 28 if(s[j]==‘\0‘) {puts("");continue;}//字符处理完毕 29 while(s[j]!=‘\0‘)//开始处理字符 30 { 31 if(s[++j]!=‘-‘) break;//命令错误退出 32 if(o[s[++j]]==0) break;//无该命令 33 if(o[s[j]]==1) //指令 34 { 35 if(s[j+1]==‘ ‘||s[j+1]==‘\0‘) 36 a[s[j++]]=1; 37 else break;//命令错误退出 38 } 39 else if(s[j+1]==‘ ‘&&s[j+2]!=‘/0‘)//记录参数 40 { 41 a[s[j]]=2; 42 string tmp=""; 43 int tm=j; 44 for(j=j+2;s[j]!=‘\0‘&&s[j]!=‘ ‘;++j) tmp+=s[j]; 45 m[s[tm]]=tmp; 46 } 47 else break; 48 } 49 map<char,int>::iterator it; //迭代器 50 for(it=a.begin();it!=a.end();++it) 51 { 52 cout<<" -"<<it->first; 53 if(it->second==2) cout<<‘ ‘<<m[it->first]; 54 } 55 puts(""); 56 } 57 return 0; 58 }
标签:指令 getchar 开头 cstring gets turn documents 输出 name
原文地址:http://www.cnblogs.com/qiujun/p/6066828.html