C语言把每个单词的首字母和尾巴更改大小写

来源:百度知道 编辑:UC知道 时间:2024/06/21 10:02:20
输入一串字符,统计单词个数,并且把每个单词的首字母和尾字母进行大小写替换。我回统计单词个数。
#include<stdio.h>
#include<string.h>
void main()
{
char s[100];
int i,num=0,word=0;
char c;
gets(s);
for(i=0;(c=s[i])!='\0';i++)
{ if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
if(c>='a'&&c<='z') c-=32;s[i]=c;continue;
if(c>='A'&&c<='Z') c+=32;
s[i]=c;
}
}

printf("There are %d word in the line.\n",num);
puts(s);

}

怎么实现每个单词的首尾字母更改啊。

楼上程序有BUG,假如首先输入空格再输入单词或者在输入中多输入几个空格的时候,你的程序就有问题了!
#include<stdio.h>
#include<string.h>
void main()
{
char s[100];
int i,num=0,word=0,n=0;
char c;
gets(s);
for(i=0;(c=s[i])!='\0';i++)
{
if(c!=' ')
n++;
if(c==' ')
{
word=0;
if(n>1)
{
if(s[i-1]>='a'&&s[i-1]<='z')
{
s[i-1]-=32;
n=0;
continue;
}
if(s[i-1]>='A'&&s[i-1]<='Z')
{
s[i-1]+=32;
n=0;
continue;
}
}
}
if(c!=' '&&word==0)
{
word=1;
num++;
if(c>='a'&&c<='z')
{
c-=32;
s[i]=c;
continue;
}
if(c>='A'&&c<='Z')
{
c+=32;
s[i]=c;
continue;
}
}
}
if(s[i-1]>='a'&&s[i-1]<='z')
s[i-1]-=