输入一字符串,判断其中英文单词的个数
代码:
#include <stdio.h>
int main()
{
int i, sum = 0, word = 0;
char string[100];
gets_s(string);
for (i = 0; string[i] != '\0'; i++)
if (string[i] == ' ')
word = 0;
else if (word == 0)
{
word = 1;
sum++;
}
printf("该字符串中单词数是:%d\n", sum);
return 0;
}//==此方法运用了一个简单的状态机==
**另一个方法:**
#include <stdio.h>
#include <string.h>
#define SIZE 20
int main()
{
char str[SIZE]={'\0'};
int count=0;
printf("plz input the string\n");
gets(str);
puts(str);
int length = strlen(str);
for (int i=0;i<length;i++)
{
if(str[i]!=' ')
{
count++;
while(str[i]!=' '&&str[i]!='\0')
{
i++;
}
}
}
printf("%d\n",count);
return 0;
}
此方法则巧妙地跳过了连续的空格与连续的非空格字符,当你读一段代码感觉有点蒙的时候,可以在编译器上面进行单步调试来理清代码是如何进行运行的
**我的方法:**
```c
#include <stdio.h>
int main()
{
char ci[1000];
gets(ci);
int i,n=0,a,N=0;
for(i=0;ci[i]!='\0';i++)
{
n++;
}
if(ci[0]!=' ')
N++;
for(a=0;a<n-1;a++)
{
if(ci[a]==' '&&(ci[a+1]>='a'&&ci[a+1]<='z'))
N++;
if(ci[a]==' '&&(ci[a+1]>='A'&&ci[a+1]<='Z'))
N++;
}
printf("%d",N);
return 0;
}
有点笨,且不具有通用性