第一题:
#include<stdio.h>
int binary_search(int key,int a[],int n)
{
int high ,mid,low,count1=0;
low=0;
high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(key<a[mid])
high=mid-1;
else if(key>a[mid])
low=mid+1;
else if(key==a[mid])
{printf("你要找的数在%d ",mid);
count1++;
break;
}
}
if(count1==0){
printf("没有这个数\n");/*
if(a[n-2]<key<a[n-1])
{printf("%d\n",n);}
if(key<a[0])
{printf("0\n");}*/
for(int i=0;i<n;i++)
{
if(key<a[i])
{
printf("%d\n",i);
break;}
else if(key>a[n-1])
printf("%d",n);
}
int i;
printf("请输入显示的数字");
scanf("%d",&i);
for(int t=0;t<i;t++)
{
printf("%d ",a[t]);
}
printf("%d ",key);
for(i;i<n;i++)
{
printf("%d ",a[i]);
}
}
return 0;
}
int main()
{
int i,a[100],key,n;
printf("请输入你的长度");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d号元素:",i);
scanf("%d",&a[i]);
}
printf("请输入要找的数:");
scanf("%d",&key);
binary_search(key,a,n);
return 0;
}
第二题:
#include<stdio.h>
#define max(a,b)((a)>(b)?(a):(b))
int main()
{
int a[100],i,n,j,num;
int result;
printf("请输入数组长度:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入数:");
scanf("%d",&a[i]);
}
result=a[0];
for(i=0;i<n;i++)
{
num=a[i];
printf("这是第%d次",i);
for(j=i+1;j<n;j++)
{
num=num+a[j];
printf("此时的num:%d和result:%d",num,result);
result=max(num,result);
printf("大数是%d\n",result);
}
}
printf("%d",result);
return 0;
}第三题:
遍历数组用if语句进行判断连续三个元素的值,若为000,即可插入一个,若存在一个一,不可以。根据输入的n,判断有几个这样的组,来输出TRUE或FALSE。