mac 保存并退出vi:C语言编程 很急的啊

来源:百度文库 编辑:高校问答 时间:2024/04/29 23:41:29
有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[i])
for(i=i-1;i>0;i--)
if(j==a[i])
n=i+1;
else;
else
for(i=i+1;i<10;i++)
if(j==a[i])
n=i+1;
else;

if(n==0)printf("您输入的数在数组中无此数!\n");
else printf("您输入的数在数组中是第%d个\n",n-1);
}

英文:

#include<stdio.h>
#define N 20
main()
{int i,j,n;
int a[N]={10000,37,36,34,31,28,23,21,19,17,16,13,11,7,4,1};
printf("Enter data:\n");
scanf("%d",&j);
n=0;
i=(N-1)/2;
if(j==a[i])
n=i+1;
else if(j>a[i])
for(i=i-1;i>0;i--)
if(j==a[i])
n=i+1;
else;
else
for(i=i+1;i<10;i++)
if(j==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-1);
}

我是新手,才学了1个多月~~~嘿嘿~~我第一个数也显示不出来,我做的第一个数10000不要,从第2个开始,后面显示的第一个数-1。运行结果跟你说的一样的,你看看行不行~~~~