① 求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]!='