作业:
1:在堆区申请10个连续空间,手动输入10个数(递增),输入关键字key,采用折半查找方式查找关键字是否存在,存在给出位置,不存在,输出查找失败。
注意:main函数在main.c 输入函数,输出函数,查找函数,在find.c
main.c代码
#include<myhead.h>
#include"func.h"
int main() {
int *p=malloc(sizeof(int)*10);
input(p);
print1(p);
int key=0;
printf("请输入要查找的数:");
scanf("%d",&key);
search(p,10,key);
free(p);
return 0;
}
find.c代码
#include<myhead.h>
#include "func.h"
//函数功能
void input(int *p){
int i=0;
printf("请输入10个数:");
for(i=0;i<10;i++)
{
scanf("%d",p+i);
}
}
void print1(int *p){
int i=0;
printf("数组中的元素分别是:");
for(i=0;i<10;i++)
{
printf("%d\t",*(p+i));
}
putchar(10);
}
void search(int *p,int l,int k){
int j=l-1,mid=0;
int i=0;
int sub=-1;
while(i<=j){
mid=(i+j)/2;
if(k>p[mid]){
i=mid+1;
}else if(k<p[mid]){
j=mid-1;
}else{
sub=mid;
break;
}
}
if(sub==-1){
printf("查找失败\n");
}else{
printf("查找成功,位置在第%d个\n",sub+1);
}
}
func.h代码
#ifndef __FUNC_H__
#define __FUNC_H__
//函数声明
void input(int *p);
void print1(int *p);
void search(int *p,int l,int k);
#endif
运行结果:
2:在堆区申请10个连续空间,手动输入10个数(乱序),采用简单选择排序,输出排序后的结果。
注意:main函数在main.c 输入函数,输出函数,排序函数,在sort.c
main.c代码
#include<myhead.h>
#include"func.h"
int main() {
int *p=malloc(sizeof(int)*10);
input(p);
printf("排序前:");
print1(p);
sort(p,10);
printf("排序后:");
print1(p);
free(p);
return 0;
}
sort.c代码
#include<myhead.h>
#include "func.h"
//函数功能
void input(int *p){
int i=0;
printf("请输入10个数:");
for(i=0;i<10;i++)
{
scanf("%d",p+i);
}
}
void print1(int *p){
int i=0;
for(i=0;i<10;i++)
{
printf("%d\t",*(p+i));
}
putchar(10);
}
void sort(int *p,int l){
int i=0,j=0,maxi=0;
for(i=0;i<l-1;i++)
{
maxi=i;
for(j=i+1;j<l;j++)
{
if(p[maxi]<p[j])
{
maxi=j;
}
}
if(maxi!=i){
int temp=p[i];
p[i]=p[maxi];
p[maxi]=temp;
}
}
}
func.h代码
#ifndef __FUNC_H__
#define __FUNC_H__
//函数声明
void input(int *p);
void print1(int *p);
void sort(int *p,int l);
#endif
运行结果: