c语言统计单词的个数
① 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<s;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)
}
/*******************************************************************************************************/
按你的意思我改了下调用函数里的
intfun(char*str,char*substr)
{
inti,j,n=0,s=strlen(str),m=strlen(substr),pan=1;
printf("%d ",m);
for(i=0;i<s;i++)
{pan=1;
for(j=0;j<m;j++)
if((str[i+j]!=substr[j]))//这是进行比较,不是跳出
{pan=0;
break;}
if(pan)
n++;
}
returnn;
}
② c语言统计单词个数
||int decede(char str[])
{
int i,word=0,num=0,first = 1;
for(i=0; str[i]!='\0'; i++)
{
//如果是字母,则一直找到非字母(分隔符:符号,空格等)
if((str[i]>='a' && str[i]<='z') || (astr>='A' && str[i]<='Z'))
{
do{
i++;
} while((str[i]>='a' && str[i]<='z')||(str[i]>='A'&&str[i]<='Z'));
//记录一个单词
num++;
}
}
return num;
}
③ c语言中统计单词个数的问题
相当于空格,可以看一下这个程序(用于统计单词个数)
#include<stdio.h>
void main()
{
char string[100];
int i,num=0,word=0;
char c;
printf("请输入一个英文句子:");
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
printf(" 该英文句子由%d个单词组成。 .\n",num);
}
有时为了给变量附一个无意义的初值通常用这个。呵呵
④ C语言统计单词个数,单词个数算法
当字符从' '变为字母时或其他字符时word从0变为1,而word从0变为1时就是一个单词,所以count+1;当字符由非' '变为' '时word从1变为0,准备判断下一个单词的出现,即等待字符由' '变为其他字符的出现。这样最后count就是记录了单词的个数,其实就是记录了字符由' '变为其他字符的次数!
⑤ 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;//是空格就为0 else if(word==0)//不是空格就判断之前有没有空格 { word=1;//复位内用来判断空格是否存在的容开关 num++;//如果之前有空格,单词数加1 } printf("本行中共有%d个单词.\n",num); } 其原理很简单: 对每个字符进行判断,如果是空格就把变量word标记为0,如果不是空格就判断word是不是0(即判断之前有没有空格),如果存在空格单词量加1,然后复位word变量为0。就这样重复,知道句子结束
⑥ C语言统计英语单词的个数
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[80];
int i,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);
return 0;
}
⑦ 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;//是空格就为0
else if(word==0)//不是空格就判断之前有没有空格
{
word=1;//复位用来判断空格是否存在的开关
num++;//如果之前有空格,单词数加1
}
printf("本行中共有%d个单词.\n",num);
}
其原理很简单:
对每个字符进行判断,如果是空格就把变量word标记为0,如果不是空格就判断word是不是0(即判断之前有没有空格),如果存在空格单词量加1,然后复位word变量为0。就这样重复,知道句子结束
⑧ C语言 统计文件中各个单词的个数
你的程序只需要修改两处就行了:(1.)不能用指针数组直接存放字符串,即,要把程序开头的char *s2[30]改为char s2[30][30],用二维数组来存放多个字符串;(2.)你的想法是,如果单词不是重复的单词,就将它存入s2,但这时不能用“=”,应该用strcpy()函数,即,原程序中的s2[k]=s3应改为strcpy(s2[k],s3),改过后的代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char str[100],ch;
char s2[30][30]; /*s2存放单词(不重复),修改处*/
char s3[30],*p=s3;
int i,j,k=0,flag1,flag2,count1=0,white=1,a[30]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
FILE *file;
file=fopen("string.txt","w+");
printf("Input a string of English:\n");
gets(str);
fputs(str,file);
rewind(file);
while((ch=fgetc(file))!='0') /*统计文件中有多少个单词*/
{
if((ch==' ')||(ch=='\t')||(ch=='\n'))
white++;
else
{
if(white)
{
white=0;
count1++;
}
}
}
rewind(file);
for(i=0;i<count1;i++)
{
flag1=0; /*是否有重复单词*/
flag2=0; /*是否遇到空白字符*/
p=s3;
while(ch=fgetc(file))
{
if((ch!=' ')&&(ch!='\t')&&(ch!='0'))
{
if((ch>64)&&(ch<91)) /*大写字母变小写*/
{
ch=ch+32;
}
*p++=ch;
}
else
{
flag2=1; /*遇到空白字符*/
*p='\0';
for(j=0;j<k;j++) /*k为s2中的单词个数*/
{
if(strcmp(s3,s2[j])==0)
{
flag1=1; /*有重复单词*/
a[j]++;
break;
}
}
if(flag1==0) /*如果单词不重复*/
{
strcpy(s2[k],s3); /*修改处*/
a[k]++;
k++;
}
}
if(flag2==1) /*如果遇到空白字符,则开始查询下一单词,跳出while循环*/
{
break;
}
}
while(((ch=fgetc(file))==' ')||(ch=='\t')); /*吞掉多余的空白字符*/
fseek(file,-1,1); /*后退一格,继续读*/
}
for(i=0;i<k;i++)
{
printf("%s\t",s2[i]);
}
printf("\n");
for(i=0;i<k;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
fclose(file);
return 0;
}
明白了吗?
⑨ c语言怎么统计输入的汉字的个数和英文单词的个数
一个汉字由两个连续负值的ASCII码组成。
当ASCII值为负j++,最后汉字个数为j/2
单词个数基本上就是数空格
我和题主一样懒
就这样