C语言,不同单词个数统计。基础语句

C语言,不同单词个数统计。基础语句,第1张

供参考……
#include "stdioh"//
#include "stringh"//
void main(void){
char a[500][20];//={"one","little","two","little","three","little","boys"};
int i,j,k,total=0;
printf("Type a text('' end)\nStr=");
for(i=0;i<500;){
scanf("%s",a[i]);
if(a[i++][0]=='') break;
}
for(j=1;j<i;j++){
for(k=0;k<j;k++)
if(!strcmp(a[j],a[k])) break;
if(k==j) total++;
}
printf("%d\n",total);
}

存在两个问题:

1、单词与单词之间的空格不止一个,如there   is

2、单词与单词之间只有标点符号分隔,没有空格,如will,there

建议可使用 char strtok(char s[], const char delim); 函数

例如:

char a[] = "Where there is will, there is a way";
char p = strtok(a, " ,!");
int count = 0;
if (p != NULL)
{
   ++count;
   printf("%d:%s\n", count, p);
}
while ((p = strtok(NULL, " ,!")) != NULL)
{
   ++count;
   printf("%d:%s\n", count, p);
}

//包含<stringh> <stdioh> ,代码没有测试过,不一定要采纳我,我是来学习的。

没细看你的代码。据题意,觉得你写复杂了,而且统计了重复单词。下面提供一个作参考……
//#include "stdafxh"//vc++60加上这一行
#include "stdioh"
#include "stringh"
#include "stdlibh"
void main(void){
int i,j,word;
char a[1000],b[100][20];
printf("Enter a small article(no punctuation & '#' end)\n");
while(1){
gets(a);
if(a[0]=='#'){
printf("You finished test bye-bye!\n");
break;
}
fflush(stdin);
for(word=i=0;a[i];i++){
if(a[i]<='z' && a[i]>='a' || a[i]<='Z' && a[i]>='A'){
for(j=0;a[i]<='z' && a[i]>='a' || a[i]<='Z' && a[i]>='A';i++,j++)
b[word][j]=a[i];
b[word][j]='\0';
i--;
for(j=0;j<word;j++)
if(!strcmp(b[j],b[word])) break;
if(j<word) continue;
word++;
}
}
printf("%d\n\nDo it again\n",word);
}
}

给一个简单的例子:
#include<stdioh>#define N 1000void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个数 //state 用来记录程序当前是否处于一个单词之中,初值为0,表示不在单词中,值为1,表示正处于在一个单词中
FILE fp;
fp = fopen("intxt", "r");
int n =0;
while(!feof(fp)){ fgets(en[n++], N, fp); //输入英语短文 } for(i=0;i<n;i++){ state=0; //设每行的开始都是单词的开始 for(j=0;en[i][j]!='\0';j++){ if(en[i][j]==' '){ state=0; //判断 en[i][j] 是否为空格字符 } else if(state==0){ state=1; num++; } } } printf("The number of words is %d\n",num);}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存