加入联合国契约组织:C语言编程

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 16:31:02
1. 有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的位置,若该数不在数组中,则打印出“不在数组中”。
这个程序怎么无法结束啊?

#include <stdio.h>
#define M 15
main()
{
int a[M],i,d,t,j,n,k=1,e,l,mid,sign;
char c;
printf ("please enter date :");
for (i=0;i<M;i++)
scanf ("%d",&a[i]);

for (j=0;j<=14;j++)
for (i=0;i<=15-j;i++)
if (a[i]>a[i+1])
{d=a[i];a[i]=a[i+1];a[i+1]=d;}
printf ("the martix is: ");
for (i=0;i<M;i++)
printf ("%5d",a[i]);printf ("\n");

while (k)
{
printf ("\nplease enter number to look for: ");
scanf ("%d",&n);
sign=0;
t=0;
e=M-1;
if ((n<a[0])||(n>a[M-1]))
l=-1;
while ((!sign) && (t<=e))
{mid=(e+t)/2;
if (n==a[mid])
{l=mid;printf ("has found %d,it's position is %d\n",n,l+1);
sign=1;}
else if (n<a[mid]) e=mid-1;
else t=mid+1;}
if (!sign||l==-1) printf ("can not find %d.\n",n);
printf ("continue or not(Y/N)?");
scanf (" %c",&c);
if (c=='N'||c=='n') k=0;
}
}

---------------
continue or not(Y/N)?显示的时候
按N,再回车就结束了呀