在这鸡年大吉的日子里还是要叨唠一个简单问题.....麻烦看看
#include<stdio.h>int SearchElement(int *array,int n,int element)
{
int first=0;
int last=n;
while(first<=last)
{
int mid=(first+last)/2;
if(element>array)//是element不是array
{
first=mid+1;
}
else if(element<array)
{
last=mid-1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int a,b,c,d,m;
scanf("%d",&b);
for(c=0;c<b;c++)
{
scanf("%d",&a);
}
do
{
scanf("%d",&d);
m=SearchElement(a,b,d);
printf("%d",m);
}while(d!=EOF);
}
这是个折半查找,主函数为什么按EOF退不出循环,应该怎么改哪??? scanf好像无法读人EOF
用 getchar 试试
人造人 发表于 2017-1-28 07:38
scanf好像无法读人EOF
用 getchar 试试
do
{
d=getchar();
m=SearchElement(a,b,d);
printf("%d",m);
}while((d=getchar())!=EOF);
不太会getchar。。。。这样改好像有问题{:10_245:} 十六是只仙 发表于 2017-2-2 12:51
do
{
int main(void)
{
int d;
do
{
d = getchar();
if(d == EOF)
{
break;
}
ungetc(d, stdin); // 退回字符d到stdin
scanf("%d", &d);
getchar(); // 去掉 '\n'
printf("%d", d);
} while(1);
return 0;
}
页:
[1]