完成程序,只在Program和End之间增加代码。英语单词的后缀构成有一定的规律,例如”teacher”和”programmer”有相同后缀”er”。请完成如下的C++函数功能:findCommonSuffix(char * word1, char * word2, char * suffix),该函数分析得到word1和word2两个单词的最长共同后缀,分析结果存到参数suffix中。例如,”globally”和”internally”的最长共同后缀是”ally”,”gloves”和”dove”的最长共同后缀是空串。提示:可能用到的字符串函数说明如下: strlen(const char * str):返回字符串str的长度; strcpy(char * dest, const char * src):把字符串src复制到dest; strcat(char * dest, const char * src):把字符串src连接到dest后面; char * strstr(const char * s1, const char * s2):从s1中查找子串s2第一次出现的位置。
时间: 2023-11-22 09:54:50 浏览: 147
以下是实现该函数的代码:
```cpp
void findCommonSuffix(char * word1, char * word2, char * suffix) {
int len1 = strlen(word1);
int len2 = strlen(word2);
int minLen = len1 < len2 ? len1 : len2; // 取较短的单词长度
int i = len1 - 1, j = len2 - 1;
while (i >= len1 - minLen && j >= len2 - minLen) {
if (word1[i] != word2[j]) { // 如果当前字符不相同,说明之前的字符都不是共同后缀
break;
}
i--;
j--;
}
if (i == len1 - 1 || j == len2 - 1) { // 如果两个单词没有共同后缀,则返回空串
suffix[0] = '\0';
return;
}
strcpy(suffix, &word1[i + 1]); // 复制共同后缀到suffix中
}
```
该函数首先取两个单词中较短的一个的长度,从单词末尾开始逐个比较字符,直到出现不相同的字符为止。此时,从当前位置到单词末尾的字符就是最长的共同后缀。如果最后两个单词没有共同后缀,则返回空串。可以通过以下方式调用该函数:
```cpp
char suffix[100]; // 定义一个足够长的字符串用于存储共同后缀
findCommonSuffix("globally", "internally", suffix);
cout << suffix << endl; // 输出 "ally"
findCommonSuffix("gloves", "dove", suffix);
cout << suffix << endl; // 输出空串
```
阅读全文