昆明冶金高等专科学校。
题目:利用c语言编写二分查找程序。
学院:计算机信息学院。
班级:网络 0 9 1 2 班。
姓名:x x x
学号:0 9 0 0 0 0 2 2 2 5
指导老师:邱发林。
目录。摘要 ii
1设计的内容介绍 1
2设计的相关专业知识、技术说明 2
2.1 if语句 2
2.2 函数调用 2
2.3 数组指针 2
2.4 main函数 2
2.5 outtextxy 2
在指定位置显示一字符串 2
2.6 冒泡排序 2
3完成的步骤和实现效果 4
3.1 main函数 4
3.2 init(int a int *x)初始化函数 4
3.3 sort(int a,int n)函数 4
3.4 put(int a,int n)函数 5
3.5 画箭头函数 5
3.6 擦除函数 6
3.7 用二分检索法查找过程 6
3.8 void close() 7
4关键**及注释 8
5设计总结 11
致谢 12参考文献 13
本文采用了if语句、main、函数调用、数组指针、冒泡排序等知识,实现了c语言版二分查找这一程序的编写。
关键字:if语句、main、函数调用、数组指针、冒泡排序。
二分查找法,它是一种效率较高的查找方法,它充分利用了元素间的次序关系,它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。
if语句是指c语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用bool型变量进行存储。
函数调用的一般形式前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。 c语言中,函数调用的一般形式为: 函数名(实际参数表) 对无参函数调用时则无实际参数表。
数组指针的定义在c语言中,数组名被当做是一个指针来处理,其指向数组首元素。亦即被当做指针处理的数组名被成为数组指针。 例如,定义了一个长度为10的一维整型数组num[10],则num为该数组的数组指针。
要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现。在c程序的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的**,并且可以供其它**调用。 一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main 函数”,也就是“主函数”,在主函数中,根据情况,你可能还需要调用子函数。
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为o(n^2),虽然不及堆排序、快速排序的o(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出**;2.
具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数。
main()
int a[n],x;
init(a,&x);
initializegraph();
put(a,x);
find(a,x,n);
close();
loadlogo();
exit(0);
void init(int a,int *x)
int i;
srand( (unsigned)time( null )
for( i = 0; i < n;i++
a[i]=rand()%100+1;
sort(a,n);
for( i = 0; i < n;i++
printf("%d ",a[i]);
printf("shu ru yao cha zhao de shu ju:");
scanf("%d",x);
void sort(int a,int n)
int tmp,i,j;
for(i=n-1;i>0;i--)
for(j=0;j if(a[j]>a[j+1])
void put(int x,int y)
char *driver, *modestrings for driver and mode */
int i;
char *num;
mainwindow( "er fen cha zhao cheng xu" )
settextjustify( left_text, top_text );
driver = getdrivername();
mode = getmodename(graphmode); get current setting
setcolor(green); 设字体绿色*/
settextstyle(0,0,2); 设置字体的大小*/
for(i=0;i
sprintf(num,"%d",y);
settextstyle(0,0,4);
drawmat(cha64k, 64,180, 10,green);
drawmat(zhao64k,64,270, 10, green);/设置字符串find的x、y坐标*/
outtextxy(370,30,num);
for(i=0;i<3;i++)
for(i=0;i<2;i++)
for(i=0;i<3;i++)
for(i=0;i<2;i++)
for(i=0;i<6;i++)
drawmat(an16s+i*32, 16,245+i*23, 420,white);
void mid(int n)
setcolor(white);
line(25+n*50,120,25+n*50,80);/在2点间画一条直线(一个点包含x,y坐标)*/
line(25+n*50,120,20+n*50,110);
line(25+n*50,120,30+n*50,110);
void clr(int y)
setfillstyle(solid_fill,0); 每次演示的时候先将下面显示的文字去除掉*/
bar(0,y+50,640,y-50); 这里是矩形的方式*/
void find(int a,int y,int n)
int low,high,mid,i;
char str1[5],str2[5];
sprintf(str1,"%d",y);/把格式化的数据y写入str1字符串*/
low=0;
high=n-1;
setcolor(yellow);
settextstyle(0,0,4);
drawmat(cha64k, 64,180, 10, yellow);
drawmat(zhao64k, 64,270, 10, yellow);
outtextxy(370,30,str1);
while(low<=high)
clr(300);
clr(80); 这里的三个clr是为了把屏幕上的箭头和文字删了*/
clr(230);
drawmat(cha64k, 64,180, 10, yellow);
drawmat(zhao64k, 64,270, 10, yellow);
settextstyle(0,0,4);
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...