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