输入一行英文句子,统计其中的单词个数(这里的单词是指有>=1个大小写字母连续出现所用C语言组成的子串,非大小写字母出现可认为一个单词结束)。句子长度不超过50。 例如“Hello+world!”单词个数为2。
时间: 2024-06-13 11:09:16 浏览: 26
以下是使用C语言实现统计英文句子中单词个数的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 50
int main() {
char sentence[MAX_LEN + 1];
fgets(sentence, MAX_LEN + 1, stdin); // 读入一行英文句子
int word_count = 0;
int flag = 0; // 用于标记是否正在统计单词
for (int i = 0; sentence[i] != '\0' && sentence[i] != '\n'; i++) {
if (isalpha(sentence[i])) { // 如果是字母
if (!flag) { // 如果之前没有在统计单词
word_count++; // 单词数加1
flag = 1; // 标记正在统计单词
}
} else { // 如果不是字母
flag = 0; // 标记停止统计单词
}
}
printf("单词个数为:%d\n", word_count);
return 0;
}
```
相关问题
C语言输入一行英文句子,统计其中的单词个数(这里的单词是指有>=1个大小写字母连续出现所组成的子串,非大小写字母出现可认为一个单词结束)。句子长度不超过50。
以下是C语言统计单词个数的代码,其中使用了gets()函数获取用户输入的句子,然后遍历句子中的每个字符,根据空格和字母的出现情况来统计单词个数:
```c
#include <stdio.h>
int countWords(char s[]) {
int count = 0; // 用于统计单词数
int inword = 0; // 标记是否在单词中
int i = 0; // 用于循环取出字符串中每个元素
while (s[i]) { // 字符数组最后是以结束符结尾,当是s[i]为结束符时结束循环
if (s[i] == ' ') { // 当为空格时标记为0
inword = 0;
} else if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) { // 当元素为字母时进入
if (inword == 0) { // 当第一次进入单词时单词数加1,然后修改标记为1,当连续字母出现时不重复计数
count++;
inword = 1;
}
} else { // 当元素不为空格也不为字母时,标记为0
inword = 0;
}
i++;
}
return count;
}
int main() {
char s[51]; // 句子长度不超过50
gets(s);
printf("%d\n", countWords(s));
return 0;
}
```
c语言输入一行英文句子,统计其中的单词个数(这里的单词是指有>=1个大小写字母连续出现所组成的子串,非大小写字母出现可认为一个单词结束)。句子长度不超过50。
以下是C语言统计一行英文句子中单词个数的代码:
```c
#include <stdio.h>
#include <ctype.h> // 包含ctype.h头文件,用于判断字符是否为字母
int main() {
char sentence[51]; // 声明字符数组,存储输入的句子
int word_count = 0; // 声明变量,用于统计单词数
int in_word = 0; // 声明变量,用于标记是否在单词中
printf("请输入一行英文句子:");
fgets(sentence, 51, stdin); // 使用fgets函数获取输入的句子
for (int i = 0; sentence[i] != '\0'; i++) { // 循环遍历句子中的每个字符
if (isalpha(sentence[i])) { // 如果当前字符是字母
if (!in_word) { // 如果不在单词中,即新的单词开始
word_count++; // 单词数加1
in_word = 1; // 标记为在单词中
}
} else { // 如果当前字符不是字母
in_word = 0; // 标记为不在单词中
}
}
printf("单词数为:%d\n", word_count); // 输出单词数
return 0;
}
```