用C语言完成:三、程序功能: 有15个已经排好序的整数存放在一个数组中,输入1个整数,要求用二分查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数。 【输入样例】 6 【输出样例】 7 【程序代码】 #include <stdio.h> int main(void) { int N=15, number, top, bott, mid; int a[15] = { -3,-1,0,1,2,4,6,7,8,9,12,19,21,23, 51}; top = 0; 【____________】 ; scanf("%d", &number); while(top <= bott) { mid = (top + bott) / 2; if(【____________】) { printf("%d\n", mid + 1); break; } else if(number < a[mid]) bott = mid - 1; else 【____________】; } if(top > bott) printf("not found\n"); return 0; }
时间: 2024-04-26 22:25:20 浏览: 3
#include <stdio.h>
int main(void) {
int N=15, number, top, bott, mid;
int a[15] = { -3,-1,0,1,2,4,6,7,8,9,12,19,21,23, 51};
top = 0;
bott = N - 1; // 初始化数组下标范围
scanf("%d", &number);
while(top <= bott)
{
mid = (top + bott) / 2;
if(number == a[mid]) // 找到了
{
printf("%d\n", mid + 1);
break;
}
else if(number < a[mid]) bott = mid - 1;
else top = mid + 1;
}
if(top > bott) printf("not found\n"); // 没找到
return 0;
}
相关问题
用c语言:有15个已经排好序的整数存放在一个数组中,输入1个整数,要求用二分查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数。
以下是用C语言实现的二分查找算法:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("请输入一个整数:");
scanf("%d", &target);
int result = binarySearch(arr, n, target);
if (result != -1) {
printf("%d 是数组中第 %d 个元素的值。\n", target, result + 1);
} else {
printf("无此数。\n");
}
return 0;
}
```
其中,`binarySearch` 函数接受一个已经排好序的数组 `arr`、数组长度 `n` 和目标整数 `target`,返回目标整数在数组中的索引位置(从0开始)。如果目标整数不在数组中,则返回 `-1`。主函数中先定义一个已经排好序的数组 `arr`,然后输入一个整数 `target`,调用 `binarySearch` 函数进行查找,最后输出结果。
C语言:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
思路:
1.定义一个数组,已经排好序。
2.输入一个数,判断它在数组中的位置。
3.将数组中该数后面的数全部向后移动一位。
4.将该数插入到数组中。
代码实现:
```c
#include <stdio.h>
int main()
{
int a[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; //已经排好序的数组
int i, j, k, num;
printf("请输入一个要插入的数:");
scanf("%d", &num);
for (i = 0; i < 10; i++) //查找插入位置
{
if (num < a[i])
{
for (j = 9; j >= i; j--) //移动数组元素
{
a[j + 1] = a[j];
}
a[i] = num; //插入该数
break;
}
}
for (k = 0; k < 11; k++) //输出新数组
{
printf("%d ", a[k]);
}
return 0;
}
```