统计一行字符(包含空格、标点符号)的单词个数
//统计输入的字符串中有多少个单词
char s[50];
int i=0,count=0;
gets(s);
int len = (int)strlen(s);
printf("length=%d\n",len);
int flag=0;
char c;
for (i=0;(c=s[i])!='\0';i++)
{
//每出现一个字母则置状态为1
if ((s[i]<='z' && s[i]>='a')||(s[i]<='Z' && s[i]>='A'))
{
flag=1;
}
//连续字母次数只统计一次(即一个单词)
else if(flag){
count++;
flag=0;
}
}
//只输入一个单词时做增加
if(flag)
{
count++;
}
//-------等价于-------
// int flag=0;
// for (i=0;(c=s[i])!='\0';i++)
// {
// //如果不是字母则标记flag恢复0
// if (!(s[i]<='z' && s[i]>='a')||(s[i]<='Z' && s[i]>='A'))
// {
// flag=0;
// }
// //是单词是第一个字母count加1,随后将标记置为1,防止重复累加
// else if(flag==0){
// count++;
// flag=1;
// }
// }
printf("%s\n",s);
printf("%d\n",count);