Problem C: 首字母变大写
Description
输入一个英文句子,将每个单词的第一个字母改成大写字母。
Input
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
Output
请输出按照要求改写后的英文句子。
Sample Input
i like acm
i want to get an accepted
Sample Output
I Like Acm
I Want To Get An Accepted
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int n,i;
char str[100];
while(gets(str))
{n=strlen(str);
str[0]=str[0]-32;
for(i=1;i<=n-1;i++)
{if(str[i-1]=='')
str[i]=str[i]-32;}
cout<<str<<endl;}
return 0;
}
将首字母变大写,其实只要找到首字母,然后再通过ASCII表进行转化就可以了。
这道题主要考察如何找到首字母以及ASCII的合理运用,我们都知道,在英语中,首字母就是一个单词的第一个字母,而区分是一个单词还是两个单词,就看有没有空格,所以,必须用gets输入字符串;
在查找首字母时,要依次对每个字符进行比较,看是否符合首字母的条件(前面有空格),而一般情况下,一句话的第一个字母都是首字母(这里不考虑首行缩进,如有要求,可自行修改);
我们求出来字符串的长度后(n=strlen(str);),先把第一个字母大写(str[0]=str[0]-32;),要通过ASCII表转换,然后从第二个字母开始依次(for(i=1;i<=n-1;i++))对每个字母检查,符合要求,即前面有空格(if(str[i-1]=='')),就把该字母大写(str[i]=str[i]-32;);否则不做处理;
检查完之后,把转换后的字符串输出(cout<<str<<endl;)!