c语言程序设计:1,统计英文文本中单词个数。2,统计某一特定单词出现的频度。

c语言程序设计:1,统计英文文本中单词个数。2,统计某一特定单词出现的频度。,第1张

1、统计英文文本中单词个数。

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

2、统计某一特定单词出现的频度。

for(i=0i!='/0'i++)

{

if(a[i]=='特定单词')

sum++

}

扩哪顷展资料:

if语句的一般形式如下:

if(表达式)语句1

[else语句2]

if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达李蔽陆式。所谓关系表达式就是两个数值进行比较的式子。

for循环小括号里第一个“”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环并凯控制变量赋初值。

参考资料来源:百度百科-for循环

参考资料来源:百度百科-if语句

#define N 20

#define M 100

#include<告掘高stdio.h>

#include<string.h>

int main()

{char m[20]

int k=0

int d[M]

char b[N],e[10000]

char a[M][N]

char c=0

int i

for(i=0i<Mi++)

d[i]=0

printf("请输袜尺入散茄文件名\n")

gets(m)

FILE *fp

int n=0,o=0

if(!(fp=fopen(m,"r+")))

{printf("文件未找到\n")}

else 

{

while(c!='#')/*判断是否到文件末尾*/

{for(i=0i<Ni++)/*读入一个单词*/

{

fscanf(fp,"%c",&c)

if(c==' '||c=='#') break

else b[i]=c

}

b[i]='\0'/*结尾符*/

if(k==0) {strcpy(a[k],b)d[k++]++}/*第一次,把b复制到a【0】*/

else {

for(i=0i<ki++)

{

if(!strcmp(b,a[i])) {d[i]++break}

}

if(i==k){strcpy(a[k],b)d[k]++k++}

}

}

for(i=0i<ki++)

printf("%s %d\n",a[i],d[i])

getchar()

return 0}

试编写代码如下:

#include<stdio.h>

#include<string.h>

#include<ctype.h>

struct word

{  

   char str[30]  //单词  

   int num       //单词出现的次数

}words[500]

int sum

void chuli(char s[])

{  

 镇或   int i,j  

    int flag=0 

    for(i=0i<=sumi++)  

    {   

       if(strcmpi(words[i].str,s)==0)   

       {             

          words[i].num++    

          flag=1      

       }     

    }  

    if(flag==0)  

    {   

       strcpy(words[sum].str,s)

       words[sum].num++   

       sum++  

    }       

}

void paixu1()

{    

   int i,j    

   struct word a  

   for(i=0i<sumi++)  

   {   

     for(j=i+1j<sumj++)      

        if(strcmp(words[i].str,words[j].str) > 0)   

    大早    {     

           a=words[j]          

           words[j]=words[i]

           words[i]=a 

 滚旅雀       }

  }

}

void paixu2()

{    

    int i,j    

    struct word a  

    for(i=0 i<sum ++i)

{

        for(j=sum-1 j>i --j)

{

        if(words[j].num>words[j-1].num)    

        {     

           a=words[j]          

           words[j]=words[j-1]

           words[j-1]=a 

        }

}

}

int main()

{  

   char s[30]  

   int imax,istart,iend,i,j,flag=0

   

   char str[] = "The president told the audit authorities to keep their thoughts and actions in line with the CPC Central Committee, resolutely safeguard the centralized and unified leadership of the committee and implement the requirements of the committee."

   

   char delims[] = " "  

   char *sword = NULL

   sum=0

   for(i=0i<500i++)

      words[i].num=0

   sword = strtok(str, delims)  

   while( sword != NULL ) {

        sscanf(sword,"%[a-zA-Z]",s)

        strlwr(s)

        chuli(s)

   

sword = strtok( NULL, delims )  

   }  

    printf("该文章共有:%d个单词\n",sum)

    paixu1()

    printf("\n按单词字典顺序升序排列:\n")

    for(i=0i<sumi++)

     printf("%s, %d\n",words[i].str,words[i].num)

      

    paixu2()

    printf("\n按出现次数降序排列:\n")

    for(i=0i<sumi++)

     printf("%s, %d\n",words[i].str,words[i].num)

    return 0

}

实际运行截图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12327242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存