按题目要求编写完整功能代码,参考答案点击按钮展开
编写函数 fun,统计字符串 s 中单词个数(单词以空格分隔,连续多个空格算一个)。例如 "I love C programming" 返回 4。
#include <stdio.h>
/* 函数功能:统计字符串 s 中单词个数,单词以空格分隔,
连续多个空格视为一个分隔符。请在下方编写 fun 函数体。 */
int fun(char s[])
{
/* 请在这里编写代码 */
}
int main()
{
char s[100];
printf("请输入字符串: ");
gets(s);
printf("单词个数: %d\n", fun(s));
return 0;
}
int fun(char s[])
{
int i, count = 0, in_word = 0;
for(i=0; s[i]!='\0'; i++)
{
if(s[i] != ' ')
{
if(in_word == 0)
{
count++;
in_word = 1;
}
}
else
{
in_word = 0;
}
}
return count;
}
考点:状态机思想。用 in_word 标记当前是否在单词中(0=空格区,1=单词区)。只有从空格区进入单词区(in_word 从 0 变 1)时 count++,这样连续空格只算一次进入。遇到空格就把 in_word 置 0。这种'状态翻转'解法能正确处理前导空格、连续空格、末尾空格。