#include?stdio.h
在甘德等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,甘德網(wǎng)站建設(shè)費(fèi)用合理。
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;
}
這種查找方法的數(shù)組必須是從小到大的,用遍歷的話就沒這個(gè)問題了。
C語(yǔ)言中的標(biāo)準(zhǔn)函數(shù)庫(kù)中的strchr()函數(shù)可以實(shí)現(xiàn)查找字符串中的某個(gè)字符。
C語(yǔ)言strchr()函數(shù):
查找某字符在字符串中首次出現(xiàn)的位置
頭文件:#include
string.h
strchr()
用來查找某字符在字符串中首次出現(xiàn)的位置,其原型為:
char
*
strchr
(const
char
*str,
int
c);
【參數(shù)】str
為要查找的字符串,c
為要查找的字符。
strchr()
將會(huì)找出
str
字符串中第一次出現(xiàn)的字符
c
的地址,然后將該地址返回。
注意:字符串
str
的結(jié)束標(biāo)志
NUL
也會(huì)被納入檢索范圍,所以
str
的組后一個(gè)字符也可以被定位。
【返回值】如果找到指定的字符則返回該字符所在地址,否則返回
NULL。
返回的地址是字符串在內(nèi)存中隨機(jī)分配的地址再加上你所搜索的字符在字符串位置。設(shè)字符在字符串中首次出現(xiàn)的位置為
i,那么返回的地址可以理解為
str
+
i。
提示:如果希望查找某字符在字符串中最后一次出現(xiàn)的位置,可以使用
strrchr()
函數(shù)。
首先,指針默認(rèn)只有一個(gè)地址的長(zhǎng)度的空間,存不了那么多的字符。
其次,傳值和傳地址一塌糊涂,完全就是亂寫么。
scanf的第二個(gè)參數(shù)是地址,如果本身不是指針則需要取址符。
我給你重寫了算了
#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); /*申請(qǐng)一個(gè)內(nèi)存空間用來存放數(shù)據(jù),或者直接用一個(gè)大數(shù)組也可以*/
用strstr這個(gè)函數(shù)\r\n\r\n包含文件:string.h\r\n函數(shù)名: strstr \r\n函數(shù)原型:extern char *strstr(char *str1, char *str2);\r\n功能:找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。\r\n返回值:返回該位置的指針,如找不到,返回空指針。\r\n\r\n源代碼:\r\n\r\n#include\r\n#include//調(diào)用string.h中的strstr函數(shù)\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{//說明找到了那個(gè)字符串\r\n printf("%d\n",ch-ch1+1);//cde的地址減去abcde的地址+1\r\n } \r\n}