简单c语言代码顺序查找【问题描述】 从键盘输入若干个关键字序列(不超过999个关键字),以0作为输入结束。编写代码实现折半查找关键字,查找成功输出关键字的位置,否则输出not found。
时间: 2024-03-10 18:51:22 浏览: 18
以下是简单的C语言代码,实现了顺序查找:
```c
#include <stdio.h>
#define MAX_SIZE 1000
int main()
{
int i, n, key;
int a[MAX_SIZE];
printf("请输入关键字序列,以0作为输入结束:\n");
// 读入关键字序列
i = 0;
do {
scanf("%d", &a[i]);
i++;
} while (a[i-1] != 0 && i < MAX_SIZE);
n = i - 1;
// 读入待查找的关键字
printf("请输入待查找的关键字:\n");
scanf("%d", &key);
// 顺序查找
for (i = 0; i < n; i++) {
if (a[i] == key) {
printf("关键字 %d 的位置为 %d\n", key, i+1);
return 0;
}
}
printf("not found\n");
return 0;
}
```
代码中先读入关键字序列,以0作为输入结束,并记录序列中关键字的个数n。然后读入待查找的关键字key,并在关键字序列中顺序查找key,找到则输出位置,否则输出not found。
相关问题
简单c语言代码折半查找【问题描述】 从键盘输入若干个关键字序列(不超过999个关键字),以0作为输入结束。编写代码实现折半查找关键字,查找成功输出关键字的位置,否则输出not found。
以下是简单C语言代码实现折半查找的代码:
```c
#include <stdio.h>
#define MAXSIZE 1000
int main()
{
int a[MAXSIZE], n, key, low, high, mid, i;
// 输入关键字序列
printf("请输入若干个关键字序列,以0作为输入结束:\n");
n = 0;
while (scanf("%d", &a[n]) == 1 && a[n] != 0)
n++;
// 排序
for (i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
// 输入要查找的关键字
printf("请输入要查找的关键字:\n");
scanf("%d", &key);
// 折半查找
low = 0;
high = n - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (key == a[mid])
{
printf("%d\n", mid + 1);
break;
}
else if (key < a[mid])
high = mid - 1;
else
low = mid + 1;
}
if (low > high)
printf("not found\n");
return 0;
}
```
代码实现的思路很清晰,首先输入关键字序列并排序,然后输入要查找的关键字并对排好序的序列进行折半查找。
c语言从键盘输入若干个学生成绩,统计并输出最高成绩,当输入负数时结束。
可以使用一个变量来保存最高成绩,每次输入一个成绩时,与最高成绩进行比较,如果大于最高成绩,则更新最高成绩。当输入负数时,结束输入并输出最高成绩。
以下是一份示例代码:
```c
#include <stdio.h>
int main() {
int score, max_score = -1; // 初始化最高成绩为-1
printf("请输入学生成绩:\n");
while (1) {
scanf("%d", &score);
if (score < 0) {
break; // 输入负数,结束循环
}
if (score > max_score) {
max_score = score; // 更新最高成绩
}
}
printf("最高成绩为:%d\n", max_score);
return 0;
}
```