编写程序实现功能:已知有序数组a,用户通过键盘输入一个数,查找改数组中是否有?
先来分析你的需求吧,因为我只会写C++ PHP
但是思路都是一致的。
a表示数组中有几个数据,所以第一个 是数组大小。
每查一个数,都是要对整个数组进行遍历,寻找是否有该值。b表示需查询的数据的个数,也就是要循环数组b次,同时,还要把要查的数据存到一个数组里面,这个数组大小为b。
总体思路就是2层循环,每次拿b数组里面一个值,去遍历a数组。
就用C++来实现一下吧。
int a,b; //键盘接收值我就不写了int input_arr[a] = {0}; int check_arr[b] = {0};//输入a个数据,给input_arr[] 赋值for (int i= 0; i>input_arr[i];//数组接受键盘的值}for(int i = 0 ; i>check_arr[i]; for (int k= 0 ; k < a ; k++) { if(input[k] == check_arr[i]) //如果有相同的值 { //在k位置查询到了该值 } else { //循环完了都没有,则输出 -1 } }}
#include
#include
int main(){
int a[20],i,t,flag,v, n=1;
srand(time(0));
a[0]= 10 + rand()%90;
do{
t=10 + rand()%90;
flag=0;
for (i=0;i<n;i++) if (t==a[i]) flag=1;
if (flag==0) {a[n]=t;n++;};
} while(n<20);
printf("input a number: ");
scanf("%d",&v);
flag=0;
for (i=0;i<20;i++) if (v==a[i]) { printf("subscript %d
",i); flag=1;};
if (flag==0) printf("no %d in the array
",v);
for (i=0;i<20;i++) printf("%d ",a[i]);
return 0;
}
但是思路都是一致的。
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
}
}
}非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
#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;
}
自定义一个有序数组a[6],采用二分法查找值为5的数是否存在,如果存在...
布尔找到(INT,INT,INT);无效的主要(){ 诠释x;诠释一个[10] = {1,2,3,4, 5,6,7,8,9};printf的(“请输入要查找的数字:”);scanf的(“%d”,&X);如果(寻找(A,10,X))printf的(“找到%d”,x);其他 printf的(“未找到%d。”;,X); BR \/>} 布尔找到...
C语言编程:输入10个有序(由小到大)整数存入数组a,再输入一个整数x,在...
define Pi 3.1415926 int main(){ int a[11],i,x;printf("请输入10个由小到大的整数:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("请输入要插入的数:\\n");scanf("%d",&x);for(i=9;i>=0&&a[i]>x;i--)a[i+1]=a[i];a[i+1]=x;printf("插入后的数组:\\...
已知一个有序数组(a,b,c,d),现按下列方式重新写成数组(a1,b1,c1,d...
an+bn+cn+dn=2n(a+b+c+d)若1000<an+bn+cn+dna+b+c+d<2000即1000<2n<2000则n=10.
已知有序数组a前10000个元素是随机整数,现需查找某个整数是否在该数组中...
【答案】:D 本题考查常见查找算法时间复杂度。顺序表查找:最好 O(1) 最坏 O(n) 最终 O(n)折半查找:最终logn二叉排序树:最终logn平衡二叉树:logn哈希表法(散列表):O(1),但是构建哈希表需要O(n)分块查找:O(logn)
设有序数组有n个元素,数组中连续相等的元素段称为数组的平台,试找出...
int a[n],i,j,k,max;\/\/没有定义t scanf("%d",&a[n]);\/\/n是数组a中的元素个数,这里要用for循环输入 for(i=1;i<=n-1;i++)\/\/这是一个冒泡,如果按照要求,a输入的是一个有序数组的话,就不需要进行重新排序了 for(j=0;j<n-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]...
已知一个有序数组(A,B,C,D),现按下列方式重新写成数组(A1,B1,C1,D...
10 每算一次 (A+b+c+d )n 是上一次的两倍 十次后 相除得1024 自已玩去
Java编程:两个int类型有序数组A和B,长度分别为m和n,合并成有序数组C...
\/\/两个有序的话,那么只用每次都从头部开始取值,然后插入到C数组里面\/\/所以时间复杂度为O(m+n)public void mergeArray(int[] a,int[] b,int[] c){ int m = 0; int n = 0; int x = 0; while(m<a.length&& n<b.length){ if(a[m]<= b[n]){ c[x++]=...
C++编写程序将一有序数组多余的元素删除并输出
include <stdio.h> define ARR_SIZE 5 int Delete(int *a, int n, int x);void main(){ int a[ARR_SIZE-1], x, i, n;printf("Please enter array numbers:\\n");scanf("%d", &n);printf("Please enter array:\\n");for (i=0; i<n; i++){ scanf("%d", &a[i]);} pr...
如何用C语言编程将两个有序数组a,b合并成一个数组c
\/\/循环比较,将小的插入到C数组中 while ( i < 3 && j < 3) { if (a [i] < b [j]) c[k++] = a[i++];else c[k++] = b[j++];} \/\/处理其中一个数组剩下 while (i < 3) c[k++] = a[i++];while( j < 3) c[k++] = b[j++];或许有更好的实现,你自己...
一箭穿心3b编程代码
\/\/将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c[]){ int i, j, k;i = j = k = 0;while (i < n && j < m){ if (a[i] < b[j])c[k++] = a[i++];else c[k++] = b[j++];} while (i < n)c[k++] =...