思路:按题意,用指针遍历字符串st,使用标识变量flag首次遇到字母置1并计数,遇到空格时flag重置0。
注意:本程序不考虑夹杂非字母的情况,请规范输入。比如“I am a stu**dent”,stu**dent将作为一个单词识别。
下面是代码:
#include
int GetWordNum(char st[])
{
char *p=st;
int cnt=0,flag=0;
while(*p)
{
if(flag==0 && ((*p>='a' && *p<='z') || (*p>='A' && *p<='Z')))
cnt++,flag=1;
if(flag && *p==' ')
flag=0;
p++;
}
return cnt;
}
int main()
{
char str[]="I am a student";
printf("%s共计单词个数%d\n",str,GetWordNum(str));
return 0;
}
#include
#include
int GetWordNum(char s[])
{int i,n=0;
s[strlen(s)-1]=0;
for(i=0;s[i];i++)
{for(;s[i]&&s[i]==' ';i++);
for(;s[i]&&s[i]!=' ';i++);
n++;
}
return n;
}
int main()
{ char s[300];
gets(s);
printf("%d\n",GetWordNum(s));
return 0;
}
#include
int GetWordNum(char st[])
{
const char *p = &st[0];
int s = 0;
while (*p)
{
while (*p && *p == ' ')++p;
while (*p && *p != ' ')++p;
++s;
}
return s;
}
int main(int argc, char *argv[])
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
printf("%d\n", GetWordNum(buf));
return 0;
}