题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1736
一道很水的模拟题目。
代码如下:(有注释)
#include<iostream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
typedef long long LL;
const int N=201000;
char s[N];
int main()
{
int i,j,T,t,n,m,a,b,sum;
while(gets(s)!=NULL)
{
int len=strlen(s);
sum=0;
for(i=0;i<len;i++)
{
string temp="";
temp=temp+s[i]+s[i+1];//这个地方不知道为什么不能写成temp+=s[i]+s[i+1];
if(temp=="“"||temp=="”")//这个地方一定要注意,中文的引号不是一个字符
{
sum++;
}
//其他地方就没什么注意的呢,直接模拟
if(s[i]=='"')
{
if(sum%2==0)
printf("“");
else
printf("”");
sum++;
}
else if(s[i]==',')
printf(",");
else if(s[i]=='.')
printf("。");
else if(s[i]=='!')
printf("!");
else if(s[i]=='?')
printf("?");
else if(s[i]=='<'&&s[i+1]=='<')
{
i++;
printf("《");
}
else if(s[i]=='>'&&s[i+1]=='>')
{
i++;
printf("》");
}
else
printf("%c",s[i]);
}
printf("\n");
}
return 0;
}