初级统计单词个数

这篇博客介绍了统计单词个数的编程问题,分析了两种不同的解题思路,并提供了具体的代码实现。接着,博主分享了处理字符串中删除指定子串的类似问题,同样强调了考虑多种情况的重要性。最后,博主进行了总结反思,认为面对看似简单的题目,应避免思维局限,充分考虑复杂情况。

第二篇

一.先贴题目
1031 统计单词个数

Description
写一个函数实现:输入一行字符,以空格分割单词,回车结束输入,输出单词的个数

输入样例
There are many students and many trees!

输出样例
7

二。思路分析
统计单词个数,这个题,首先的思路就是统计空格个数,总单词个数就是空格数加1,但是这样是不太对的,因为句子中两个单词之间可以有n多个空格,因此要去分离空格和单词,就可以获得结果了。基于这一点,可以有两种再细分的方法。

第一种,是循环逐个输入与遍历的时候,遇到空格就count++,然后下一步就可以把空格之后的空格用循环getchar来读取掉。
第二种,是循环遍历整个字符串的时候,只有遇到(字母+空格)的这种组合,再令count++。

三。具体代码实现

第一种:

#include<stdio.h>
int main()
{
    int i=0;
    int num= 1;
    char a;

    while((a =getchar())!='\n')
    {
        if(a == ' ')
        {
            num++;
            while((a=getchar())==' ');
        }
    }
    printf("%d\n",num);
}

第二种:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,t,k,n=1;
    char a[100];
    gets(a);
    i = 0;
    while(a[i]!='\0')
    {
        if(((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))&&a[i+1]==' ')
        {
            n++;
        }

        i++;
    }
    printf("%d",n);
    return 0;
}

四,再思考

在这道题之后。遇到了跟它有点相似的题目,基本思路是差不多的。

(一.先贴题目)
1081 字符串清除指定子串

由键盘输入一行字符(最多不超过80个字符,以回车结束),要求编程实现删除该行字符中的“bad”(小写),输出处理后的结果(结果不含bad)。

输入格式
一行字符

输出格式
不含“bad”的结果

输入样例
abadnewsisgoodnews,andbadisnotBad

输出样例
anewsisgoodnews,andisnotBad

(二.思路分析)
也和上面一样,不能只考虑只一个bad或者多个bad分离的情况,可以 以含bad为循环条件进行while循环,遇到bad,直接将数组往前移动3位把bad覆盖掉,然后再继续检测有没有bad..这样就可以解决多个bad互相关联的情况了。

(三.具体代码实现)

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
    char a[1000];
    char *p;
    int len;
    gets(a);
    len = strlen(a);
    while((p=strstr(a,"bad"))!=NULL)
    {
        for(i=p-a;i<len-2;i++)
        {
            a[i] = a[i+3];
        }
    }
    puts(a);

}

五.总结反思
其实前面的两道题,当时缠了我很久,我也想了好长一会,现在回看就觉得比较简单,遇到看似简单的问题,有时候是我把问题想得太单调了,测试用例也在迷惑我们,实际上可能有更复杂的情况,所以要有一个基本思路,而不是特定于单一情况下的思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值