输入的第一行是1个正整数n,表示共有n个整数。其中n不超过500。 输入的第二行是一个正整数k,表示共有k次查询。其中k同样不超过500。 第三行包含n个用空格隔开的正整数,表示n个原始记录。 第四行包含k个用空格隔开的正整数,表示k次查询的目标,输出只有1行,包含k个整数,分别表示每一次的查询结果。如果在查询中找到了对应的整数,则输出其第一次出现的位置,否则输出-1。 请在每个整数后输出一个空格。使用C语言写一个静态表的顺序查找
时间: 2024-03-10 16:45:11 浏览: 55
问题描述:求从1~n的正整数中取出k(k<=n)个不重复整数的所有组合.pdf
以下是使用C语言写一个静态表的顺序查找的示例代码:
```c
#include <stdio.h>
int main()
{
int n, k, i, j, num, found;
int arr[500];
int query[500];
scanf("%d", &n);
scanf("%d", &k);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (i = 0; i < k; i++) {
scanf("%d", &query[i]);
}
for (i = 0; i < k; i++) {
found = 0;
for (j = 0; j < n; j++) {
if (arr[j] == query[i]) {
printf("%d ", j + 1);
found = 1;
break;
}
}
if (!found) {
printf("-1 ");
}
}
return 0;
}
```
这段代码中,我们首先通过 `scanf` 函数获取输入的整数数量 `n` 和查询次数 `k`。然后使用一个 `for` 循环读取 `n` 个整数和 `k` 个查询值,并分别存储在 `arr` 数组和 `query` 数组中。
接下来,我们使用两个嵌套的 `for` 循环,分别遍历 `query` 数组和 `arr` 数组,查找每个查询值在 `arr` 数组中的位置。如果找到了,则输出该位置加一(因为题目要求从1开始计数),并将 `found` 标记为1;如果没有找到,则输出 `-1`,同时不改变 `found` 的值。
最后,我们通过 `printf` 函数将查询结果输出到控制台。
需要注意的是,这段代码中假设输入的整数数量 `n` 和查询次数 `k` 不超过500,因此我们定义了大小为500的数组 `arr` 和 `query`。如果实际情况中 `n` 或 `k` 超过了500,需要相应地修改数组的大小。另外,如果输入的整数数量或查询次数为0,程序可能会出现问题,因此在实际开发中需要对这种情况进行特殊处理。
阅读全文