说实话,这种题如果给我返回结果我是一定可以写出来的但是ccf不返回结果很烦,这种题我根本不能一次写对。还有重写时发现好多考试之前根本没注意到的点比如删掉空行
。。。。。。。=_=
#include<bits/stdc++.h> using namespace std; string s; void emp(int ss,int e); void link(int ss,int e); void out(int ss,int e) { for(int j=ss;j<=e;j++) { if(s[j]=='_') { int t=j+1; while(s[t]!='_') t++; emp(j,t); j=t; } else if(s[j]=='[') { int t=j+1; while(s[t]!=')') t++; link(j,t); j=t; } else cout<<s[j]; } } void emp(int ss,int e) { cout<<"<em>"; out(ss+1,e-1); cout<<"</em>"; } void link(int ss,int e) { int i=ss+1; while(s[i]!=']') i++; int t=i+1; while(s[t]!=')') t++; cout<<"<a href="<<'"'; out(i+2,t-1); cout<<'"'<<'>'; out(ss+1,i-1); cout<<"</a>"; } void line() { int i=1; while(s[i]==' ') i++; cout<<"<li>"; out(i,s.length()-1); cout<<"</li>"<<endl; } void title() { int cnt=0,i=0; while(s[i]=='#') { i++; cnt++; } while(s[i]==' ') { i++; } cout<<"<h"<<cnt<<'>'; out(i,s.length()-1); cout<<"</h"<<cnt<<'>'<<endl; } int main() { //freopen("in.txt","r",stdin); while(getline(cin,s)) { // cout<<s[0]; if(s[0]=='#') title(); else if(s[0]=='*') { cout<<"<ul>"<<endl; line(); while(getline(cin,s)&&s[0]=='*') { line(); } cout<<"</ul>"<<endl; } else if(s[0]>=32&&s[0]<=126){ cout<<"<p>"; out(0,s.length()-1); while(getline(cin,s)&&s[0]>=32&&s[0]<=126) { cout<<endl; out(0,s.length()-1); } cout<<"</p>"<<endl; } } }