改写大小写(二维数组、字符数组) 输入一个英文句子,将每个单词的首字母改为大写字母,并删除单词间多余的空格(两单词之间只保留一个空格)。

::改写大小写(二维数组、字符数组)
输入一个英文题目,将每个单词的首字母改为大写字母,并删除单词间多余的空格(两单词之间只保留一个空格)。
【输入形式】
英文题目
【输出形式】
删除多余空格,首字母大写输出
【样例输入】

this class is about c language.

【样例输出】

This Class Is About C Language.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{ char x[100];
int i;
int flag=0;
gets(x);
if(x[0]!='\0'&&x[0]!=' ')
x[0]=x[0]-32;
for(i=1;x[i]!='\0';i++)
{
if((x[i-1]==' ')&&(x[i]>='a')&&x[i]<='z')
{
x[i]=x[i]-32;
}

}
for(i=1;x[i]!='\0';i++)
{
    if(x[i]==' ')
    {
       flag++;
    }
    if(flag>1)
    putchar(' ');
}
for(i=0;x[i]!='\0';i++)
{
    printf("%c",x[i]);
}

return 0;
}
这是我写的
不知道错在哪里

给你个参考的,多余的空格你再去掉


#include <stdio.h>
 
void main()
{
char str[100],*p;
printf("请输入内容:\n");
gets(str);
p=str;
for(p=str;*p;p++)
{
if (p==str && *p>='a' && *p <='z') *p=*p-32;
    if (*p==' ')
    {
        if(*(p+1)>='a' && *(p+1) <= 'z') *(p+1)=*(p+1)-32;
    }
}
puts(str);
}