十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
在甘德等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站建设 网站设计制作定制开发,公司网站建设,企业网站建设,高端网站设计,成都全网营销推广,外贸网站制作,甘德网站建设费用合理。
int search(int a[],int b,int c,int i)
{
int x,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;
}
return y+1;
}
return -1;
}
int main()
{
int i,m,pos;
scanf("%d",m);
int a[m];
for(i=0;im;i++)
{
scanf("%d",a[i]);
}
for(i=0;im;i++)
{
pos=search(a,m,a[i],i);
if(pos!=-1)
{
printf("FOUND a[%d]=%d, position is %d\n",i,a[i],i+1);
return 0;
}
}
if(pos==-1)
{
printf("NOT FOUND\n");
}
return 0;
}
这种查找方法的数组必须是从小到大的,用遍历的话就没这个问题了。
C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。
C语言strchr()函数:
查找某字符在字符串中首次出现的位置
头文件:#include
string.h
strchr()
用来查找某字符在字符串中首次出现的位置,其原型为:
char
*
strchr
(const
char
*str,
int
c);
【参数】str
为要查找的字符串,c
为要查找的字符。
strchr()
将会找出
str
字符串中第一次出现的字符
c
的地址,然后将该地址返回。
注意:字符串
str
的结束标志
NUL
也会被纳入检索范围,所以
str
的组后一个字符也可以被定位。
【返回值】如果找到指定的字符则返回该字符所在地址,否则返回
NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为
i,那么返回的地址可以理解为
str
+
i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用
strrchr()
函数。
首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。
其次,传值和传地址一塌糊涂,完全就是乱写么。
scanf的第二个参数是地址,如果本身不是指针则需要取址符。
我给你重写了算了
#includestdio.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); /*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/
用strstr这个函数\r\n\r\n包含文件:string.h\r\n函数名: strstr \r\n函数原型:extern char *strstr(char *str1, char *str2);\r\n功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。\r\n返回值:返回该位置的指针,如找不到,返回空指针。\r\n\r\n源代码:\r\n\r\n#include\r\n#include//调用string.h中的strstr函数\r\nvoid main(){\r\n char ch1[255]="abcde";\r\n char ch2[100]="cd";\r\n char* ch;//用于接受返回值\r\n if((ch=strstr(ch1,ch2))==NULL){//说明没有要找的字符串\r\n printf("-1\n");\r\n }else{//说明找到了那个字符串\r\n printf("%d\n",ch-ch1+1);//cde的地址减去abcde的地址+1\r\n } \r\n}