学 院
*****************
班 级
**********
学 号
***********
姓 名
********
Email:wangqian5115@163.com
2
目录
1 摘要...................................................................................................3
1.1 设计题目....................................................................................3
1.2 设计内容....................................................................................3
1.3 开发工具....................................................................................3
1.4 应用平台....................................................................................3
2 详细设计...........................................................................................3
2.1 程序结构....................................................................................3
2.2 主要功能....................................................................................3
2.3 函数实现....................................................................................3
2.4 开发日志....................................................................................4
3 程序调试及运行...............................................................................4
3.1 程序运行结果............................................................................4
3.2 程序使用说明............................................................................4
3.3 程序开发总结............................................................................4
4 附件(源程序)...............................................................................4
Email:wangqian5115@163.com
3
1 摘要
1.1 设计题目
折半法查找演示程序
1.2 设计内容
本程序是一个演示折半查找算法的演示程序。由用户输入查找的数据表列和查找的数据,系统在将数
表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间
数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。
1.3 开发工具
Visual C++ 6.0 和 Win32。
Email:wangqian5115@163.com
4
1.4 应用平台
Windows 2000/XP/Vista 32 位
2 详细设计
2.1 程序结构
程序功能模块:
本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选
择模块。各模块的主要功能如下:
程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作
的相关说明信息。
此部分模块主函数源代码如下:
int a[N];
/*存储要查找的数表,用户输入*/
int i,n,num,count;
/*count 为折半次数计数器,n 为数表数据个数,num 存储所查数据*/
int top,bottom,mid;
char c;
/*存储选择函数中的输入的字符 y 或 n*/
int flag=1;
/*折半法循环标志变量*/
int loc=-1;
/*存储所查找数据位置*/
double k=0;
p_s(76);puts("\n");
/*引用 p_s 函数,打出一行'*'*/(p_s 函数位于 print_star.cpp 文件中,参见下文)
printf("**** 欢 **** 迎 **** 使 **** 用 **** 折 **** 半 **** 查 **** 找 **** 法 **** 演 **** 示 **** 器
****\n");
puts("\n");
/*程序欢迎语*/
p_s(13);
printf("制作者:***************** ");
/*作者信息*/
p_s(4);
printf("Email:************************ ");
/*电子邮件*/
Email:wangqian5115@163.com
5
p_s(11);puts("\n");
p_s(76);puts("\n");
/*再次引用 p_s 函数,程序说明部分结束*/
附:print_star.cpp 文件源代码
#include<stdio.h>
void p_s(int k)
{
int i;
for(i=1;i<=k;i++)
/*连续输出 ka 个'*'*/
printf("*");
}
输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。并通过一个 judge 函数
判断输入是否合法,若不合法提醒用户继续输入。
此部分模块主函数源代码如下:
printf("请输入你想要在其中查找数据的数据表列的数据个数(1--50):\n");//
scanf("%d",&n);
n=judge(n);
/*引用 judge 函数,判断 n 值是否合法*/ (judge 函数位于 judge.cpp 文件,参见下文)
printf("请输入你要在其中查找数据的数据表列(%d 个数据 用空格间隔 大小排序不限):\n",n);
/*输入要查找的 n 个数据*/
for(i=0;i<=n-1;i++)
scanf("%d",&a[i]);
/*将要查找的 n 个数据存入数组 a*/
sort(a,n);
/*引用 sort 函数,将数表排序*/
printf("\n 输出表列(从小到大排列)\n");
附:judge.cpp 文件源代码
#include <stdio.h>
int judge(int n2)
/*函数作用:判断 n2 的值是否在 1—50 范围内*/
{ int n3;
while(n2<1 || n2>50)
{
printf("你输入的数不正确,请重新输入。\n");
printf("请输入你想要在其中查找数据的数据表列的数据个数(1--50):\n");
/*不合法重新输入并传递给主函数*/
scanf("%d",&n3);
return n3;