[2026]:首字母变大写

首字母变大写

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 42491 Accepted Submission(s): 23547

Problem 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

思路:
(1)第一个或空格的下一位
(2)如果本身就是大写字母则不作处理
(3)大写字母比对应的小写字母小32
(4)大写字母ASCII码范围为65-91
(5)输入的是多组测试

#include
#include

int main()
{
    int c;
    char str[100];

    while(gets(str)!=NULL){ // 注意,由返回值类型可知为NULL而不是EOF

        int length = strlen(str);
        int i;

        for(i=0; iif(i==0){ // 数组首元素
                if(str[i]>=65 && str[i]<=91){ // 判断是否已经是大写
                    continue;
                }
                else{ // 大写与小写差32
                    str[i] -= 32;
                }
            }
            else{   
                if(str[i]==' '){ //单词首字母
                    i++;
                    if(str[i]>=65 && str[i]<=91){
                        continue;
                    }
                    else{
                        str[i] -= 32;
                    }
                }
            }
        }

        for(i=0; i"%c", str[i]);
        }

    }
    return 0;
}

[2026]:首字母变大写_第1张图片
[2026]:首字母变大写_第2张图片

注意:

刚开始不知道EOF类型,报错:[Warning] comparison between pointer and integer
它的意思是:
gets 返回值类型是 char*
EOF的数据类型是 int[诸如此类 反正不是指针]

你可能感兴趣的:(剑指ACM)