如何用c语言编写查询数组中的元素

Python09

如何用c语言编写查询数组中的元素,第1张

对于数组的查询,其实就是对数组中数据做一个遍历。

最常用的方法就是通过循环对数组中的元素逐个取值,并与参考值(要查询的值)做比对,并处理结果。

下面是一个简单的对一维数组进行查询的样例。

函数功能:对输入的数组元素进行查询,打印符合查询值的元素位置,并返回查询到的元素总数。

函数名:array_query

函数声明: int array_query(int *a, int n, int v)

参数介绍:

a: 输入的数组,类型为整型指针,表示整型数组。可以根据实际需要进行调整。

n:数组中现有元素的个数。

v:要查询的元素值。

返回值:

整型,返回查询到的元素个数。如果出错返回-1。

实现代码:

 int array_query(int *a, int n, int v)

 {

     int i,ret

     

     if(a == NULL || n <= 0) return -1 //出错处理

     for(ret = i = 0 i < n i ++)

     {

         if(a[i] == n)

         {

             printf("%d\n", i)//找到元素,打印下标,并累计统计值

             ret ++

         }

     }

     

     return ret//返回总数。

 }

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 20

void Sort(int a[],int n)  {

int i,j,k,t

for(i = 0 i < n - 1 ++i) {

k = i

for(j = i + 1 j < n ++j) {

if(a[k] > a[j]) k = j

}

if(i != k) {

t = a[k]

a[k] = a[i]

a[i] = t

}

}

}

int Find(int a[],int n,int x) {

int low = 0,high = n - 1,mid

while(low <= high) {

mid = (low + high)/2

if(x == a[mid]) return mid

else if(x > a[mid]) low = mid + 1

else high = mid - 1

}

    return -1

}

void Show(int a[],int n) {

int i

for(i = 0 i < n ++i) {

printf("%d ",a[i])

}

printf("\n")

}

int main() {

    int a[20],i,x,res

    srand((unsigned)time(NULL))

    for(i = 0 i < N ++i) 

     a[i] = rand()%N // 每个数都在1 -- 100之间 

    Show(a,N)

Sort(a,N)

Show(a,N)

x = rand()%100 + 1

res = Find(a,N,x)

if(res >= 0) printf("数值%d的下标为%d。\n",a[res],res)

else printf("数列中没有找到数值%d。\n",x)

    return 0

}