1:在堆区申请10个连续空间,手动输入10个数(递增),输入关键字key,采用折半查找方式查找关键字是否存在,存在给出位置,不存在,输出查找失败。
注意:main函数在main.c 输入函数,输出函数,查找函数,在find.c
main函数代码:
#include <myhead.h>
#include "find.h"
#define MAX 10
int main(int argc, const char *argv[])
{
/*
*/
int *p = malloc(sizeof(int)*MAX);
myscanf(p);
myprintf(p);
int key;
printf("请输入要查找的关键字:");
scanf("%d",&key);
myfind(p,key);
return 0;
}
find.c代码:
#include <myhead.h>
#define MAX 10
int myscanf(int *p)
{
int i;
printf("请输入10个数组元素:");
for(i =0;i<MAX;i++)
{
scanf("%d",p+i);
}
return 0;
}
int myprintf(int *p)
{
int i;
printf("\n数组内容:\n");
for(i =0;i<MAX;i++)
{
printf("%d\t",*(p+i));
}
return 0;
}
void myfind(int *p,int key)
{
int j=MAX-1,mid;
int sub = -1;
int i=0;
while(i<=j)
{
mid = (i+j)/2;
if(key>p[mid])
{
i = mid+1;
}
else if(key<p[mid])
{
j = mid-1;
}
else
{
sub =mid;
break;
}
}
if(sub==-1)
{
printf("查找失败\n");
}
else
{
printf("查找成功,该关键字在第%d个位置\n",sub+1);
}
}
find.h代码:
#ifndef __FIND_H__
#define __FIND_H__
int myscanf(int *p);
int myprintf(int *p);
void myfind(int *p,int key);
#endif
2:在堆区申请10个连续空间,手动输入10个数(乱序),采用简单选择排序,输出排序后的结果。
注意:main函数在main.c 输入函数,输出函数,排序函数,在sort.c
main函数代码:
#include <myhead.h>
#include "sort.h"
#define MAX 10
int main(int argc, const char *argv[])
{
/*
*/
int *p = malloc(sizeof(int)*MAX);
input_s(p);
ouput_s(p);
sort_s(p);
printf("\n排序后的结果:\n");
ouput_s(p);
p=NULL;
return 0;
}
sort.c代码:
#include <myhead.h>
#define MAX 10
int input_s(int *p)
{
int i;
printf("请输入10个元素:\n");
for(i = 0;i<MAX;i++)
{
scanf("%d",p+i);
}
return 0;
}
int ouput_s(int *p)
{
int i;
for(i = 0;i<MAX;i++)
{
printf("%d\t",*(p+i));
}
return 0;
}
int sort_s(int *p)
{
int i,j,min,t;
for(i = 0;i<MAX-1;i++)
{
min = i;
for(j = i+1;j<MAX;j++)
{
if(p[j]<p[min])
{
min = j;
}
}
if(i!=min)
{
t = p[i];
p[i] = p[min];
p[min] = t;
}
}
}
sort.h代码:
#ifndef __SORT_H__
#define __SORT_H__
int input_s(int *p);
int ouput_s(int *p);
int sort_s(int *p);
#endif
标签:__,10,8.5,复习,int,sort,key,今日,main
From: https://blog.csdn.net/qq_62099195/article/details/140934364