解法:
引进一个状态标志变量lastchar表示上一次处理字符的类型,1代表空格,0代表非空格(由于本题假设输入的一行字符中只有单词和空格,因此0即代表字母)。如果上一次处理的字符是空格,而本次处理的字符是字母,则该字母就是一个新单词的首字母。状态标志变量lastchar的赋值规则:如果遇到空格,则置lastchar = 1;如果遇到字母,则置lastchar = 0。
#include <stdio.h>
int main()
{
char c;
int lastchar = 1, count = 0;
printf("请输入一行字符;\n");
while ((c = getchar()) != '\n')
{
if (c == ' ')
lastchar = 1;
else
{
if (lastchar)
{
count++;
lastchar = 0;
}
}
}
printf("一共有%d个单词!\n", count);
return 0;
}