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("请从键盘输⼊⼀⾏需要查询的英⽂句⼦,进⾏单词数量统计:\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 ? (注意单词的前后有空格)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论