c语言题目描述 输入两个字符行,从中找出在两个字符行中都出现的最长的英文单词。约定英文单词全由英文字母组成,其它字符被视作单词之间的分隔符。 输入 有多组数据,每组输入两个字符行。 输出 输出最长公共英文单词。若不存在,则输出”No common word!”。 样例输入 Hi, Steve Jobs. How are you? Fine. There are lots of original ideas about new iphone in my mind. 样例输出 are 提示 输入字符串用函数gets()。
时间: 2023-06-11 11:10:28 浏览: 332
C语言程序设计-分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80);.c
5星 · 资源好评率100%
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 1000
void getCommonWord(char str1[], char str2[], char ans[]);
int main() {
char str1[MAX_LEN], str2[MAX_LEN], ans[MAX_LEN];
while (gets(str1) != NULL && gets(str2) != NULL) {
getCommonWord(str1, str2, ans);
if (strlen(ans) > 0) {
printf("%s\n", ans);
} else {
printf("No common word!\n");
}
}
return 0;
}
void getCommonWord(char str1[], char str2[], char ans[]) {
int i, j, k, len1, len2, max_len = 0;
char word[MAX_LEN], max_word[MAX_LEN];
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i < len1; i++) {
if (!isalpha(str1[i])) {
word[0] = '\0';
} else {
k = 0;
while (isalpha(str1[i])) {
word[k++] = str1[i++];
}
word[k] = '\0';
i--;
}
for (j = 0; j < len2; j++) {
if (!isalpha(str2[j])) {
max_word[0] = '\0';
} else {
k = 0;
while (isalpha(str2[j])) {
max_word[k++] = str2[j++];
}
max_word[k] = '\0';
j--;
}
if (strcmp(word, max_word) == 0 && strlen(word) > max_len) {
strcpy(ans, word);
max_len = strlen(word);
}
}
}
}
```
代码思路:
1. 定义 `getCommonWord` 函数,用于获取两个字符串中的最长公共单词。
2. 定义 `main` 函数,用于循环读入多组数据,每组数据通过调用 `getCommonWord` 函数获取最长公共单词并输出。
3. 在 `getCommonWord` 函数中,使用两层循环分别枚举两个字符串中的单词,通过比较两个单词是否相同,来获取最长公共单词。
注意事项:
1. 由于输入的字符串可能包含空格等非英文字母的字符,因此需要在获取单词时忽略这些字符。
2. 在比较两个单词是否相同时,需要使用 `strcmp` 函数来判断。
阅读全文