(C语言)统计一行字符的单词数

统计一行字符的单词数

题目:输入一行字符,统计其中包括多少单词,单词之间用空格分隔。

输入输出格式要求:
输入格式:a b c d回车(空格可在任意位置,列如行头行尾可能会有空格。另外数字和字母一样,也可作为单词)
输出格式:单词数
输入的字符串长度最长为256个字符
例如:
输入:(空格)a a 112 c(空格)回车
输出:4

这道题,如果用简单的方法来做的话,可能有很多人不懂,用复杂的方法来写的话,我估计很多萌新更看不明白,所以,这里还是用简单的方法来表示(其实我也不太懂复杂的,嘿嘿,复杂的毕竟逻辑是严谨的,这个简单的还有些小空缺)

代码:
#include <stdio.h>
#include <string.h>

int main()
{
int i=0,num = 0,word=0;
char str[256];
gets(str);//这里用gets比scanf要方便很多
for (i=0;str[i] != ‘\0’;i++)//判断当字符串不是结束符时的内容
{
if(str[i]==’ ')//这里举个列子,假设i=0,这是首元素的值,为空的话,判定量word为0,继续for循环,i=1,假如str[1]不为空,它跳到else条件,正好word=0符合条件,使判定量为1,单词数加1,这里大家需要注意的是,abc,单词数为1,a b c单词数为3,只要是连着的字符,它的数量都算为1,一定要读懂题意,很多人做到后面的循环就把这里忘了,所以需要word这个判定量;继续循环,i=2时,假设它不是空格,这里就明白了str[1]和str[2]的字符是连在一起的,只能算一个单词,因此判定量的作用来了,进入else循环的条件是word=0,但是前面word已经为1了,因此就不能进去,所以继续for循环,只能等到下一个空格,这个字符串的计数结束,等待下一个字符串的计数。
word = 0;
else if (word == 0)
{
word = 1;
num++;
}
}
printf("%d",num);
return 0;

}

该说的都在上面解释了,还有不懂的在评论区发言,大家一起讨论

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值