判断输入一个字符串中的单词数,实现头部空格检测,现在的缺陷是不能识别标点。比如 I love c program.I love too. 结果是6,会把 program.I 识别成一个单词。
#include<stdio.h>
void count(char s[])
{
int i,num=0,head;
i=0;
while(s[i]!='\0')
{
if(s[i]!=' ')
{
head=i;
break;
}
i++;
}
printf("head=%d\n",head);
if(head==0)num=1;
else num=0;
for(i=head;s[i]!='\0';i++)
{
if((s[i-1]==' ')&&(s[i]!=' ')) num++;
}
printf("单词数:%d。\n",num);
}
int main()
{
char s[500];
gets(s);
printf("输入成功,输出:\n");
puts(s);
printf("\n");
count(s);
return 0;
}
20160805今天实现了单词+标点+单词的识别。
#include<stdio.h>
int ZiMu(char c)//判断字符是否是字母
{
int i;
if(((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z')))
i=1;
else
i=0;
return i;
}
void count(char s[])
{
int i,num=0,head;
i=0;
while(s[i]!='\0')
{
if(s[i]!=' ')
{
head=i;
break;
}
i++;
}
printf("head=%d\n",head);
if(head==0)num=1;
else num=0;
for(i=head;s[i]!='\0';i++)
{
if(((s[i-1]==' ')&&(s[i]!=' '))||((!ZiMu(s[i-1]))&&(s[i-1]!=' ')&&(ZiMu(s[i])))) num++;
}
printf("单词数:%d。\n",num);
}
int main()
{
char s[500];
gets(s);
printf("输入成功,输出:\n");
puts(s);
printf("\n");
count(s);
return 0;
}
只能识别英文字符串。