| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 236 人关注过本帖
标题:各位好心人,能帮帮我尽快解决这道C语言编程问题吗?
只看楼主 加入收藏
keoias5463
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-12-6
收藏
 问题点数:0 回复次数:1 
各位好心人,能帮帮我尽快解决这道C语言编程问题吗?
谢谢啦,小弟急着要答案,不过以自己的水平真的无从入手。。。。。


在当前目录中存在文件名为"case1.in"(其中case后为数字1,不是字母l,写错提交后会判错)的文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现要求读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典顺序输出,不足5个单词时,按序输出全部单词)。程序中注意如下细节:
(1)空格、标点符号与回车符起到分隔单词的作用。
(2)文章一行的末尾可能有连字符,出现连字符时,该行最末的字符串与下行最先出现的字符串构一个单词;
(3)名词缩写算一个单词;
(4)数字不算单词;
(5)单词不区分大小写;
(6)输出时单词全使用小写;
以下是规定的格式:
#include "stdio.h"
#include "math.h"
#include "string.h"
#include "stdlib.h"
_______________________
main()
{
         _______________________
}

——————————————————————————————————-----
Input
文件case1.in中一篇英文文章,包含多段文字,单词数不超过10000,每个单词不超过20个字符
Output
按题意输出答案
Sample Input
(如case1.in内容如下)
I am a student. My school is SCAU. It is a beau-
tiful university. I like it.
Sample Output
a 2
i 2
is 2
it 2
am 1
 

 


[ 本帖最后由 keoias5463 于 2010-12-6 20:54 编辑 ]
搜索更多相关主题的帖子: C语言 
2010-12-06 20:46
keoias5463
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-12-6
收藏
得分:0 
我看到有这样的回答:
但是不知道错在哪里?请各位高手帮我看一看这道题啊
#include<stdio.h>
#include<string.h>
struct word
    {
        char c[30];
        int n;
    }w[10000];
   
main()
{
    FILE *fp;
    char b[30],ch;
    int i=0,m=1,j=0,k=0,t=0,flag=0;
    fp=fopen("case1.in","r");
    while((ch=fgetc(fp))!=EOF)
    {   
        if('A'<=ch&&ch<='Z') ch=ch+32;
        
        if('a'<=ch && ch<='z')
        {b[i]=ch;i++;flag=1;}
        else
        {
           if(ch=='-'&&(ch=fgetc(fp))=='\n')
           {
                   flag=0;
           }
         
          else
          {
             if(flag==1)
              {   b[i]='\0';i=0;flag=0;m=0;
                  for(j=0;j<k;j++)
                  {
                      if(strcmp(b,w[j].c)==0)
                      {m=1;break;}
                  }
                      if(m) w[j].n++;
                      else
                      {w[k].n=1;strcpy(w[k].c,b);k++;}
              }
           }
        
          if('A'<=ch && ch<='Z') ch+=32;
          if('a'<=ch && ch<='z')
          {b[i]=ch;i++;flag=1;}
        }
    }
//    printf("%d\n",k);
    for(i=0;i<k;i++) { printf("%s %d\n",w[i].c,w[i].n);}
    printf("\n");
    for(i=0;i<k&&i<5;i++)
    {
        t=0;
        while(w[t].n==0) t++;
        for(j=1;j<k;j++)
        {
            if(w[j].n>w[t].n) t=j;
            else
                if(w[j].n==w[t].n)
                {
                    if(strcmp(w[j].c,w[t].c)<0)
                        t=j;
                }
        }
        printf("%s %d\n",w[t].c,w[t].n);
        w[t].n=0;
    }
    return 0;
}

2010-12-06 21:41
快速回复:各位好心人,能帮帮我尽快解决这道C语言编程问题吗?
数据加载中...
 
   



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

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