• 回答数

    6

  • 浏览数

    321

赵家小燕儿
首页 > 英语培训 > 统计英文单词c语言

6个回答 默认排序
  • 默认排序
  • 按时间排序

今天属于1

已采纳

#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);}

统计英文单词c语言

165 评论(15)

了了大哥

#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。就这样重复,知道句子结束请采纳答案,支持我一下。

203 评论(13)

youjinjuan

#include#includeintmain(){chara[80];inti,num=0;gets(a);for(i=0;a[i]!='\0';i++)//这里应该检查到串尾,字符串结束符是'\0'{if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))//如果是字母,则一直找到非字母(分隔符:符号,空格等){do{i++;}while((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'));//记录一个单词num++;}}printf("%d\n",num);return0;}

318 评论(14)

37856552ah

#include #include int main(){ char text[1024] = ""; int i; int count = 0; printf("Please input text:"); gets(text); for(i = 0;i < strlen(text);i++) { if(text[i] <= 'z' && text[i] >= 'a' || text[i] <= 'Z' && text[i] >= 'A') { count++; } } printf("The English words number is %d\n",count); getch(); return 0;}

117 评论(8)

假装不在上海

//通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);#include #include#includemain(){char string[100];//根据拟从键盘输入的字串的长度需要适当调整,要避免输入的长度超出设定的范围。char c;int i, num=0,sum=0,word=0; //定义 word 用来指示一个单词是不是结束或新单词是否开始;printf("请从键盘输入一行需要查询的英文句子,进行单词数量统计:\n\n");gets(string);   //从键盘获得输入的字符串;//以下统计句子中的英文字符个数;for(i=0;(c=string[i])!='\0';i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='\0',即未到达结束符'\0'的话,执行i++;{if(('A'<=string[i]&&string[i]<='Z')||('a'<=string[i]&&string[i]<='z'))sum++;  //以上为条件句,如果字符在A~Z,a~z 范围之内的话,则执行sum++,累加英文字母个数;}//以下统计句子中的英文单词个数;for(i=0;(c=string[i])!='\0';i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='\0',即未到达结束符'\0'的话,执行i++;{                              //'\0'用作字符串的结束符。它的ASCII数值是0。if(c<'A'||c>'Z'&&c<'a'||c>'z')   //设定条件:如果字符 c 遇到A~Z和a~z范围之外其它符号字符的话,包括遇到空格' ';word=0;      //上面条件为真时,执行这里,置word=0,表示未遇到单词,或,一个单词已结束,同时也意味着要开始遇到下一个新单词;else if(word==0)  //当条件(word==0)为真,执行下面花括号里面的语句;当word==0时,表示未遇到字母,即未遇到单词,或上一个单词已结束;{word=1;   //那么置word=1,即,表示下一个新单词开始,num++;   //执行num++,累加英文单词的个数;}}printf("\n");printf("您输入的这句英文句子中共包含%d个英文字符,%d个英文单词。\n",sum,num);}

示例:输入语句:  Hello ! My friend , how are you ? (注意单词的前后有空格)

h  e  l  l  o  空格  w  o  r  l   d

0  1  2  3  4    5   6  7  8  9   10

结果如下:

107 评论(8)

小豆子就是我

根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。

不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。

一、算法设计:

核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。

1、flag初始为1;

2、遍历字符串。

3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。

4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。

5、 遍历结束后输出结果。

二、参考代码:

171 评论(8)

相关问答