标题:【新手】如何在一个打开的文本文件中实现按照单词长度统计单词个数的功能呢
只看楼主
moonbria
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-10-30
结帖率:0
已结贴  问题点数:20 回复次数:6 
【新手】如何在一个打开的文本文件中实现按照单词长度统计单词个数的功能呢
这个是主程序,实现打开任意一个文本文件并统计该文件的字符,空白,段落等参数,但是还要求按照单词长度统计单词个数这个功能。
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
void main()
{
    int zifu=0,danci=0,kongbai=0,duanluo=0;
    char ch;
    char fname[1000];
    printf("请输入需要打开的英文文本文件名:\n(注:应当包含完整路径)\n");
    scanf("%s",fname);
    if((fp=fopen(fname,"r"))==NULL)
    {
        printf("文件不存在!\n");
        exit(0);
    }
    ch=fgetc(fp);
    printf("\n该文本内容如下:\n");
    while(ch!=EOF)
    {
    if(ch==' ')
        kongbai++;
    else if((ch>='!'&&ch<='~'))
        zifu++;
    else if(ch==10||ch==13)
        duanluo++;
    






    putchar(ch);
    ch=fgetc(fp);
    }
    fclose(fp);
    printf("\n\n上述文本中空白的数目:%d\n",kongbai);
    printf("\n上述文本中字符的数目:%d\n",zifu);
    printf("\n上述文本中段落的数目:%d\n",duanluo+1);
    printf("\n上述文本中单词的数目:%d\n",danci);
}


虽然说单单做一个单词统计的程序我也会,但是合并起来要怎么实现呢。。。
程序代码:
#include "stdio.h"
main()
{
    int i,j=0,num=1,word=0,max=0,js[200],gs[100];//js[200]表示最多允许输入200个单词,gs[100]表示每个单词最多含100个字母

    char a[10000];//最多允许输入10000个字符,事实上只能输入9999,因为系统要为'\0'预留一个空间

    printf("请输入字符串\n");
    gets(a);//获取用户输入

    for(int k=0;k<200;k++)//给数组赋初值
    {js[k]=0;gs[k]=0;}

    for(i=0;a[i]!='\0';i++)//计算有多少个空格,及每个单词有多少字母
    {
        if(a[i]==' ')
        {j++;word++;}
        else
            js[j]++;
    }

    word++;//word个空格把单词分成word+1个

    for(i=0;i<j+1;i++)//找字母数目最多的单词
    {
        if(max<js[i])
        {max=js[i];}
    }

    do//计算字母数目相同的单词 的个数
    {
        for(i=0;i<word;i++)
            {
                if(js[i]==num)
                    gs[num]++;
            }
            num++;
    }while(num<=max);

    printf(" 长度 个数\n");
    for(i=1;i<=max;i++)//对应输出
        {
            printf("%4d %4d\n",i,gs[i]);
        }
    printf("合计:%4d\n",word);
}


可能问题比较菜了= =||
大大们要是会的话别走QAQ
搜索更多相关主题的帖子: 文本文件 主程序 单词 如何 统计 
2014-10-30 23:21
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:10 
1. gets只读一行;
2. 用空格去分单词可能有点问题;
3. 段落怎么定义?

梦想拥有一台龙芯3A-4000
2014-10-31 02:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
回2楼:段落就是以'\n'分隔的数据。
回1楼:单独小程序能编,综合各个小程序为一体,正是你要加力的跃龙门训练,最好自己先努力,别人一下子帮了你,是学不到的,努力过,再看别人的指点,才懂为什么。

授人以渔,不授人以鱼。
2014-10-31 18:27
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
原来是如此简单滴问题,哈哈

梦想拥有一台龙芯3A-4000
2014-10-31 19:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用ditg在2014-10-31 19:32:04的发言:

原来是如此简单滴问题,哈哈

也不一定的,跟排版有关。有的人排版,每行用硬回车,分段的时候,隔空行;也可以每行不敲回车,仅用一个回车分段。视具体情形处理。

授人以渔,不授人以鱼。
2014-10-31 19:35
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
有道理,开始一拍脑袋认为就大概“每行用硬回车,分段的时候,隔空行”,看来得加强学习呀。

梦想拥有一台龙芯3A-4000
2014-11-01 10:57
d5016508
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-10-15
得分:0 
大神能把这个完整的发给我看看么
2015-10-15 09:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437916-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048306 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved