编写程序实现功能:已知有序数组a,用户通过键盘输入一个数,查找改数组中是否有?

高手们,请教下,编写程序实现功能:已知有序数组a,用户通过键盘输入一个数,查找改数组中是否有?
最新回答
人心可畏

2024-08-01 01:03:02

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!先来分析你的需求吧,因为我只会写C++ PHP
但是思路都是一致的。
a表示数组中有几个数据,所以第一个 是数组大小。

每查一个数,都是要对整个数组进行遍历,寻找是否有该值。b表示需查询的数据的个数,也就是要循环数组b次,同时,还要把要查的数据存到一个数组里面,这个数组大小为b。

总体思路就是2层循环,每次拿b数组里面一个值,去遍历a数组。
就用C++来实现一下吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int a,b; //键盘接收值我就不写了
int input_arr[a] = {0};
int check_arr[b] = {0};
//输入a个数据,给input_arr[] 赋值
for (int i= 0; i<a; i++)
{
cin>>input_arr[i];//数组接受键盘的值
}
for(int i = 0 ; i<b ; i++)
{
cin>>check_arr[i];
for (int k= 0 ; k < a ; k++)
{
if(input[k] == check_arr[i]) //如果有相同的值
{
//在k位置查询到了该值
}
else
{
//循环完了都没有,则输出 -1
}
}
}非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
莫名的小情绪

2024-08-01 13:33:48

#include<stdio.h>
int main()
{ int n,i,a[100],x;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0; i<n&&a[i]<x; i++)
if(a[i]==x)break;
if(a[i]==x)
printf("第%d个元素是%d\n",i,x);
else
printf("未找到元素%d\n",x);
return 0;
}