對于數(shù)組的查詢,其實就是對數(shù)組中數(shù)據(jù)做一個遍歷。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供齊河網(wǎng)站建設、齊河做網(wǎng)站、齊河網(wǎng)站設計、齊河網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、齊河企業(yè)網(wǎng)站模板建站服務,十多年齊河做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
最常用的方法就是通過循環(huán)對數(shù)組中的元素逐個取值,并與參考值(要查詢的值)做比對,并處理結果。
下面是一個簡單的對一維數(shù)組進行查詢的樣例。
函數(shù)功能:對輸入的數(shù)組元素進行查詢,打印符合查詢值的元素位置,并返回查詢到的元素總數(shù)。
函數(shù)名:array_query
函數(shù)聲明: int array_query(int *a, int n, int v);
參數(shù)介紹:
a: 輸入的數(shù)組,類型為整型指針,表示整型數(shù)組??梢愿鶕?jù)實際需要進行調整。
n:數(shù)組中現(xiàn)有元素的個數(shù)。
v:要查詢的元素值。
返回值:
整型,返回查詢到的元素個數(shù)。如果出錯返回-1。
實現(xiàn)代碼:
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);//找到元素,打印下標,并累計統(tǒng)計值
ret?++;
}
}
return?ret;//返回總數(shù)。
}
#includestdio.h
int search(int a[], int n, int searchValue) {
int i;
for(i=0; in; i++) if(a[i]==searchValue) return i;
return -1;
}
int main() {
int i;
int a[10],find,idx;
for(i=0; i10; i++) {
printf("Input a[%d]:",i);
scanf("%d",a[i]);
}
printf("Input searchValue:");
scanf("%d",find);
idx=search(a,10,find);
if(idx!=-1) printf("pos=%d",idx);
else printf("not found");
}
首先,指針默認只有一個地址的長度的空間,存不了那么多的字符。
其次,傳值和傳地址一塌糊涂,完全就是亂寫么。
scanf的第二個參數(shù)是地址,如果本身不是指針則需要取址符。
我給你重寫了算了
#include
int
retrieve(int
array[],int
length,int
x);/*形參x直接傳值就可以了*/
int
main()
{
int
*a,x;
int
length,i;
scanf("%d",length);
a
=
(int)malloc(sizeof(int)*length);
/*申請一個內存空間用來存放數(shù)據(jù),或者直接用一個大數(shù)組也可以*/