用c语言写出以下代码:输入格式: 输入首先给出飞走的燕子的信息:在第一行给出不超过 10 5 的正整数 N,随后 N 行,每行给出一只飞走的燕子的编号。题目保证编号不重复。 随后是飞回的燕子的信息,首先是一个不超过 10 5 的非负整数 M,随后 M 行,每行给出一只飞回的燕子的编号。题目保证编号不重复。 编号为长度不超过 8 的、由英文字母和数字组成的字符串。 输出格式: 首先输出没有回来的燕子的信息,格式为: Missing: X ID[1] ... ID[X] 其中 X 为没有回来的燕子的数量,ID[i](i = 1, ..., X)为按字典序递增输出的这些燕子的编号。 然后输出新增燕子的信息,格式同上,只是把 Missing 换成 New。 如果 X 为零,则对应情况下输出 All Back(都回来了)或 All Known(都认识)。
时间: 2024-04-08 19:28:31 浏览: 59
根据您的需求,我为您编写了以下的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 105
void sortArray(char arr[][9], int n) {
int i, j;
char temp[9];
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (strcmp(arr[j], arr[j+1]) > 0) {
strcpy(temp, arr[j]);
strcpy(arr[j], arr[j+1]);
strcpy(arr[j+1], temp);
}
}
}
}
void printArray(char arr[][9], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%s\n", arr[i]);
}
}
int main() {
int N, M;
char leftSwallows[MAX_SIZE][9];
char returnedSwallows[MAX_SIZE][9];
char missingSwallows[MAX_SIZE][9];
char newSwallows[MAX_SIZE][9];
int missingCount = 0, newCount = 0;
int i, j, found;
scanf("%d", &N);
for (i = 0; i < N; i++) {
scanf("%s", leftSwallows[i]);
}
scanf("%d", &M);
for (i = 0; i < M; i++) {
scanf("%s", returnedSwallows[i]);
}
sortArray(leftSwallows, N);
sortArray(returnedSwallows, M);
j = 0;
for (i = 0; i < N; i++) {
found = 0;
while (j < M) {
if (strcmp(leftSwallows[i], returnedSwallows[j]) == 0) {
found = 1;
j++;
break;
}
else if (strcmp(leftSwallows[i], returnedSwallows[j]) < 0) {
break;
}
j++;
}
if (!found) {
strcpy(missingSwallows[missingCount++], leftSwallows[i]);
}
}
j = 0;
for (i = 0; i < M; i++) {
found = 0;
while (j < N) {
if (strcmp(returnedSwallows[i], leftSwallows[j]) == 0) {
found = 1;
j++;
break;
}
else if (strcmp(returnedSwallows[i], leftSwallows[j]) < 0) {
break;
}
j++;
}
if (!found) {
strcpy(newSwallows[newCount++], returnedSwallows[i]);
}
}
if (missingCount > 0) {
printf("Missing: %d\n", missingCount);
printArray(missingSwallows, missingCount);
}
else {
printf("All Back\n");
}
if (newCount > 0) {
printf("New: %d\n", newCount);
printArray(newSwallows, newCount);
}
else {
printf("All Known\n");
}
return 0;
}
```
您可以将以上代码保存为`swallow_info.c`文件,然后使用C编译器进行编译和运行。程序会根据输入的飞走和飞回燕子的信息,输出没有回来的燕子和新增燕子的信息。
请注意,以上代码假设输入的数据格式是正确的,没有进行输入格式验证。如果输入不符合要求的格式,程序可能会出现异常。
阅读全文