输入一行字符,统计其中单词的个数,单词之间使用空格分开。
#include<stdio.h>
int main()
{
//输入一行字符,统计其中有多少个单词,单词之间用空格符分隔开
char c;
int word=0,lastchar=1;
printf("请输入一行字符:");
while((c=getchar())!='\n')
{
if(c==' ')
{
lastchar=1;
}
else
{
if(lastchar)
{
word++;
lastchar=0;
}
}
}
printf("该字符中共有%d个单词!\n",word);
return 0;
}
使用getchar进行输入,需要设置标志变量lastchar,表示上一次判断的字符类型是空格还是字符,0表示1表示空格,0表示字符,所以初始就要将lastchar设置为1,因为空格的数量会比单词的个数少一个。只有遇到了空格,且其后面出现非空格我们才统计单词的个数+1。
#include<stdio.h>
int main()
{
//使用字符数组来输入字符串
char str[81];
int i=0,word=0;
printf("请输入一行字符:");
gets(str);
while(str[i]!='\0')
{
if(str[i]==' ')
{
for(i++;str[i]==' ';i++);
}
else
{
word++;
for(i++;str[i]!=' '&&str[i]!='\0';i++);
}
}
printf("该行字符共有%d个单词!\n",word);
return 0;
}
此外另一种方法则是使用数组来处理字符串,通过循环跳过连续的若干个空格来控制字符串的处理,for(i++;str[i]!=' '&&str[i]!='\0';i++);中的判断条件是在初始值i++的基础上进行判断其后一个是不是'\0',是'\0'的话就会结束for循环,这时的'\0'再次由while循环进行判断,结束while循环,最后才进行输出。