用c语言编写输入一段英文,1 统计这段英文的单词数2 输入特定单词,统计本单词在上述英文中出现的次数 5

用c语言编写一个程序。输入一段英文,1统计这段英文的单词数,2输入特定单词,统计本单词在上述英文中出现的次数... 用c语言编写一个程序。输入一段英文,1 统计这段英文的单词数,2 输入特定单词,统计本单词在上述英文中出现的次数 展开
 我来答
修魔go
2014-06-19 · TA获得超过119个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:112万
展开全部

#include  <stdio.h>
#include <stdlib.h>
#include <string.h>

char *  getword(FILE  *fp);

int main()

{

   puts("输入一段英文:");

   FILE  *fp;

   if((fp=fopen("en.txt","w"))==NULL) {   puts("  can't write ! ");exit(1);}

   char  words[2000],word[50],search[50];

   gets(words);

   fputs(words,fp);

   fclose(fp);

   if((fp=fopen("en.txt","r"))==NULL) {   puts("  can't write ! ");exit(1);}

   int  num=0;

   while(1)

   { 

         strcpy(word,getword(fp));

         if(strcmp(word,"")==0)   break;

         else    num++;             

    }

    printf("此段英文的单词个数为:%d\n",num);

    printf("请输入你要查找的单词\n");

    gets(search);

    num=0;

    rewind(fp);

  while(1)

   { 

         strcpy(word,getword(fp));

         if(strcmp(word,"")==0)   break;

         else    if(strcmp(word,search)==0)    num++;            

    }

   printf("此段英文中该单词  %s 个数为:%d\n",search,num);

   fclose(fp);

   remove("en.txt");

  return 0;

}

 

char *  getword(FILE  *fp)

{

      

       char f,word[50];  

   do{
           int flag=0,i=0;

    while(flag==0)

         {

            f=fgetc(fp);

           if((f>='a'&&f<='z')||(f>='A'&&f<='Z'))  word[i++]  =f;

           else     flag=1; 

           }

       word[i]='\0';

       if(f==EOF)   break;;

    }while(word[0]=='\0');

      return   word;

}

      

更多追问追答
追问
你好,,可以改改吗?现在程序不区分大小写,比如文本里有And 和and两个单词,我查and出现的次数,应该是2,但现在的程序是1.。。然后,能不能把输入文本时改成以#号结尾。。谢谢
追答

#include  <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

char *  getword(FILE  *fp);

int main()

{

   puts("输入一段英文:'#'结束");

   FILE  *fp;

   if((fp=fopen("en.txt","w"))==NULL) {   puts("  can't write ! ");exit(1);}

   char  words[2000],word[50],search[50],save[50],f;
   int k=0;

    while(1)
   {
        if((f=getche())!='#') words[k++]=f;
         else{ words[k]='\0';break;}

   }

    while(1)

   { 

         strcpy(word,getword(fp));

         if(strcmp(word,"")==0)   break;

         else
   {  
         if(strcmp(word,search)==0)    num++;
      else
      {  
              
       if('A'<=search[0]&&search[0]<='Z')
       {search[0]+=32 ; if(strcmp(word,search)==0)    num++;}           

       if('a'<=search[0]&&search[0]<='z')
       {  search[0]-=32 ;if(strcmp(word,search)==0)    num++;}
            

qscorpius_fly
2014-06-19 · TA获得超过1861个赞
知道小有建树答主
回答量:811
采纳率:80%
帮助的人:320万
展开全部
刚看到这个问题,还需要吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式