(第二周实验报告3‐1)输入一行字符,统计其中有多少个单词

 /*(3‐1)输入一行字符,统计其中有多少个单词。每两个单词之间以空格(可能多个)隔
开,或者由标点符号(只考虑 , . ; ? !共5 种)隔开。 如输入: How old are your? I am
20. 输出:There are 7 words in the line. 【知识点:字符数组】
* 算法说明:
* 开始逐个判断字符数组中的字符
* 当字符的ASKII码的值是字母或数字的ASKII码时将bool值pass的值改变;
* 这样就不执行判断字母了,而是改为判断不是字母
* 如果不是字母,说明有一个单词了,这时储存单词个数的变量自增
* 注意:
*    有一种情况
* 如果最后一个字符是'\0'这时会出现一个问题;
* 那就是没有计算最后一个单词;
* 所以,最后加上判断,如果pass==true;计数的变量再自增一次。
#include <iostream>
using namespace std;
int main()
{
bool pass = false;
int words_num = 0, i = 0;
char line[81];


cout <<"请输入一段话:"<< endl;
gets(line);

while (line[i] != '\0')
{
if (!pass)
{
if ((line[i] >= 65&&line[i] <= 90) || (line[i] >= 97&&line[i] <= 122) || (line[i] >= 48&&line[i] <= 57))
pass = true;
}
else
{
if (line[i] < 48 || (line[i] > 57&&line[i] <65) || (line[i] > 90&&line[i] <97) || line[i] > 122)
{
pass = false;
++words_num;
}
}
++i;
}
if (pass)
++words_num;

cout <<"There are "<< words_num <<" words in the line."<< endl;


return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值