[c语言程序设计实验报告]五、 课程设计小结心得体会 1设计思想 1)、设定一个一维数组,可先按员工序号设定每位员工的工资 2)、利用While语句和Prinft语句完成用户菜单的设计 功能为:第1项 设为员工编号...+阅读
c语言先排序后折半查找程序的实验报告
1实验目的:熟练掌握一维数组,二维数组的定义,初始化和输入输出方法;熟练掌握与数组有关的常用算法(如查找,排序等)。
2实验内容:设定一个整形数组存放20个元素,用直接赋值的方法在程序中初始化该数组。先对这些无序的数据进行排序,然后采用折半查找,把要寻找的数的位置输出出来。
3算法描述流程图
源程序:#include
void main()
{int k,s,b,i,j,m,n,a[20]={12,9,16,21,6,11,19,4,8,20,15,2,5,18,14,7,3,10,13,17};
for(s=0;s<20;s++)
{
for(i=s+1;i<20;i++)
{
if(a[s]>a[i])
{
j=a[s];
a[s]=a[i];
a[i]=j;
}
}
}
scanf("%d",&b);
m=0;
n=19;
while(m<=n)
{
k=(m+n)/2;
if(b==a[k])
{
printf("FOUND\n");
printf("%d\n",k+1);
break;
}
else
{
if(b
n=k-1; else m=k+1; } if(m>n) printf("NO FOUND"); } } 5测试数据:3,5, 20,30 6运行结果:FOUND 2;FOUND 4;FOUND 19 ;NO FOUND 7出现问题及解决方法:编译时出错,修改源程序,直到没有错误为止 8实验心得:通过折半查找,可以实现对数组数据的处理,并且增加了查找速度 折半法查找只是用于一种情况,就是数据是按顺序排列的 也就是说数据时排好序的,要不然没法用这个办法查找 算法分三步,一步是判断要查找的数是否在这些数据当中,因为是顺序的,所以判断两端 如果不在,直接break就可以,没有必要查找了 第二步是判断是否是两个端点,要是两个端点的一个,那也不用查找了 第三步就是循环查找,两个指针也可以,用数组下标也可以 这样判断如ab两个指针式只想头尾,那么判断第三个指针,也就是(a+b)/2是否是要找的数据,是的话跳出循环,不是判断(a+b)/2和a b的大小,吧中间指针赋值给a或者b,循环吧 如果a-b==1了还没有查找到,那么这个数就不在这些数据当中,如果中间指针是要查找的数据,那么就跳出吧 拿15个静态常量做的测试 #include//要先写 第一个元素的值为0的排除子函数,没写。 int arrange(int x,int a[],int low,int high) { int flag=0; int mid =(low+high)/2; if((high-low)==0 || (high - low) == 1) //二分法排序的最后两种可能 { if(a[mid]==x) return x; else return 0; } int left; int right; left=arrange(x,a,low,mid); //向左 right=arrange(x,a,mid,high); //向右 if(left||right) //整合,有一个非0就是找到值了 return a[left+right]; else return 0; } int main() { int a[]={-8,-5,-2,-1,2,5,8,10,18,21,23,7,9,1,13}; int result,x; printf(" {12,14,15,16,2,5,8,10,18,21,23,7,9,1,13} \n"); printf("input the number you want:"); scanf("%d",&x); result=arrange(x,a,1,15); if( result != 0) printf("%d\n",result); else printf("there is no number!\n"); return 0; } 延伸阅读: C语言实验报告总结你只需要按那个模版就行,那些内容就改成你的作业 班级: 学号: 姓名: 实验9 指针 一、实验目的 (1)掌握指针概念,并定义与使用它。 (2)使用数组的指针和指向数组的指针变量。 (3)... c语言函数实验报告#include<stdio.h> int main() { int sum(int); int factorial(int); int n,s; long int p; printf("请输入n值:\n"); scanf("%d",&n); s=sum(n); p=factorial(n); printf("1+2+3+..... c语言程序实验报告晕报告也要人教啊,我教你写 一、程序主要功能∶ 某校规定,学习成绩超过全班平均成绩的%10者得第一等奖,学习成绩超过全班平均成绩的%5者得第二等奖,某班有30名学生,请编写一个c语... 谁有C语言课程程序设计实验报告??实 验 报 告 一 课 程 C语言程序设计 实验项目 C程序设计初步 成 绩 专业班级 学 号 指导教师 张耀文 姓 名 序 号 实验日期 一【实验目的】 1. 了解使用VC++6.0的开发环境;... C语言程序设计课程实验报告#incude <stdio.h> int main() { int en_num=0,ma_num=0,blank_num,other_num; char ch; while((ch=getchar()) != '#'){ if(ch>='0' & ch<='9') ma_num++; else if((ch>='a... c语言程序实验报告范文晕报告也要人教啊,我教你写 一、程序主要功能∶ 某校规定,学习成绩超过全班平均成绩的%10者得第一等奖,学习成绩超过全班平均成绩的%5者得第二等奖,某班有30名学生,请编写一个c语... C语言程序设计实验报告完整版可追加分举手之劳,帮你写了。 这里设定姓名长度不超过20字符。每个项目结束时,将其编号、类型符(区分取前3名还是前5名)输入,并按名次顺序输入运动员姓名、学校和成绩。程序已做改动,增加... c语言程序设计上机实验#includeusing namespace std; int main(){ int day; int timeOfMon[] = {31,29,31,30,31,30,31,31,30,31,30,31}; printf("2012年日历 ==========\n"); int sumOfMon[13]; su... 数值分析上机实验C语言程序求助#include <stdio.h> #include <math.h> int main(int argc,char* argv[]) { double x1 = 1.9; double x0 = 0.1; double temp = 0.0; while(fabs(x0-x1) > 0.00001) { x0 =...c语言如何用折半查找法查找并统计人数啊
求C语言折半查找法代码