#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[20];//定义一个字符型一维数组,长度为20
int i,num;
printf("请输入一行英文:\n");//提示语句
gets(str);//输入一个字符串给字符数组str
num = str[0]!= ' '? 1:0;//? : 是条件运算符,如果str[0]!=' '为真,则num = 1,否则num = 0。
for(i=1;str[i]!='\0';i++)//由于字符串结束标志是'\0',只有str[i]!='\0',for循环才一直进行循环,否则退出循环
{
if((str[i]!=' ')&&(str[i-1]==' '))
{
num++;
}
}
printf("num = %d\n",num);//打印单词的个数
return 0;
}
if((str[i]!=' ')&&(str[i-1]==' '))
满足单词个数num++的条件:
若当前字符不是空格,而前一字符是空格,则表示有新单词出现
当我们输入i want to fly 时,i前面不是空格,但是他也算一个单词,
所以这就是 num = str[0]!= ' '? 1:0;单独写出来的原因

博客主要介绍了计算字符串中单词个数的条件。当当前字符非空格且前一字符是空格时,单词个数加1。对于输入字符串的首个字符,若不是空格也算一个单词,因此单独给出了初始单词个数的判断条件。
382

被折叠的 条评论
为什么被折叠?



