题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2564
方法:字符串解析
思路:整整被坑了一个小时,我无语了。首先,注意要求,单词内大小写是都有的,不是只有小写!另外,注意首端有多个空格的情况需要处理。还要注意字符中间有多个空格的情况。我采取的的策略是,先把所有字母的字符全部转为大写,这样一来,剩下的工作就只有筛选了。
难点:不要用scanf读入,scanf读入会自动忽略空格,应用gets语句,但是gets语句读入会会读入一个换行字符,所以还要用一个字符串ch去接一下这个换行,尼玛,我真是涨姿势了!
#include<cstdio>
#include<string.h>
#include<iostream>
#include<string>
using namespace std;
const int MAX = 300;
int main()
{
int t,l;
char str[MAX];
char ch[2];
scanf("%d",&t);
gets(ch);
{
for(int i = 1;i <= t;i++)
{
int k = 0;
char ans[MAX];
gets(str);
l = strlen(str);
for(int i = 0;i < l;i++)
{
if(str[i] >= 'a' &&str[i] <= 'z')
str[i] = str[i]-'a'+'A';
}
if(str[0] != ' ')
ans[k++] = str[0];
for(int i = 0;i < l;i++)
{
if(!(str[i] >= 'A' &&str[i] <= 'Z')&&str[i+1] != ' ')
ans[k++] = str[i+1];
}
ans[k++] = '\0';
printf("%s",ans);
printf("\n");
}
}
}