在A题目的时候经常会遇到字符串处理的问题,而这类问题的一个明显特点是,虽然题目很容易,题意一眼就能读懂,但是往往会在字符串的输入输出上产生很大的问题,让人感到很无语,最常见的如输入一行字符串,其中包括空格,要对这行字符串进行处理。
今天A题目的时候发现一个处理字符串中存在空格时的输入方法,觉得很好用,就想与大家分享一下。这个方法也非常简单,就是使用gets()函数进行输入,使用puts()函数进行输出,我们用两道具体题目来看一下吧。
题目一:hdu2026
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2026
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
char line[105];
while(gets(line))
{
int len = strlen(line);
if(line[0]!=' ')
{
line[0] = line[0]-32;
}
for(int i=1;i<len;i++)
{
if(line[i]==' ')
{
line[i+1]-=32;
}
}
puts(line);
}
return 0;
}
题目二:hdu2027
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2027
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
char yuan[5] = {'a','e','i','o','u'};
int yuannum[5];
int n;
char line[105];
while(cin>>n)
{
getchar();//此处注意,必须用getchar()吃掉一个空字符,否则后面用gets()的时候就会产生错位的现象
for(int k=0;k<n;k++)
{
memset(yuannum,0,sizeof(yuannum));
gets(line);
for(int i=0;i<strlen(line);i++)
{
for(int j=0;j<5;j++)
{
if(line[i]==yuan[j])
{
yuannum[j]++;
}
}
}
for(int i=0;i<5;i++)
{
cout<<yuan[i]<<":"<<yuannum[i]<<endl;
}
if(k!=n-1)cout<<endl;
}
}
return 0;
}