给出多个字符串(数目未知),每行一个。 其中有可能会有重复的字符串,而我们认为在这些字符串中,较靠后出现的都是靠前出现的字符串的“影子”。用C语言写出
时间: 2024-02-15 09:04:19 浏览: 23
好的,以下是一个简单的 C 代码示例,用于找到重复字符串中的“影子”字符串:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 100 // 最大字符串长度
#define MAX_STR_NUM 100 // 最大字符串数目
int main() {
char strs[MAX_STR_NUM][MAX_STR_LEN]; // 存放字符串的数组
int num_strs = 0; // 字符串数目
int i, j;
// 读取输入的字符串,以空行结束
while (fgets(strs[num_strs], MAX_STR_LEN, stdin) != NULL && strs[num_strs][0] != '\n') {
num_strs++;
}
// 查找影子字符串
for (i = 0; i < num_strs; i++) {
if (strs[i][0] == '\0') continue; // 跳过已经找到影子的字符串
for (j = i + 1; j < num_strs; j++) {
if (strcmp(strs[i], strs[j]) == 0) {
printf("%s is a shadow of %s\n", strs[j], strs[i]);
strs[j][0] = '\0'; // 标记为已找到影子
}
}
}
return 0;
}
```
该程序首先读取输入的字符串,直到遇到空行为止。然后,它遍历所有的字符串,查找是否有重复的字符串,并打印出影子字符串。找到影子字符串后,将其标记为已找到影子。