算法笔记1805ProblemB 首字母大写

题目描述

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:空格(’ ‘)、制表符(’\t’)、回车符(’\r’)、换行符(’\n’)。

输入

输入一行:待处理的字符串(长度小于100)。

输出

可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。

样例输入

if so, you already have a google account. you can sign in on the right.

样例输出

If So, You Already Have A Google Account. You Can Sign In On The Right.

代码展示

#include <cstdio>
int main()
{

    char str[100] =  "";
    while(gets(str) != NULL)
    {
        if(str[0] >= 'a' && str[0] <= 'z')  // 处理第一个单词的首字符
        {
            str[0] = str[0] + 'A' - 'a';
        }
        int i = 0;
        while(str[++i] != '\0')
        {
            if(' ' == str[i])                   // 处理其他单词的首字符
            {
                if(str[i + 1] >= 'a' && str[i + 1] <= 'z')
                {
                    str[i + 1] = str[i + 1] + 'A' - 'a';
                }
            }
        }
        printf("%s\n", str);
    }
    return 0;
}

小结

题目不难,但是由于把循环变量i放在了while外面导致纠结了半天。。。

猜你喜欢

转载自blog.csdn.net/luminouswithyou/article/details/89059877