最常用的方法就是通过循环对数组中的元素逐个取值,并与参考值(要查询的值)做比对,并处理结果。
下面是一个简单的对一维数组进行查询的样例。
函数功能:对输入的数组元素进行查询,打印符合查询值的元素位置,并返回查询到的元素总数。
函数名: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
}