精华内容
下载资源
问答
  • PAGE PAGE 13 Java语言课程作业 (第二次) 题 目 第 1题 学 院 计算机学院 专 业 网络工程 班 别 09级(2)班 学 号 3109006536 姓 名 罗晓然 2011年10月24日 一课程题目 读入一TXT文本仅有英文单词序列组成统计各个...
  • 这就给我们留下了一问题:如何又快、又准确地统计一篇英文文章中的单词数? 算法思想 要解决这问题,最自然的算法是,读取文章的所有内容,然后一个单词个单词统计,然而,我们在这里遇到了一难题:...

    在实际生活中经常会遇到一个问题:写英语作文时,常常要求满足一定的字数。在以往,要么我们一个一个地数;要么我们估算一行的单词数,然后用行数进行估算。

    第一种方法太费时,若是长篇大论,那几乎是不可能统计的;而第二种方法不太准确。这就给我们留下了一个问题:如何又快、又准确地统计一篇英文文章中的单词数?

     

    算法思想

    要解决这个问题,最自然的算法是,读取文章的所有内容,然后一个单词一个单词地统计,然而,我们在这里遇到了一个难题:程序看不懂英文,如何知道什么是一个单词,什么不是一个单词呢?似乎在这里遇到了障碍,可是,如果换个角度思考问题,也许会柳暗花明又一村:文章中的单词都是用空格间隔开的,换句话说,单词数=空格数+1。

    程序不认识单词,但是程序认识空格啊!这样,整个问题实际上转换成了统计文章中的空格数。

    有了这样的问题转换思路,整个问题就简单多了。可以先按照这个思路自己实现,也可以直接看下面的代码实现。

     

    程序代码

    #include <stdio.h>
    
    int main()
    
    {
    
        printf("输入一行字符:\n");
    
        char ch;
    
        int i,count=0,word=0;
    
        while((ch=getchar())!='\n')
    
            if(ch==' ')
    
                word=0;
    
            else if(word==0)
    
            {
    
                word=1;
    
                count++;
    
            }
    
        printf("总共有 %d 个单词\n",count);
    
        return 0;
    
    }

     

    调试运行结果

    根据程序提示,分别输入“I love China”和“I love Xichang College”两个字符串代码, 程序统计单词后输出结果分别如下所示:

    输入一行字符:

    I Love China

    总共有 3 个单词

    输入一行字符:

    I Love Peking University

    总共有 4 个单词

     

    总结

    本实例展示了如何对字符数组进行操作,类型为字符型的数组称为字符数组,C 语言中没有专门的字符串变量,但是有字符数组串常量,所以字符串常量的存储是通过对字符数组的操作来完成的。

    最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

    【值得关注】我的 C/C++编程学习交流俱乐部【点击进入】

    问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

    展开全文
  • C语言 统计单词个数

    万次阅读 2011-12-10 00:53:43
    写一程序统计单词(不区分大小写)在文章中出现的次数(单词指一个英文单词,全部由小写英文字母组成。单词的前后必须是符号字符或空字符)。 输入: 第一行是一些句子,表示一篇文章。(文章的长度不超过...
    写一个程序统计一个单词(不区分大小写)在文章中出现的次数(单词指一个英文单词,全部由小写英文字母组成。单词的前后必须是符号字符或空字符)。

    输入:
    第一行是一些句子,表示一篇文章。(文章的长度不超过10000个字符)。
    第二行是一个数字N(1≤N≤1062),代表查询的单词的数目。
    以下每行一个单词(单词由小写英文字母组成,长度不超过20)。
    输出:
    每组测试数据输出一行,表示这个单词在文章中出现的次数。
    例子输入:
    David:hello,lily. Lily:oh,david!hello,how are you?
    4
    hello
    day
    ello
    david

    例子输出:
    2
    0
    0
    2
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_CONTENT 10000
    #define MAX_WORD_LEN 20
    #define MAX_WORD_COUNT 500
    
    int GetWords(const char* szContent, char (*szWord)[MAX_WORD_LEN])
    {
        int num = 0;
        if (szContent == NULL)
        {
            return num;
        }
    
        char *start = szContent;
        char *cur = NULL;
        while (*start)
        {
            int len = 0;
            cur = start;
            while (((*cur>='a' && *cur<='z') || (*cur>='A' && *cur<='Z')))
            {
                if (*cur>='A' && *cur<='Z')
                {
                    *cur += 32;
                }
                cur++;
                len++;
            }
    
            if (len > 0)
            {
                memset(szWord[num], 0, MAX_WORD_LEN);
                memcpy(szWord[num], start, len);
                num++;
            }
    
            start += (len+1);
        }
        return num;
    }
    
    int GetWordCount(char (*szWord)[MAX_WORD_LEN], int num, char str[])
    {
        int i;
        int count = 0;
        if (szWord==NULL || num<=0 || str==NULL)
        {
            return count;
        }
    
        for (i=0; i<num; i++)
        {
            if (strcmp(szWord[i], str) == 0)
            {
                count++;
            }
        }
    
        return count;
    }
    int main()
    {
        int i;
        char szContent[MAX_CONTENT] = {0};
        char szWord[MAX_WORD_COUNT][MAX_WORD_LEN];
    
        printf("please input content:\n");
        gets(szContent);
        int totalNum = GetWords(szContent, szWord);
    
        printf("please input word count:\n");
        int inputCount = 0;
        char szTemp[MAX_WORD_LEN];
        scanf("%d", &inputCount);
        int *pCount = malloc(sizeof(int)*inputCount);
        for (i=0; i<inputCount; i++)
        {
            memset(szTemp, 0, MAX_WORD_LEN);
            scanf("%s", szTemp);
            pCount[i] = GetWordCount(szWord, totalNum, szTemp);
        }
    
        printf("-----------------\n");
        for (i=0; i<inputCount; i++)
        {
            printf("%d\n", pCount[i]);
        }
    
        free(pCount);
    
        return 0;
    }
    


    展开全文
  • C语言统计单词个数

    千次阅读 2013-06-22 14:32:45
    #include "stdio.h" ... printf("请输入一行英文:\n");  gets(s);  for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未  if(c==' ') word=0;//是空格就为0  else if(word==0)//不是空格就判断
    #include "stdio.h"
    main()
    {
     char s[81],c;
     int i,num=0,word=0;
     printf("请输入一行英文:\n");
     gets(s);
     for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未
     if(c==' ') word=0;//是空格就为0
      else if(word==0)//不是空格就判断之前有没有空格
        {
          word=1;//复位用来判断空格是否存在的开关
          num++;//如果之前有空格,单词数加1
        }
     printf("本行中共有%d个单词.\n",num);
    }


    其原理很简单:


    对每个字符进行判断,如果是空格就把变量word标记为0,如果不是空格就判断word是不是0(即判断之前有没有空格),如果存在空格单词量加1,然后复位word变量为0。就这样重复,知道句子结束


    追问


        理解了一些了 !! 谢谢!谢谢,已经很易懂了,
        但是还想请教一下  你说的复位那 不太理解 如果是单词了 num就+1了 为什么要让word=1呀


    回答


        其实word不一定非要等于1的,只要等于非0就可以了,如果不重置word,你下下一次输入字符时,num一样+1.。举个例子:
        我输入的是:It is happy that help somebody !
        首先经过程序的计算,这里会有7个单词,“!”也算进去了。
        判断开始,此时word=0;发现第一个不是空格,word=1,num加1;第二个字符不是空格,但此时word=1(这里就是为什么要重置word的原因,不然I和t会被视为2个单词)而不是0所以,所以num不增加。然后又发现第三个字符时空格,此时把word置为0,然后发现第四个字符不是空格,此时word在前一次遇到空格时置为0,所以满足条件word=0且c为非空格,所以此时word又被赋值1,num又加1,此时num为2(检查到的单词为it和is)。。。然后继续这样循环。。直到句子结束。
    展开全文
  • 输入样例: I like to read it, read it 100 times! 字符串中的非字母字符起分割单词的作用。...这样,我们能通过“”字符串中有多少分割来计算字符串中有多少个单词了。例如,例子中有8处空格(分割),分别位于I、li

    输入样例:

    I like to read it, read it 100 times!

    字符串中的非字母字符起分割单词的作用。为了方便代码处理,我们可以把所有非字母字符用一个统一的符号表示,例如,都转换成空格。以输入样例为例,用代码把

    I like to read it, read it 100 times!

    变成

    I like to read it read it times

    这样,我们能通过“数”字符串中有多少个分割来计算字符串中有多少个单词了。例如,例子中有8处空格(分割),分别位于I、like、to、read、it、read、it times之后。由于句子以分割结束(times后面有一个" "分割),因此句子中有8个单词。

    注意

    1. 多个连续的空格只能算一个分割。因此,在扫描到一个空格’ '的时候,要判断前一个字符是否也是空格" "。注意,字符串的首个字符没有“前一个字符”。
    2. 如果字符串以分割结束,则单词数 = 分割数。如果字符串以字母结束,则单词数 = 分割数+1

    代码展示:

    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    int main()
    {
    	int num,i;
    	char str[100];
        fgets(str,100,stdin);
        for(i=0;str[i]!='\0';i++)//将字符串中非字母的字符(数字,标点)变为空格 
        {
        	if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
        	{
        		str[i]=str[i];
    		}
    		else
    		{
    			str[i]=' ';
    		}
    	}
    	for(i=0;str[i]!='\0';i++)
    	{
    		if(str[i]==' '&&str[i+1]!=' ')// 判断该字符是否为‘ ’且该字符后一个字符是否为‘ ’ 
    		{
    			num++;
    		}
    	}
    	if(str[i-1]!=' ')//判断字符串最后是否以字母结尾(因为字符串输入时将最后的回车也输入进去了,所以字符串最后一个一定是'\n') 
    	{
    		num++;
    	}
    	printf("%d\n",num);
        //printf("%d\n",num);
        return 0;
    }
    
    展开全文
  • C语言-输入一行英文字符串统计单词个数

    千次阅读 多人点赞 2019-11-30 21:37:37
    C语言-输入一行英文字符串统计单词个数,单词之间以空格隔开 判断是否为单词的依据,通过一个flag标识,flag为0表示字符为空格,接下来出现不是空格,会将flag置为1 只有当flag为1且当前字符不为空格,才会算作...
  • 从一段英文文章中找到频率最大的几个单词,同时统计不同单词个数以及总单词个数,利用哈希进行存储。 #include<stdio.h> #include<ctype.h> #include<string.h> #include<stdlib.h> #...
  • C语言小程序之统计单词个数

    千次阅读 2018-12-04 09:07:36
    统计英文句子中含有英文单词的个数,单词之间用空格隔开 #include &lt;stdio.h&gt; int count(char *pstr) { int count = 0; while(*pstr) { if (*pstr == ' ') { count++; } pstr++; ...
  • 编写程序,实现单词个数统计。从键盘输入一行字符,长度小于1000。统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。输入要求:输入只有一行句子。仅有空格和英文字母构成。输出要求:输出单词的个数。 ...
  • C语言实验——单词统计

    千次阅读 2016-11-07 00:34:03
    C语言实验——单词统计 ...从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Output 单词
  • C语言单词数统计

    2020-04-11 01:30:28
    在这里插入代码输入一行英文句子,统计其中的单词个数(这里的单词是指有>=1个大小写字母连续出现所组成的子串,非大小写字母出现可认为一个单词结束。句子长度不超过50。 例如“Hello world!”单词个数为2。 ...
  • 题目描述:打开一个英文文本文件,假设文本文件单词之间全部用“空格”隔开,文本各段之间用“回车符”分开,统计输出文本的段数量,总单词数量,以及文本段的最长、最短、平均单词数量。 test.txt 文本内容:随便...
  • 统计单词个数 【问题描述】 输入一行英文字母,统计其中有多少个单词,单词之间用空格分隔。 【输入形式】一行英文字符 【输出形式】一个整数 【样例输入】Shanghai University 【样例输出】2 #include<stdio.h&...
  • 算法提高 不同单词个数统计 题目描述 编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, ...
  • 输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,要求能识别英文句号和逗号,即是说单词由空格、句号和逗号隔开。 输入描述: 输入有若干行,总计不超过1000...
  • //通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);#include<stdio.h> #include<string.h>#include<stdlib.h>main(){char string[100];//根据...
  • C语言实验——单词统计 ...从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Output 单词的个数。 Sample ...
  • 从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Output 单词的个数。 Sample Input stable marriage ...
  • 从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Output 单词的个数。 Sample Input stable marriage problem...
  • C语言实验——单词统计 (sdut oj)

    千次阅读 2017-02-08 22:51:38
    C语言实验——单词统计 ...从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Ou
  • C语言写的统计英文文章单词的源程序,注释清楚,代码简洁,主要用链表结构实现,能够正确运行,里面统计时把数字和其他字母等也统计为一个单词,可以在统计的方法里面进行修改,方便学习参考
  • C语言实验——单词统计 Time Limit: 1 Sec Memory...从键盘输入一行字符,统计其中单词的个数,各单词以空格分隔,且空格可以是多。 Input 输入只有一行句子。仅有空格和英文字母构成。 Output 单词的个数。
  • 文本读入能够分离出单词,过滤数字和标点符号,把字母大小写转为小写,按英文字母的顺序高招二叉树,遍历但不递归;用单链表存储结构,对两集合的内容进行并,交,差集运算

空空如也

空空如也

1 2 3 4 5
收藏数 84
精华内容 33
关键字:

c语言统计英文单词个数

c语言 订阅