C语言编程 很急的啊

来源:百度知道 编辑:UC知道 时间:2024/06/14 12:01:22
有15个数按由大到小顺序放在一个数组中,输入一个数,要求用折半查法找出该数是数组中的底几个元素的值,如果不在数组中,则输出无此数?

#include<stdio.h>
#define N 10
main()
{int i,k,n;
int a[N]={19,17,15,13,11,9,7,5,3,1};
printf("Enter data:\n");
scanf("%d",&k);
n=0;
i=(N-1)/2;
if(k==a[i])
n=i+1;
else if(k>a[i])
for(i=i-1;i>0;i--)
if(k==a[i])
n=i+1;
else;
else
for(i=i+1;i<10;i++)
if(k==a[i])
n=i+1;
else;

if(n==0)printf("The array hasn't the data!\n");
else printf("The data's num is:%d\n",n);
}

楼上的兄弟和题目好象有2点不一样
①只能输入10个数,
②如果用户输入第一个数(19)就显示不出来了

我改写了下

中文:

#include<stdio.h>
#define N 20
main()
{int i,j,n;
int a[N]={100000,37,36,34,31,28,23,21,19,17,16,13,11,7,4,1};
printf("请输入一个数:\n");
scanf("%d",&j);
n=0;
i=(N-1)/2;
if(j==a[i])
n=i+1;
else if(j>a