当前位置:文档之家› c语言作业(数组&折半查找法)

c语言作业(数组&折半查找法)

C语言程序设计实验报告
1实验目的
(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的常用方法(如查找、排序等)。

2实验内容
编程实现“折半查找”的过程。

要求
1.设定一个整型数组存放20个元素,采用直接赋值的方法在程序之初始化该
数组;
2.用scanf函数输入一个要找的数值;
3.对查找的结果给出相应的说明,如果找到该数值,则输出“Found”信息,
并给出该数是数组中的第几个元素。

如果该数值不在数组中,则输出“Not
found”信息;
4.修改程序,设定输入的数据是无序的,则先要对这些无序的数据进行排序,
然后在采用“半折查找”。

4源程序
#include<stdio.h>
main()
{
int a[20],i,t,j,b,q,d,c,min=0,max=19,p=10,s=10;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<19;i++)
{
for(j=0;j<19;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<20;i++)
printf("%d",a[i]);
printf("请输入要查找的数");
scanf ("%d",&b);
for (q=1;q<=10;q++)
if (max-min!=0)
{
if(b==a[s])
{
d=1;
break;
}
else
{
if(b>a[s])
{
c=s;
s=max-(max-min)/2;
min=c;
d=0;
}
else
c=s;
s=(max-min)/2+min;
max=c;
d=0;
}
}
if(d==1)
{
s=s+1;
printf("Found 在第%d\n位",s);
}
else
printf("not found\n");
}
5测试数据
20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
6运行结果
7出现问题及解决方法
这个实验太难了,出现各种问题,最后大家齐心协力完成了任务,主要是冒泡法的应用及折半查找法的应用比较困难。

8实验心得
1.通过实验我对c语言的编程语言更加熟悉,加快编程输入语言的速度。

2.掌握一维数组、二维数组的定义、初始化和输入/输出方法;掌握字符数组和字符串函数的使用;掌握与数组有关的常用算法(如查找、排序)。

3.再次让我明白做实验时要细心,认真检查。

相关主题