编写函数,统计一个句子中英文单词的个数,要求使用指针。主函数中输入英文句子,调用该函数,输出单词个数。
时间: 2024-12-09 07:16:54 浏览: 22
Matlab编写与调用函数
在C++中,你可以编写一个名为`countWords`的函数,它接受一个指向字符串的指针作为参数,并通过遍历这个字符串来计算其中英文单词的数量。这里的关键在于如何定义英文单词,通常我们会忽略标点符号并只考虑由字母组成的词。下面是一个简单的示例:
```cpp
#include <iostream>
#include <cctype> // 包含处理字符类型的头文件
// 定义一个辅助函数,检查字符是否是字母
bool isAlpha(char c) {
return std::isalpha(c); // 使用C库函数检查字符是否为字母
}
// 主函数,获取用户输入的句子并调用countWords
int main() {
char* sentence = new char[100]; // 创建一个动态数组存储用户输入
std::cout << "请输入一个英文句子: ";
fgets(sentence, sizeof(sentence), stdin); // 从标准输入读取句子
// 删除换行符
sentence[strlen(sentence) - 1] = '\0';
int wordCount = countWords(sentence); // 调用计数函数
std::cout << "英文单词个数: " << wordCount << std::endl;
delete[] sentence; // 释放内存
return 0;
}
// 函数实现,统计单词个数
int countWords(const char* sentence) {
int count = 0;
const char* ptr = sentence;
while (*ptr) { // 遍历字符串
if (isAlpha(*ptr)) { // 如果遇到字母
while (isAlpha(*++ptr)); // 找到下一个非字母字符结束
++count; // 增加单词计数
} else if (*ptr == ' ') { // 或者遇到空格,也认为单词结束
++ptr;
}
}
// 如果最后一个单词是以非字母结尾的,需要额外处理
if (isAlpha(ptr[-1])) {
++count;
}
return count;
}
```
阅读全文