按照所有共同出现的元素从小到大顺序输出,如果重复多次,也只用输出一次,如果一个共同出现的数都没有,输出0即可。 题目保证序列中的元素一定是正整数 输入 第一行一个正整数t,表示有t组数据 每一组第一行一个正整数n,表示序列的长度,序列长度不超过100 每一组第二行和第三行分别为两个序列的元素,序列中每个元素都不超过100, 输出 每一组数据输出两个序列中共同出现的元素 请你用c语言实现
时间: 2024-02-16 07:00:22 浏览: 53
c代码-C语言三个数从小到大排序/输出: 任意输入 3 个整数,编程实现对这 3 个整数由小到大进行排序。 冒泡排序的动画 https://haokan.baidu.com/v?vid=8080732080990475789&pd=bjh&fr=bjhauthor&type=video
下面是一份 C 语言实现的代码,读入 `t` 组数据,每组数据先读入序列长度 `n`,然后分别读入两个长度为 `n` 的序列,并输出两个序列中共同出现的元素:
```c
#include <stdio.h>
#include <stdbool.h>
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int a[100], b[100];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
bool flag[101] = {false}; // 标记数字是否出现过
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i] == b[j]) {
flag[a[i]] = true; // 标记共同出现的数字
break;
}
}
}
bool first = true; // 是否是第一个输出的数字
for (int i = 1; i <= 100; i++) {
if (flag[i]) { // 如果数字出现过
if (first) { // 如果是第一个输出的数字
printf("%d", i);
first = false;
} else {
printf(" %d", i);
}
}
}
if (first) { // 如果没有输出任何数字
printf("0");
}
printf("\n");
}
return 0;
}
```
代码中使用一个 `flag` 数组来标记数字是否出现过,然后依次遍历 `flag` 数组,输出所有出现的数字。注意,输出的数字需要按照从小到大的顺序输出,因此我们从数字 1 到 100 依次检查 `flag` 数组即可。
阅读全文