您的位置:首页 > 其它

[HDOJ]problem_1075【What Are You Talking About】

2014-07-18 13:40 405 查看
[HDOJ]problem_1075【What Are You Talking About】:

点击打开链接

#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
map<string,string> str;
map<string,string> ::iterator pos;
int i,j,n,t,r,k;
char s1[30],s2[30],s3[3005];
while (scanf("%s",s1)&&strcmp(s1,"START")!=0);
while (scanf("%s",s1)&&strcmp(s1,"END")!=0)
{
scanf("%s",s2);
str[s2]=s1;
}
while (scanf("%s",s1))
{
if (strcmp(s1,"START")==0)
break;
}
getchar();                                   //******
while (gets(s3))
{

if (strcmp(s3,"END")==0)
return 0;
r=0;
for (i=0;i<strlen(s3);i++)
{
if (s3[i]>='a'&&s3[i]<='z')
{
s1[r++]=s3[i];
}
else
{
s1[r]='\0';
r=0;
if (str.find(s1)!=str.end())
cout<<str[s1];
else
cout<<s1;
printf("%c",s3[i]);
}
}
printf("\n");
}
return 0;
}


刚开始没有加getchar();第二个START后面会有个空行,一直不明白为什么。后来问了学长才知道原来回车只是作为%s结束的标志,后面的gets(str3);会把回车吃掉。哈哈……还真是一个细小的问题,虽然细小,还是值得注意的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: