C语言的编程,输入一个英文句子,将每个单词的第一个字母改成大写字母

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

#include<stdio.h>
#include<string.h>
int main()
{
char a[200],*p;
gets(a);
for(p=a;*p!='\0';p++)
{
if(*p==a[0]&&*p!=' ')
if(*p>='a'&&*p<='z') printf("%c",*p-32);
else printf("%c",*p);
else if(*p!=' '&&*(p-1)==' ')
if(*p>='a'&&*p<='z') printf("%c",*p-32);
else printf("%c",*p);
else printf("%c",*p);
}
return 0;
}

char a[100];
    while(scanf("%s", a)!=EOF)
    {
        if('a'<=a[0] && a[0]<='z')
        {
            a[0]-=32;
        }
        printf("%s ", a);
        a[100]=0;
    }