C语言统计英语单词的个数

C语言统计英语单词的个数
输入一句子,统计英语单词的个数,ps:有可能单词与单词之间有多个空格

以下是我经过别人建议写的,还是不知哪里出错
#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-1]<='z'&&a[i-1]>='a')||(a[i-1]<='Z'&&a[i-1]>='A'))||a[i-1]=='\0'))
num++;

}

printf("%d",num);

}

C语言:统计输入的一行英文句子中的字母及单词个数,带注解!

//通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);
#include 
#include
#include
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 ? (注意单词的前后有空格)


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

#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

#include

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;
}
← 上一篇: 下一篇: →