c语言统计单词个数,c语言求输入的单词数

  • 英语单词
  • 2023-12-24

c语言统计单词个数?1、统计英文文本中单词个数。if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) sum++;2、统计某一特定单词出现的频度。那么,c语言统计单词个数?一起来了解一下吧。

c语言单词表大全

例1. 统计一个字符串中单词的个数(假定单词之间以空格分隔)。

由于在第一个单词之前有可能没有空格符,因此若仍然采用查找一个单词的开头的方式,实现起来将会不甚方便。不过,可以变换一下思路,改为查找一个单词的末尾。

可以发现,在除了最后一个单词之外的每个单词之后至少有一个空格符,而在最后一个单词之后可能跟一个空格符,也可能直接跟一个空字符'\0',因此可以将判断规则修改为“当相邻的两个字符中,前一个是非空格字符,而后一个是空格符或空字符'\0'时,说明找到一个新的单词”。

源程序:

#include

#include

int main(void)

{char a[200];

int i,n,c=0;

printf("请输入一行以空格分隔的单词:\n");

gets(a);

n=strlen(a);

for(i=0;i<=n-1;i++)

{if(a[i]!=' '&&(a[i+1]==' '||a[i+1]=='\0'))

c++;

/*若第i个字符不是空格符,第i+1个字符是空格符或'\0',则表示找到一个单词的末尾*/

}

printf("单词个数=%d\n",c);

return 0;

}

例2. 统计一个字符串中单词的个数(假定单词之间以空格或标点符号分隔)。

输入一段英文统计单词个数

#include

#include

#include"string.h"

typedefstruct{

charword[20];

intcount;

}WORD;

intfind(char*source,chartarget)

{

inti,j;

ints_len=strlen(source);

for(i=0;i

{

if(source[i]==target)

{

returni;

}

}

return-1;

}

char*right(char*source,intn)

{

char*buf;

intlen=strlen(source);

buf=(char*)malloc(sizeof(char)*(len-n)+1);

inti,j=0;

for(i=n;i

{

buf[j++]=source[i];

}

buf[j]='\0';

returnbuf;

}

voiddel_double_space(char*s)

{

inti,j=0,len=strlen(s);

for(i=0;i

{

s[j++]=s[i++];

if(s[i]==''&&s[i-1]=='')

{

i++;

}

}

s[j]='\0';

len=strlen(s);

for(i=0;i

{

if(s[i]>='A'&&s[i]<='Z')

{

s[i]=s[i]+32;

}

}

}

char*left(char*source,intn)

{

char*buf;

buf=(char*)malloc(sizeof(char)*n+1);

intlen,i,j=0;

len=strlen(source);

for(i=0;i

{

if(source[i]!='\0')

{

buf[j++]=source[i];

}

else

{

break;

}

}

buf[j]='\0';

returnbuf;

}

voidsort(WORD*w)

{

WORDt;

intcount=0;

inti,j;

for(i=0;i<100;i++)

{

if(w[i].count>0)

{

count++;

}

}

for(i=0;i

{

for(j=0;j

{

if(w[j].count

{

t=w[j];

w[j]=w[j+1];

w[j+1]=t;

}

elseif(w[j].count==w[j+1].count)

{

if(strcmp(w[j].word,w[j+1].word)>0)

{

t=w[j];

w[j]=w[j+1];

w[j+1]=t;

}

}

}

}

}

intmain(intargc,char*argv[])

{

charall[1000]={'\0'};

while(1)

{

strcpy(all,"\0");

printf("\n\n请输入一段英文文字:");

fflush(stdin);

scanf("%[^\n]",all);

WORDword[100];

inti,duan=0,len,count=0;

len=strlen(all);

for(i=0;i<100;i++)

{

strcpy(word[i].word,"\0");

word[i].count=0;

}

for(i=0;i

{

if(all[i]==','||all[i]=='.'||all[i]=='!'||all[i]=='?'||all[i]==';')

{

duan++;

if(i==len-1)

{

all[i]='\0';

}

else

{

all[i]='';

}

}

elseif(i==len-1)

{

duan++;

}

}

del_double_space(all);

while(1)

{

char*buf,*newbuf;

intn;

buf=(char*)malloc(sizeof(char)*20);

newbuf=(char*)malloc(sizeof(char)*1000);

n=find(all,'');

if(n!=-1)

{

buf=left(all,n);

}

else

{

strcpy(buf,all);

}

// printf("\n%s",buf);

intisfind=0;

for(i=0;i

{

if(strcmp(word[i].word,buf)==0)

{

word[i].count=word[i].count+1;

isfind=1;

break;

}

}

if(isfind==0)

{

strcpy(word[count].word,buf);

word[count].count=1;

count++;

}

if(find(all,'')==-1)

{

free(buf);

free(newbuf);

break;

}

newbuf=right(all,n+1);

strcpy(all,newbuf);

free(buf);

free(newbuf);

// printf("\n%s",all);

// getch();

}

sort(word);

printf("\n共有%d句话",duan);

printf("\n共有%d个单词",count);

printf("\n单词词频");

for(i=0;i

{

printf("\n%-10s%d",word[i].word,word[i].count);

}

printf("\n\n是否继续?[y/n]");

charn;

fflush(stdin);

scanf("%c",&n);

if(n=='y'||n=='Y')

{

continue;

}

elseif(n=='n'||n=='N')

{

break;

}

}

return0;

}

c语言统计每个字母个数

#include

#include

void despace(char *s,int *i)

{

while(s[*i]==' ') (*i)++;

}

int main()

{

int count=0,i=0;

char s[50];

char c;

gets(s);

while((c=s[i])!='\0')

{

if(c==' ')

{

despace(s,&i);

count++;

}

i++;

}

count++;

printf("\ncount:%d",count);

getch();

return 1;

}

c语言输出单词个数

给你个类似的。你小改下,就应该可以了。希望对你有帮助

/*编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,

子字符串为:as,则应输出6。

[程序分析]

由于小串中只有2个字符所以可用str[i]==sbustr[0]&&str[i+1]==substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。

因而只要让长串当前位置逐一向后移即可(用for()循环来完成)

*/

//[源程序]

#include"stdio.h"

#include"string.h"

#include"conio.h"

intfun(char*str,char*substr)

{inti,n=0,s=strlen(str);

for(i=0;i

if((str[i]==substr[0])&&(str[i+1]==substr[1]))

n++;

returnn;

}

main()

{

charstr[81],substr[3];

intn;

printf("输入的字符串:");

gets(str);

printf("子字符串:");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%d\n",n)

}

/*******************************************************************************************************/

按你的意思我改了下调用函数里的

intfun(char*str,char*substr)

{

inti,j,n=0,s=strlen(str),m=strlen(substr),pan=1;

printf("%d\n",m);

for(i=0;i

{pan=1;

for(j=0;j

if((str[i+j]!=substr[j]))//这是进行比较,不是跳出

{pan=0;

break;}

if(pan)

n++;

}

returnn;

}

c语言统计字符串中单词个数

Q:输入一串字符串,输出其中有多少个单词。

Eg:Good Wishes

A:

#include #include #define SIZE 20int main()

{char str[SIZE]={'\0'};int count=0;

printf("plz input the string\n");

gets(str);

puts(str);int length = strlen(str);for (int i=0;i

{

if(str[i]!=' ')

{count++;while(str[i]!=' '&&str[i]!='\0')

{

i++;

}

}

}

printf("%d\n",count);return 0;

}

‘\0’和‘0’的区别:

在c语言中,它们都是字符,都用对应的ASCII码来存储。例如第一个ASCII码,0,对应字符为(Null),就是 ‘\0’,即空字符。我们在c语言中判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束。字符‘0’和数字0的区别:前者是字符常量,后者是整形常量,但是字符常量可以像整数一样在程序中参与相关运算。

以上就是c语言统计单词个数的全部内容,//以下统计句子中的英文单词个数;for(i=0;(c=string)!='\0';i++)//for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='\0',即未到达结束符'\0'的话,执行i++;{//'\0'用作字符串的结束符。

猜你喜欢