1:在堆区申请10个连续空间,手动输入10个数(递增),输入关键字key,采用折半查找方式查找关键字是否存在,存在给出位置,不存在,输出查找失败。
注意:main函数在main.c 输入函数,输出函数,查找函数,在find.c
main.c
#include "find.h"
#define MAX 10
int main(int argc,const char * argv[])
{
int *p = malloc(sizeof(int)*MAX);
input(p);
output(p);
find(p);
free(p);
return 0;
}
find.c
#include "find.h"
void input(int *p)
{
int i;
printf("请输入十个元素:");
for(i = 0;i<10;i++)
{
scanf("%d",p+i);
}
}
void output(int *p)
{
int i;
for(i = 0;i<10;i++)
{
printf("%-3d",*(p+i));
}
putchar(10);
}
void find(int *p)
{
int key,sub = -1;
printf("请输入要查找的关键字:");
scanf("%d",&key);
int j = 10-1,mid;
int i = 0;
while(i <= j)
{
mid = (i + j)/2;
if(key < p[mid])
{
j = mid - 1;
}
else if(key > p[mid])
{
j = mid + 1;
}
else if(key = p[mid])
{
sub = mid;
break;
}
}
if(sub == -1)
{
printf("查找失败\n");
}
else
{
printf("该关键字在第%d个位置\n",sub + 1);
}
}
find.h
#ifndef __FIND_H__
#define __FIND_H__
#include <stdlib.h>
void input(int *p);
void output(int *p);
void find(int *p);
#endif
2:在堆区申请10个连续空间,手动输入10个数(乱序),采用简单选择排序,输出排序后的结果。
注意:main函数在main.c 输入函数,输出函数,排序函数,在sort.c
main1.c
#include "sort.h"
int main(int argc,const char * argv[])
{
int *p = malloc(sizeof(int)*10);
input(p);
output(p);
sort(p);
output(p);
free(p);
return 0;
}
sort.c
#include "sort.h"
void input(int *p)
{
int i;
printf("请输入十个元素:");
for(i = 0;i<10;i++)
{
scanf("%d",p+i);
}
}
void output(int *p)
{
int i;
for(i = 0;i<10;i++)
{
printf("%-3d",*(p+i));
}
putchar(10);
}
void sort(int *p)
{
int i,j,min,t;
for(i = 0;i<10-1;i++)
{
min = i;
for(j = i + 1;j<10;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__
#include <stdlib.h>
void input(int *p);
void output(int *p);
void sort(int *p);
#endif
3721

被折叠的 条评论
为什么被折叠?



