1、1.1 设计题目 31.2 设计内容 31.3 开发工具 31.4 应用平台 32 详细设计 32.1 程序结构 32.2 主要功能 32.3 函数实现 32.4 开发日志 43 程序调试及运行 43.1 程序运行结果 43.2 程序使用说明 43.3 程序开发总结 44 附件(源程序) 41 摘要1.1 设计题目查找算法1.2 设计内容本程序建立了一个CZSF.cbp的C程序工程。具体内容为如下:#include /*预处理命令*/stdlib.h#include kspx.h /*自定义的头文件,包含快速排序函数kspx的相关信息*/int main() void search(int a
2、,int b,int n); /*对能够实现程序查找功能的search函数进行声明*/int a50,b,n,i; /*定义整形数组和变量*/ printf(input the sum of the numbers:); scanf(%d,&n); /*输入所要查找得数的范围*/ printf(input %d numbers:,n); for(i=0;in;i+) scanf(ai); /*依次输入各个数,并存储到数组中去*/printf(the need number:b); /*输入所要查找得数*/ kspx(a,n); /*调用快速排序函数对该组数进行排序*/ search(a,b,n
3、); /*利用查找函数进行查找*/ return 0;void search(int a,int b,int n) /*search函数的定义*/ int x1=0,x2=n-1,mid,j=0; /*定义变量想,x1,x2,mid和j*/ while(x1=x2) /*循环条件,x1和x2分别为区间左右端点*/ mid=(x1+x2)/2; /*mid为区间中值*/ if(bamid) x1=mid+1; /* 依据查找数b和amid 的大小关系确定新区间*/ else,+mid); /*输出b所在该顺序数组中的位置*/ j=1; break; /*发现b,跳出循环*/ if(j=0) pr
4、intf(no found! /*判断b是否在该组数中*/1.3 开发工具Code Blocks 10.051.4 应用平台 Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构 该程序功能的实现是有三个函数来共同完成的,其中main函数是系统主调函数,为顺序结构,其余两个函数在main函数中被调用。kspx函数为排序函数,不属于报告范围。Search函数为查找函数,它主要是由一个当型循环体内部穿插选择语句所构成的。 main函数中的局部变量n和b通过值传递的方式传给search函数中的形参变量n和b,指针常量a通过地址传递的方式传给search函数中的指针变量a,这
5、样search函数就可以调用主函数中的数值了。函数调用结束后形参变量释放,并得到返回值传给主调函数。2.2 主要功能该程序的主要功能是判断一组数中是否含有某一已知变量,若有,就对该组数进行顺序排列,并输出该变量在数组中的位置,若没有,就输出“no found!”。功能的实现主要是由kspx函数和search函数来完成的。2.3 函数实现本程序的主要功能,即查找,是由search函数来实现的,以下详细介绍该函数的算法和结构:Search函数的功能是调用主函数中的数组a和局部变量b,n.进而利用折半查找算法进行数据查找的。其具体内容如下:void search(int a,int b,int n)
6、=x2) 它的算法是这样的:对于一组已经按从小到大顺序排列的数组a,取其元素个数为n,x1和x2分别为待查找数字b所在区间的左端点和右端点,mid=(x1+x2)/2为区间中点。 如果 bamid 就 x1=mid+1改变区间右端点,缩小区间长度,进入下一层循环。 如果b=amid 就 printf( 把b所在的位置输出,并 j=1 跳出循环。 判断j的值 确定该数组中是否存在b值 没有就输出“no found!”结束程序。它的结构是这样的:利用当型循环语句while,执行上述算法的 部分,循环条件是x1=x2, 部分是靠选择语句if 有机组合到一起的。循环结束后执行算法第四步,并最终结束函数
7、的调用。main函数整体是顺序结构。2.4 开发日志我最初是想在利用折半查找算法的基础上,通过对search函数的直接递归调用来实现其查找功能的,不过没有调试正确,所以利用当型循环语句,外加循环终止条件进行控制,这表明C程序许多地方都是相通的,同一种算法可能有多种不同的C语句表达形式,只是其空间复杂性和时间复杂性不一样而已。C程序的很多地方,我还不能灵活的加以应用,这就需要我沉下心来,仔细分析,多上机,多做例题,从而真正掌握这门描述抽象事物的基本工具。3 程序调试及运行3.1 程序运行结果上面所显示的是程序某一次运行所得到的结果图,如图所示,第一行输入所查找数的范围,即数组的大小,第二行依次输
8、入数各个数组元素,第三行输入所要查找的数,回车后,即得到第五行,查询的结果。各行均有提示,按要求输入即可。3.2 程序使用说明程序的主要作用:判断一组数中是否含有某一已知变量,若有,就对该组数进行顺序排列,并输出该变量在数组中的位置,若没有,就输出“no found!程序的使用方法:在Code Blocks 10.05下运行C源程序,执行.exe程序,并按提示输入相关数据,即可运行得到最终结果。3.3 程序开发总结C程序大作业能够将简单的算法扩展为实现一定作用的应用程序,从而锻炼了一名程序员在多个方面的能力,如程序结构的组成,相关函数的调用,函数参数的传递,循环体和选择语句的合理构成等等。这对一名初涉C程序的新手而言,无疑是有很重要的意义的!4 附件(源程序) int a50,b,n,i; return 0;其中头文件kspx.h的具体内容如下:#ifndef ZBPX_H_INCLUDED#define ZBPX_H_INCLUDEDvoid kspx(int a,int n) int i,j,k,t;n-1;i+) k=i; for(j=i+1;jaj) k=j; else continue; if(k!=i) t=ai;ai=ak;ak=t;#endif / ZBPX_H_INCLUDED
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1