c语言由键盘任意输入10个整型数据无重复值且有序,存放到数组中,再输入1个整型数据,查找此数据在数组中是否存在,如果存在,输出其位置,不存在给出提示。
时间: 2023-06-10 21:05:39 浏览: 95
数组a中已存有互不相同的10个整数从键盘输入一个整数,找出与该值相同的数组元素下标。 (如果没找到,输出“没找到”).c
5星 · 资源好评率100%
好的,我知道了。这是一个比较基础的题目。下面是C语言代码实现:
```c
#include <stdio.h>
int main() {
int arr[10];
int i, n, x, flag = 0;
// 从键盘输入10个有序且无重复的数组元素
printf("Input 10 integers in ascending order:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
// 如果输入的数据不是升序排列或有重复,则提示错误并退出程序
if (i > 0 && (arr[i] <= arr[i - 1] || arr[i] == arr[i - 1])) {
printf("Error: input is not in ascending order or has duplicates!\n");
return 0;
}
}
// 从键盘输入要查找的数
printf("Input an integer to search: ");
scanf("%d", &x);
// 二分查找法
int left = 0, right = 9;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
printf("%d is at position %d.\n", x, mid + 1);
flag = 1;
break;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 如果要查找的数不存在,则输出提示
if (flag == 0) {
printf("%d is not found in the array.\n", x);
}
return 0;
}
```
上面的程序采用了二分查找法,在比较快速的时间内可以查找到给定的数是否在数组中存在。
阅读全文