c语言程序设计实验报告.doc_第1页
c语言程序设计实验报告.doc_第2页
c语言程序设计实验报告.doc_第3页
c语言程序设计实验报告.doc_第4页
c语言程序设计实验报告.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告专业班级: 学号: 姓名: 课程名称:C语言程序设计1.实验内容:编写函数,在一个元素已按由小到大的次序排列的整型数组中插入一个整数,要求插入后的数组元素仍是有序的。2.实验方案(程序设计说明)编写的函数中,利用二分检索法,找到元素应该被插入的位置并插入元素,再在主函数中调用该函数流程图见第4、5页3.实验步骤或程序(经调试后正确的源程序)#include #define N 50void fun(int* a,int n,int x) /*参数为数组、元素个数和插入的值*/if(x=an-1) /*要插入的元素大于数组中所有元素*/an=x;return;if(x=0;-j) /*把要插入元素后的所有元素向后移动一位,在插入要插入的元素*/aj+1=aj;a0=x;return; /*要插入的元素在数组之中的情况,用二分检索法*/int k=0,m=n-1,mid; while(k=amid-1&x=mid;-i) ai+1=ai;amid=x;return;elseif(x=amid&x=amid+1;-i) ai+1=ai;amid+1=x;return;if(amidx)m=mid-1;elsek=mid+1;void main()int aN,u,v,P;printf(输入一个按有小到大顺序排列的数组的元素个数);scanf(%d,&u);printf(输入要插入的值);scanf(%d,&v);printf(按由小到大的顺序输入数组元素);for(int i=0;iu;+i)scanf(%d,a+i);printf(输入的数组为:);for(int j=0;ju;+j)printf( %d,aj);fun(a,u,v);printf(n插入v后的数组为:);for(int k=0;ku+1;+k)printf( %d,ak);4.程序运行结果5.出现的问题及解决方法问题:程序运行后,在需要插入元素的地方,插入了不止一个需要被插入的元素解决办法:由于插入一个元素后,循环可能并未终止,就导致下一次有在该处插入了一个元素,所以在插入完元素之后,用return语句直接退出被调用函数即可。6.实验总结用计算机编程语言解决问题,首先我们需要设计算法,设计算法我们可以利用流程图,这样可以是算法更清晰,更有条理。在本实验中,我采用了二分检索法在数组中查找被插入的元素的位置,二分检索法是一个非常典型的计算机算法,需要我们熟练掌握。还有在本试验中,插入一个元素后,仍保持数组有序的算法需要注意,我们需要把需要插入元素位置之后的所有元素都向后移动一位,以空出一个位置来插入需要被插入的元素。Yamid=vNYYNYNYNYNYNYNNYau=vNY定义数组aN和变量u,v,p开始int i=0i=au-1输入u输入vv=0aj+1=aj-ja0=vint k=0ku+1+k输出akint p=0,q=u-1,midp=amid-1&v=midai+1=ai, -i结束输入aiint k=0k=amid+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论