c语言编程实现,输入10个互异的整数存入数组a中,再输入一个整数x,在数组a中利用二分法查找,若找到输出该数及在数组中的位置,若没有找到,将小于该数的所有数存入数组b中并输出。
时间: 2024-05-12 18:16:42 浏览: 109
您好!感谢您使用ChitGPT与我进行对话,我将为您解答问题。
以下是c语言实现的代码,实现了输入10个互异的整数存入数组a中,再输入一个整数x,在数组a中利用二分法查找,若找到输出该数及在数组中的位置,若没有找到,将小于该数的所有数存入数组b中并输出:
```
#include <stdio.h>
#define N 10
int a[N], b[N];
int main() {
int i, x, mid, left = 0, right = N - 1, flag = 0, cnt = 0;
printf("Please input the array a:\n");
for (i=0; i<N; i++) {
scanf("%d", &a[i]);
}
printf("Please input the integer x:\n");
scanf("%d", &x);
while (left <= right) {
mid = (left+right) / 2;
if (a[mid] == x) {
printf("Found %d at index %d.\n", x, mid);
flag = 1;
break;
} else if (a[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
if (!flag) {
printf("Did not find %d in array a.\n", x);
for (i=0; i<N; i++) {
if (a[i] < x) {
b[cnt++] = a[i];
}
}
printf("The integers smaller than %d in array a are:\n", x);
for (i=0; i<cnt; i++) {
printf("%d ", b[i]);
}
printf("\n");
}
return 0;
}
```
希望我的回答能够帮助到您,如有其他问题,请继续询问。
阅读全文