| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 415 人关注过本帖
标题:读入一个英文文件显示并 统计单词数量和段落数量
只看楼主 收藏
汽水与大饼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-13
结帖率:0
  已结贴   问题点数:20  回复次数:4   
读入一个英文文件显示并 统计单词数量和段落数量
编写一个小程序,可以读入一个英文的文本文件,显示这个文件,
并统计这个文件有多少个字符,多少个单词,多少个空白(空格、
TAB),多少个段落,按照单词的长度进行统计。
2018-04-13 08:20
童生
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:205
专家分:455
注 册:2018-3-7
  得分:20 
好的,你等着
2018-04-13 09:21
汽水与大饼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-13
  得分:0 
回复 2楼 童生
请问可以了吗 问了老师 她说单词数简单的用空格数控制不太精确
#include <stdio.h>
#include <stdlib.h>
void main()
{
    FILE *fp;
    char ch;
    int n1,n2,n3,n4,a;
    n1=n2=n3=n4=a=0;
    if((fp=fopen("D:\\english.txt","r"))==NULL)
    {printf("cannot open the file\n");
    exit(0);
    }
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        putchar(ch);
        n1++;   
        if(ch==' '||ch=='\t')
        {
            n2++;
            a=0;
            if(a==0)
            {a=1;
            n3++;
            }
        }

        else if(ch=='\n'||ch=='\r')
        n4++;
        else if(ch<'A'||ch>'Z'&&ch<'a'||ch>'z')
        {    a=0;
            if(a==0)
            {a=1;
            n3++;
            }
        }
     
      
        ch=fgetc(fp);
    }
    printf("\n");
    printf("字符有%d个,空白的数量有%d个,单词数量有%d个,段落的数量%d个",n1,n2,n3,n4);
    fclose(fp);
        
}   

上面的程序 运行出来的空格数和单词数都比实际多了一个,不知道怎么改
2018-04-13 11:21
汽水与大饼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-4-13
  得分:0 
有没有人帮帮我啊
2018-04-13 14:29
童生
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:205
专家分:455
注 册:2018-3-7
  得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
    FILE *fp;
    char ch,Oldch;
    // int n1,n2,n3,n4,a;
//   n1=n2=n3=n4=a=0;
    int Paragraph = 0;
    int Word = 0;
    int Blank_space =0;
    int Letters = 0;
    bool WordFalg = false;
    bool ParagraphFalg = false;
    if ((fp=fopen("D:\\english2.txt","r"))==NULL)
    {
        printf("cannot open the file\n");
        exit(0);
    }
    ch=fgetc(fp);
    while (ch!=EOF)
    {
        putchar(ch);

        if ( ( ch>='A'&&ch<='Z' ) || ( ch>='a'&& ch<='z' ) )
        {
            Letters++;
            if (!WordFalg ) WordFalg = true;
            if (!ParagraphFalg) ParagraphFalg = true;//用来剔除前导换行 '\n' '\r'

        }
        else
        {
            if (WordFalg)
            {
                Word++;
            }

            if (ch==' '||ch=='\t')
            {
                Blank_space++;

            }
            if ( (ch=='\n'||ch=='\r') && ParagraphFalg )
            {

                if (Oldch !='\n'|| Oldch !='\r' )
                {
                    Paragraph++;
                }

            }
            WordFalg = false;

        }


        /*   n1++;
           if (ch==' '||ch=='\t')
           {
               n2++;
               a=0;
               if (a==0)
               {
                   a=1;
                   n3++;
               }
           }

           else if (ch=='\n'||ch=='\r')
               n4++;
           else if (ch<'A'||ch>'Z'&&ch<'a'||ch>'z')
           {
               a=0;
               if (a==0)
               {
                   a=1;
                   n3++;
               }
           }

        
*/
        Oldch = ch; //用来剔除中间 段落换行 '\n' '\r'
        ch=fgetc(fp);
    }
    printf("\n");
    printf("字符有%d个,空白的数量有%d个,单词数量有%d个,段落的数量%d个",Letters,Blank_space,Word,Paragraph);
    fclose(fp);

}
//按你的思路改一下,但是有些情况没处理 it's Welc-ome(行尾)等等


既然你帖了代码,我就回一下
2018-04-13 15:37







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

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