1. c语言:从键盘输入英文文本,统计总共有多少个单词。要求如下,咋编
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
char s[25];
int w;
printf("胡乱Please enter a text... ");
w=0;
while(scanf("%24s",s)==1 && *s!='#' && s[1]!='#'派做枯)
if(*s>='a' && *s<='z' || *s>='A' &&尘洞 *s<='Z')
w++;
printf("A total of %d word(s) ",w);
return 0;
}
2. C语言统计英语单词的个数
C语言:统计输入的一行英文句子中的字母及单词个数,带注解!
//通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
char string[100];//根据拟从键盘输入的字串的长度需要适当调整,要避免输入的长度超出设定的范围。
char c;
int i, num=0,sum=0,word=0; //定义 word 用来指示一个单词是不是结束穗郑芹或新单词是否开始;
printf("请从键盘输入一行需要查询的英文句子,进行单词数量统计:
");
gets(string); //从键盘获得输入的字符串;
//以下统计句子中的英文字符个数;
for(i=0;(c=string[i])!='';i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='',即未到达结束符''的话,执行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])!='';i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='',即未到达结束符''的话,执行i++;
{ //''用作字符串的结束符。它的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("
");
printf("您输入的这句英文句子中共包含%d个英文字符,%d个英文单词。
",sum,num);
}
示例:输入语句: Hello ! My friend , how are you ? (注意单词的前后有空格)
3. C语言 单词统计
#include <stdio.h>
#include <string.h>
void main()
{
char ch='\0';
char word[1000][20];
int count_word[1000]={0};
int i=0,j=0,k=0,flag=0,total=0,l=0,max,maxno;
printf("请首物输入一段英文文章,以#标志结束:\n");
while((ch=getchar())!='#')
{
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z'))
{
if(ch>='A'&& ch<='Z')ch+=32;
flag=0;
word[i][j]=ch;
j++;
}
else
{
flag = 1; //注意修坦芹物改标志。。。。。。。。
}
if(flag==1)
{
total++;
word[i][j]='\0';
count_word[i]++;
for(k=0;k<i;k++)
{
if(strcmp(word[i],word[k])==0)
{
count_word[k]++;
count_word[i]=0;
i--;
break;
}
}
i++;
j=0;
}
}
printf("所要求的单词为:\n");
printf("-------------------------"让液);
for(l=0;l<5;l++)
{
max=0;
maxno=0;
for(k=0;k<i;k++)
if(count_word[k]>max)
{
maxno=k;
max=count_word[k];
}
if(max==0)break;
printf("\n%-10s",word[maxno]);
count_word[maxno]=0;
}
getchar();
}
4. c语言统计单词个数
根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。
不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。
一、算法设计:
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。
1、flag初始为1;
2、遍历字符串。
3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。
4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。
5、 遍历结束后输出结果。
二、参考代码:
#include<stdio.h>
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);//输出结果。
return0;
}
5. C语言统计单词个数
Q:输入一串字符串,输出其中有多少个单词。
Eg:Good Wishes
A:
#include <stdio.h>#include <string.h>#define SIZE 20int main()
{ char str[SIZE]={''}; int count=0;
printf("plz input the string
");
gets(str);
puts(str); int length = strlen(str); for (int i=0;i<length;i++)
{
if(str[i]!=' ')
{ count++; while(str[i]!=' '&&str[i]!='')
{
i++;
}
}
}
printf("%d
",count); return 0;
}
‘’和‘0’的区别:
在c语言中,它们都是字符,都用对应的ASCII码来存储。例如第一个ASCII码,0,对应字符为(Null),就是 ‘’,即空字符。我们在c语言中判断一个字符串是否结束的标志就是看是否遇到‘’,如果遇到‘’,则表示字符串结束。字符‘0’和数字0的区别:前者是字符常量,后者是整形常量,但是字符常量可以像整数一样在程序中参与相关运算。
(5)统计输入的单词c语言扩展阅读
字符串所有字符,如果当前字符不为空,单词数+1,再嵌套一个while循环,判断当前单词是否结束。
#include <stdio.h>
#include <string.h>
int count_words(char* s)
{
int len=strlen(s);
int count,i;
for(i=0;i<len;i++)
{
if(*(s+i)!=' '){ // 如果当前代码不为空
count++; //单词数+1
while(*(s+i)!=' '&& i<len) //判断当前单词是否结束
i++;
}
}
return count;
}
int main()
{
char* a="i love you";
printf("%d",count_words(a));
}
6. c语言中输入单词 统计其在文本出现的次数
用string读入,之后用字典树trie的数据结构,trie的每个节点数据类型的struct中加一个计数的变量即可统计,之后再按顺序输出即可,时间复杂度理想状态下是o(n),n是字母个数。=
=实在没时间写了,你要是不想自己写,找个标准的trie一改就好了。。