c语言程序设计实验汇报.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言程序设计实验汇报

实验报告 专业班级: 学号: 姓名: 课程名称:C语言程序设计 1.实验内容: 编写函数,在一个元素已按由小到大的次序排列的整型数组中插入一个整数,要求插入后的数组元素仍是有序的。 2.实验方案(程序设计说明) 编写的函数中,利用二分检索法,找到元素应该被插入的位置并插入元素,再在主函数中调用该函数 流程图见第4、5页 3.实验步骤或程序(经调试正确的源程序 #include stdio.h #define N 50 void fun(int* a,int n,int x) /*参数为数组、元素个数和插入的值*/ { if(x=a[n-1]) /*要插入的元素大于数组中所有元素*/ { a[n]=x; return; } if(x=a[0]) /*要插入的元素小于数组中所有元素*/ { for(int j=n-1;j=0;--j) /*把要插入元素后的所有元素向后移动一位,在插入要插入的元素*/ { a[j+1]=a[j]; } a[0]=x; return; } /*要插入的元素在数组之中的情况,用二分检索法*/ int k=0,m=n-1,mid; while(k=m) { mid=(k+m)/2; if(x=a[mid-1]x=a[mid]) { for(int i=n-1;i=mid;--i) { a[i+1]=a[i]; } a[mid]=x; return; } else if(x=a[mid]x=a[mid+1]) { for(int i=n-1;i=a[mid+1];--i) { a[i+1]=a[i]; } a[mid+1]=x; return; } if(a[mid]x) m=mid-1; else k=mid+1; } } void main() { int a[N],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,a[j]); } fun(a,u,v); printf(\n插入v后的数组为:); for(int k=0;ku+1;++k) { printf( %d,a[k]); } } 4.程序运行 5.出现的问题及解决方法 ,更有条理。在本实验中,我采用了二分检索法在数组中查找被插入的元素的位置,二分检索法是一个非常典型的计算机算法,需要我们熟练掌握。还有在本试验中,插入一个元素后,仍保持数组有序的算法需要注意,我们需要把需要插入元素位置之后的所有元素都向后移动一位,以空出一个位置来插入需要被插入的元素。 1 Y a[mid]=v N Y Y N Y N Y N Y N Y N Y N N Y a[u]=v N Y 定义数组a[N]和变量u,v,p 开始 int i=0 iu ++i v=a[u-1] 输入u 输入v v=a[0] int j=u-1 j=0 a[j+1]=a[j] --j a[0]=v int k=0 ku+1 ++k 输出a[k] int p=0,q=u-1,mid p=q mid=(p+q)/2 v=a[mid-1]v=a[mid] int i=u-1 i=mid a[i+1]=a[i], --i 结束 输入a[i] int k=0 ku+1 ++k 输出a[k] 结束 结束 Y N Y N Y N N Y a

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档