c语言单词统计?为了统计一行字符中的单词个数,我们可以编写一个简单的C语言程序。首先,我们需要定义一个足够大的字符数组来存储输入的字符串。接下来,我们要求用户输入一行字符,并在输入结束时按回车键。程序将统计并输出单词的数量。下面是一个示例程序,那么,c语言单词统计?一起来了解一下吧。
#include "stdio.h"
main()
{
char s[81],c;
int i,num=0,word=0;
printf("请输入一行英文:\n");
gets(s);
for(i=0;(c=s[i])!='\0';i++) /*依次读取字符,直到遇到空字符结束*/
if(c==' ') word=0;/* 若读取的字符为空则给WORD赋值0*/
else if(word==0)/* 当空格后读取字符不为空时给word赋值1并且NUM加一*/
{
word=1;
num++;
}
printf("%d\n",num);
}

以前写过
#include
#include
int main()
{
int n;
char **words = new char*[1000];
for(n = 0; n < 1000; n++)
words[n] = new char[30];
int num = 0;
char temp[1000];
char s[1000];
gets(s);
char *p = s;
int j = 0,m = 0;
while(s[0] != '#')
{
while(1)
{
for(int i = 0;*p != ' ' && *p != '\0';i++,p++)
{
temp[i] = *p;
}
temp[i] = '\0';
for(m = 0; m < j; m++)
{
if(!strcmp(words[m],temp))
{
break;
}
}
if(m == j)
{
strcpy(words[j],temp);
num++;
j++;
}
for(int k = 0; k < 1000; k++)
temp[k] = '\0';
if(*p == '\0')
break;
p++;
}
printf("%d\n", num);
for(n = 0; n < 1000; n++)
{
s[n] = '\0';
temp[n] = '\0';
}
gets(s);
p = s;
j = 0,m = 0;
num = 0;
}
return 0;
}
根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。
不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。
一、算法设计:
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。
1、flag初始为1;
2、遍历字符串。
3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。
4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。
5、 遍历结束后输出结果。
二、参考代码:
#include
intmain()
{
chars[200];
inti,n=0,flag=1;
gets(s);//输入字符串。
for(i=0;s[i];i++)//遍历
{
if(flag==1)
{
if(s[i]!='')//单词起始
{
n++;
flag=0;
}
}
elseif(s[i]=='')//上一个单词结束。
flag=1;
}
printf("%d\n",n);//输出结果。
return0;
}
#include
#include
int
main()
{
char
a[80];
int
i,num=0;
gets(a);
for(i=0;i<80;i++)
{
if(
(a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
continue;
if
(a[i]='
')
{
i++;
ifif(
(a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))//
当再次遇到字母时就计数
num++;
}
num++;
//这是因为到了最后一个单词时
无法执行if(
(a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
num++;中的num++
所以最后要加上。
}
printf("%d",num);
}
根据你的程序改的

#include "stdio.h"
main()
{
char s[81],c;
int i,num=0,word=0;
printf("请输入一行英文:\n");
gets(s);
for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未
if(c==' ') word=0;//是空格就为0
else if(word==0)//不是空格就判断之前有没有空格
{
word=1;//复位用来判断空格是否存在的开关
num++;//如果之前有空格,单词数加1
}
printf("本行中共有%d个单词.\n",num);
}
其原理很简单:
对每个字符进行判断,如果是空格就把变量word标记为0,如果不是空格就判断word是不是0(即判断之前有没有空格),如果存在空格单词量加1,然后复位word变量为0。就这样重复,知道句子结束
请采纳答案,支持我一下。
以上就是c语言单词统计的全部内容,C语言:统计输入的一行英文句子中的字母及单词个数,带注解!//通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);#include