计算机c语言例题.docVIP

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

插入排序 引例:写一个函数,将一个整型数x插入到由小到大排列的整型数组a[0]~a[N-1]中,使得插入元素后的数组a[0]~a[N]保持升序。 void insert(int a[N+1],int x) { ? ?int i = N - 1; ? ?while (i = 0 a[i] x) { ? ?? ?a[i+1] = a[i]; ? ?? ?i--; ? ?} ? ?a[i+1] = x; } 算法要点:将升序数组中大于x的所有元素向后挪动一个下标位置;循环退出时,下标i+1位置为一空位置,正好是正确插入元素x的位置. 插入排序算法: N元数组a[0]~a[N-1]由小到大排序: 第1步:将a[1]插入a[0]~a[1]中,使得a[0]~a[1]升序; 第2步:将a[2]插入a[0]~a[2]中,使得a[0]~a[2]升序; 第3步:将a[3]插入a[0]~a[3]中,使得a[0]~a[3]升序;  … 第i步:将a[i]插入a[0]~a[i]中,使得a[0]~a[i]升序; … 第N-1步:将a[N-1]插入a[0]~a[N-1]中,使得a[0]~a[N-1]升序; 算法停止。 思考:由大到小排序算法如何改动? #include stdio.h #define N 10 void InsSort(int a[N]) { /*N元数组插入排序*/ ? ?int i,j,x; ? ?for(i = 1;i N;i++){ ? ?? ?x = a[i]; ? ?? ?j = i - 1; ? ?? ?while(j = 0 a[j] x) { ? ?? ?? ?a[j+1] = a[j]; ? ?? ?? ?j--; ? ?? ?} ? ?? ?a[j+1] = x; ? ?} } void main() { ? ?int a[N],i; ? ?for (i = 0;i N;i++) ? ?? ?scanf(%d,a[i]); ? ?InsSort(a); ? ?for (i = 0;i N;i++) ? ?? ?printf(%6d,a[i]); } 11、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。 主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。 #includeconio.h #includestdio.h void main() { int i,k,a[12]={0}; //a[0] for no use void sub1(int b[]),sub2(int b[],int k); clrscr(); printf(Please input 10 numbers:); for(i=1;i=10;i++) scanf(%d,a[i]); getchar(); sub1(a); for(i=1;i=10;i++) printf(\na[%d]=%d\n,i,a[i]); printf(\n\nplease input a number to be inserted into the array:); scanf(%d,k); sub2(a,k); for(i=1;i=11;i++) printf(\na[%d]=%d\n,i,a[i]); puts(\nAny key to exit!); getch(); } void sub1(b) int b[]; { int i,j,t; for (i=1;i10;i++) //the first one is always the smallest for(j=i;j=10;j++) if (b[i]b[j]) { t=b[i]; b[i]=b[j]; b[j]=t; } } void sub2(int b[],int k) { int i; for(i=10;i=1;i--) { if(kb[i]) b[i+1]=b[i]; else { b[i+1]=k; break; } } } 16、某班有5个学生,三门课。分别编写3个函数实现以下要求: (1) 求各门课的平均分; (2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩; (3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名 主程序输入5个学生的成绩,然后调用上述函数输出结果。 #define SNUM 5 /*student number*/ #define CNUM 3 /*co

文档评论(0)

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

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

1亿VIP精品文档

相关文档