C语言程序设计,输入一个英文句子,统计单词的个数。

2024-11-06 03:42:00
推荐回答(3个)
回答1:

#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?(注意单词的前后有空格)

扩展资料:

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。

如下例所示:

#include<math.h>//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函。



回答2:

if(str[i]==' '||str[i]=='\0')

这里 你是考虑到 结尾\0也会加一

但实际上 

当str[i] == '\0'时 循环因为

for(i=0;str[i]!='\0';i++)

已经退出了

所以 这部分不会加一 导致出错


可以改成这样。

for(i=0;;i++)
{
if(str[i]==' '||str[i]=='\0')
count++;
if(str[i]=='\0') break;
}

先判断 累加 

再退出

回答3:

#include
int main()
{
char str[256];
int i,count=0;
printf("Please input an English sentence:\n");
gets(str);

for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
count++; //你这只是算有几个空格字符数
}
count+=1; //单词数=空格数+1
printf("The number of words are:%d\n",count);
return 0;  //main()函数是有返回值的
}