输入一行字符,统计其中单词的个数,单词之间使用空格分开。
#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循环,最后才进行输出。