【问题描述】 设有一查找整型查找表(长度不超过1000),利用顺序查找算法实现关键字的查找。 【输入形式】 输入若干组数据,每组数据包括 (1)输入整数n,表示查找表长; (2)输入n个整数,表示查找表; (3)输入查找关键字key。 【输出形式】 若找到关键字,输出关键字在表中的位置序号(第一次出现); 若未找到,输出“no” 【样例输入】 5 65 56 42 -30 100 -30 8 65 56 42 -30 100 33 56 98 30 【样例输出】 4 no 【评分标准】 #include <stdio.h> #include <stdlib.h> #define MAX 1000 int search(int table[],int n,int key) { } int main() { int i,n,key; int a[MAX]; while(scanf("%d",&n)==1) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } scanf("%d",&key); if((i=search(a,n,key))>=0) { printf("%d\n",i+1); }else { printf("no\n"); } } return 0; }补充完整
时间: 2024-02-10 13:07:54 浏览: 48
下面是完整的代码实现,其中search函数为顺序查找算法的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
int search(int table[], int n, int key) {
int i;
for (i = 0; i < n; i++) {
if (table[i] == key) {
return i; // 找到了,返回位置序号
}
}
return -1; // 没找到,返回-1
}
int main() {
int i, n, key;
int a[MAX];
while (scanf("%d", &n) == 1) {
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &key);
if ((i = search(a, n, key)) >= 0) {
printf("%d\n", i + 1); // 找到了,输出位置序号
}
else {
printf("no\n"); // 没找到,输出no
}
}
return 0;
}
```
这个程序的核心在于search函数,它实现了顺序查找算法。在主函数中,先读入查找表的长度和表中的元素,然后读入要查找的关键字key,调用search函数查找关键字在表中的位置,如果找到,输出位置序号,否则输出no。注意,在输出位置序号时要加1,因为题目要求输出的是位置序号(第一次出现),位置序号从1开始计数。
阅读全文