1:在堆区申请10个连续空间,手动输入10个数(递增),输入关键字key,采用折半查找方式查找关键字是否存在,存在给出位置,不存在,输出查找失败。
注意:main函数在main.c 输入函数,输出函数,查找函数,在find.c
#include<myhead.h>
int sr(int *a,int N)
{
printf("请输入10个数:");
for(int i=0;i<N;i++)
{
scanf("%d",a+i);
}
return 0;
}
void sc(int *a,int N)
{
for(int i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
putchar(10);
}
void zb(int *a,int N)
{
int i=0,j=N-1,mid=0,x,q=0;
printf("请输入要查找的关键字:");
scanf("%d",&x);
while(i<=j)
{
mid=(i+j)/2;
if(a[mid]<x)
{
i=mid+1;
}
else if(a[mid]>x)
{
j=mid-1;
}
else
{
q=mid;
break;
}
}
if(q==0)
{
printf("查找失败\n");
}
else
{
printf("成功,位置在%d\n",q+1);
}
}
#include<myhead.h>
#include"main.h"
#define N 10
int main(int argc,const char*argv[])
{
int *p=malloc(sizeof(int)*N);
sr(p,N);
sc(p,N);
zb(p,N);
free(p);
return 0;
}
#ifndef _MAIN_H
#define _MAIN_H
int sr(int *,int);
void sc(int *,int);
void zb(int *,int);
#endif
2:在堆区申请10个连续空间,手动输入10个数(乱序),采用简单选择排序,输出排序后的结果。
注意:main函数在main.c 输入函数,输出函数,排序函数,在sort.c
#include<myhead.h>
int sr(int *a,int N)
{
printf("请输入10个数:");
for(int i=0;i<N;i++)
{
scanf("%d",a+i);
}
return 0;
}
void sc(int *a,int N)
{
for(int i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
putchar(10);
}
void px(int *a,int N)
{
int z=0,min,p=0;
for(int j=0;j<N;j++)
{
min=j;
for(z=j;z<N;z++)
{
if(a[min]>a[z])
{
min=z;
}
}
if(min!=j)
{
p=a[j];
a[j]=a[min];
a[min]=p;
}
}
for(int x=0;x<N;x++)
{
printf("%d\t",a[x]);
}
putchar(10);
}
#include<myhead.h>
#include"main.h"
#define N 10
int main(int argc,const char*argv[])
{
int *p=malloc(sizeof(int)*N);
sr(p,N);
sc(p,N);
px(p,N);
free(p);
return 0;
}
#ifndef _MAIN_H
#define _MAIN_H
int sr(int *,int);
void sc(int *,int);
void px(int *,int);
#endif