英语单词中名词的复数形式有一定规律,请完成如下的 C++函数功能:getNounPlural(char *noun, char *plural) 该函数把名词单词noun按下面的规则转换为对应的复数形式, 结果存到参数plural中。本题采用一种简化的转复数规则: 1)如果名词以”s”、”x”、”ch”或”sh”结尾,则在末尾加”es”,如”bus”->”buses”; 2)如果名词以”y”结尾,则去掉”y”,在末尾加”ies”,如”baby”->”babies”; 3)除此之外的其他情况都,都只加”s”,如”map”->”maps”。 说明:所给名词单词至少有两个字符。 提示:可能用到的字符串函数说明如下, strlen(char *str):返回字符串str的长度; strcpy(char *dest, char *src):把字符串src复制到dest; strcat(char *dest, char *src):把字符串src连接到dest后面; char *strstr(const char *s1, const char *s2):从s1中查找子串s2第一次出现的位置。
时间: 2024-04-09 08:27:35 浏览: 187
以下是C++函数的实现,根据所给规则名词转换为复数形式:
```cpp
void getNounPlural(char *noun, char *plural) {
int length = strlen(noun);
char lastTwoChars[3];
strcpy(lastTwoChars, &noun[length-2]);
if (strcmp(lastTwoChars, "ss") == 0 || strcmp(lastTwoChars, "sh") == 0 || strcmp(lastTwoChars, "ch") == 0 || noun[length-1] == 'x') {
strcpy(plural, noun);
strcat(plural, "es");
} else if (noun[length-1] == 'y') {
strcpy(plural, noun);
plural[length-1] = 'i';
strcat(plural, "es");
} else {
strcpy(plural, noun);
strcat(plural, "s");
}
}
```
使用示例:
```cpp
int main() {
char noun[20] = "bus";
char plural[20];
getNounPlural(noun, plural);
cout << plural << endl; // 输出 "buses"
return 0;
}
```
请注意,这只是一种简化的转复数规则,并不适用于所有情况。复数形式在英语中有很多特殊情况,这里只涵盖了一部分常见的情况。
阅读全文