① 求c語言大神 題目:編寫查找函數search(),實現如下功能。
#include <stdio.h>
int search(int arr[],int len,int num)//arr為序列,len為序列長度,num為要查找的數
{
int start,end,mid;
start=0;
end=len-1;
mid=(start+end)/2;
while(start<=end)
{
if(arr[mid]>num)
{
end=mid-1;
mid=(start+end)/2;
continue;
}
if(arr[mid]<num)
{
start=mid+1;
mid=(start+end)/2;
continue;
}
return mid+1;
}
return -1;
}
int main()
{
int a[100],i,m,num,pos;
printf("輸入序列長度:");
scanf("%d",&m);
printf("輸入一個長度為%d的有序序列:\n",m);
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
printf("輸入你要查找的數:");
scanf("%d",&num);
pos=search(a,m,num);
if(pos==-1)
printf("未能在序列中找到你要查找的數。\n");
else
printf("你要查找的數在第%d個位置\n",pos);
return 0;
}
② 急求C語言中查找函數的代碼
我去,幾乎沒有對的地方。
首先,指針默認只有一個地址的長度的空間,存不了那麼多的字元。
其次,傳值和傳地址一塌糊塗,完全就是亂寫么。
scanf的第二個參數是地址,如果本身不是指針則需要取址符。
我給你重寫了算了
#include<stdio.h>
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); /*申請一個內存空間用來存放數據,或者直接用一個大數組也可以*/
for(i=0;i<length;i++)
scanf("%d",a+i);/*a本身就是一個地址,不需要加什麼符號*/
scanf("%d",&x);/*x是變數,需要取址符*/
printf("%d\n",Retrieve(a,length,x));
return 0;
}
int Retrieve(int array[],int length,int x)
{
int i;
i=0;
/* p=array; 這句其實沒必要*/
while(i<length)
{
if(x==array[i])
return i;/*既然找到了,那就直接返回就行了*/
i++;
}
return -1;
}
③ C語言數組的查找函數
#include<stdio.h>
int main()
{
int a[5];
int i,max,min;
printf("input number:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i<5;i++){
if(a[i]>max)
max=a[i];
}
for(i=0;i<5;i++){
if(a[i]<min)
min=a[i];
}
for(i=0;i<5;i++){
printf("%d",a[i]);
printf(" ");
}
printf("\n");
printf("最大值為%d\n",max);
printf("最小值為%d\n",min);
return 0;
}
④ 關於c語言中文件搜索函數。
函數名: findfirst(); findnext ();
功 能: 搜索磁碟目錄; 取得下一個匹配的findfirst模式的文件 ;
用 法:
int findfirst(char *pathname, struct ffblk *ffblk, int attrib);
int findnext(struct ffblk *ffblk);
舉例:
/* findnext example */
#include <stdio.h>
#include <dir.h>
int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}
⑤ C語言如何用函數來實現搜索
#include<stdio.h>
intsearch(inta[],intb,intc,inti)
{
intx,y,z;
x=i+1;
z=b-1;
y=(x+z)/2;
while(x<=z)
{
if(a[y]>c)
{
z=y-1;
y=(x+z)/2;
continue;
}
if(a[y]<c)
{
x=y+1;
y=(x+z)/2;
continue;
}
returny+1;
}
return-1;
}
intmain()
{
inti,m,pos;
scanf("%d",&m);
inta[m];
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<m;i++)
{
pos=search(a,m,a[i],i);
if(pos!=-1)
{
printf("FOUNDa[%d]=%d,positionis%d ",i,a[i],i+1);
return0;
}
}
if(pos==-1)
{
printf("NOTFOUND ");
}
return0;
}
這種查找方法的數組必須是從小到大的,用遍歷的話就沒這個問題了。
⑥ c語言函數find的使用方法
c語言find函數的用法詳解
C語言之find()函數
find函數用於查找數組中的某一個指定元素的位置。
比如:有一個數組[0, 0, 5, 4, 4];
問:元素5的在什麼位置,find函數 返回值 為 2;
find (數組名 + 起始查找元素的位置, 數組名 + 結束查找的元素位置, 想要查找的元素)
直接上代碼:
#include <iostream>
#include <vector>
#include <algorithm>//注意要包含該頭文件
using namespace std;
int main()
{
int nums[] = { 3, 1, 4, 1, 5, 9 };
int num_to_find = 5;
int start = 0;
int end = 5;
int* result = find( nums + start, nums + end, num_to_find );
if( result == nums + end )
{
cout<< "Did not find any number matching " << num_to_find << endl;
}
else
{
cout<< "Found a matching number: " << *result << endl;
}
return 0;
}
⑦ c語言 編寫一個函數,其功能為搜索由第一個參數指定的字元串,在其中查找由第二個參數指定的字元第一次
這樣:
#include<stdio.h>
// 計算字元串長度
int len(char a[])
{
int temp=0,i;
for(i=0;a[i]!='