首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序给出如下. 请勿改动主函数main和其他函数中的任何内容,仅在函数fum的花括号
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序给出如下. 请勿改动主函数main和其他函数中的任何内容,仅在函数fum的花括号
admin
2010-05-05
26
问题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fum的花括号中填入所编写的若啡:语句。
试题程序:
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s ;
}STREC;
int fun (STREC a[])
{
}
main ()
{
STREC s IN] ={ {"GA005", 85 }, {"GA003", 76},
{"GA002", 69}, {"GA004", 85}, {"GA001", 91},
{"GA007", 72}, {"GA008", 64}, {"GA006", 87},
{"GA015", 85}, {"GA013", 91}, {"GA012", 64},
{"GA014", 91}, {"GA011", 66}, {"GA017", 64},
{"GA018", 64}, {"GA016", 72} };
int i;
FILE *out;
fun (s);
printf("The data after sorted :In");
for (i=0; i<N; i++)
{if ((i) %4=-0)
/*每行输出4个学生记录*/
printf ("\n");
printf("%s %4d",s
.num, s
.s);
}
printf ("\n");
out=fopen ( "out 16. dat", "w" );
for(i=0; i<N; i++);
{if ((i) %4==0&&i)
fprintf (out, "\n");
fprintf(out, "%4d",s
.s);
}
fprintf(out, "\n");
fclose (out);
}
选项
答案
int fun (STREC a[]) { int i,j; STREC t; for (i=1; i<N; i++) /*用冒泡法进行排序,进行N-1次比较*/ for (j =0; j<N-1; j++) / *在每一次比较中要进行N-1次两两比较*/ if(a[j].s<a[j+1].s) {t=a [j]; a [j] =a [j+1]; a [j+1] =t; } /*按分数的高低排列学生的记录,高分在前*/ }
解析
冒泡法算法思路:如果有N个数,则要进行N-1次比较,在每一次比较中要进行N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第1次比较结束后,最大(或最小)数肯定在最后,第2次比较结束后,次最大(或次最小)数肯定在倒数的第2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第2次比较时只要比较到倒数的第2个数即可,所以进行第i次比较时只需比较N-i次即可(这种算法较难理解,但它是最好的)。
选择法算法思路:如果有N个数则从头到倒数的第2个数一个一个往后走动,每走动1个数总是将这个数与其后的所有数进行比较并找出它们的最大(或最小)数,找出最大(或最小)数后再将所得的最大(或最小)数与该数进行交换,交换后再走到下一个数依次交换到结束。此外,选择法还可用如下思路:如果有N个数,则从头到倒数的第2个数—个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按顺序将进行比较的这两个数排序(即交换)。
插入法算法思路:先对头两个数进行排序。然后把第3个数插入到前两个数中,插入后前3个数依然有序;再把第4个数插入到前3个数中,插入后前4个数依然有序;依次插完所有的数。具体执行方式(假设从小到大排序):从第2个数开始往后一个一个走动直到最后。每走到1个数总是将该数(先将其存到1个临时变量中)与其前面的数进行比较(比较的顺序总是从后往前进行),在比较时只要发现该数比被比较的数小,就将被比较的数往后移1位,然后该数还要冉与前1个数进行比较,亢到发现该数比被比较的数大或己比较到头(即第1个数的前面),并将该数存入当前被比较数的后1位(存储空间)。
如果有整型一维数组a其有N个元素,要求将其按从小到大排序。注意元素下标是从0始的。
冒泡法:
for (i=1; i<N; i++)
for (j=0;N-1; j++)
if (a[j]>a[j+1])
{t=a[j] ;a [j]=a[j+1] ;a[j+1]=a[j]; }
选择法
for (i=0 i<N-1; i++)
{p=i;
for(j i+1; j<N; j++)
if (a[p]>a[j]) p=j;
if{p!=i)
t=a
;a
=a[p];a[p]=t;
}
插入法
for {i=1; i<N; i++}
{t=a
;
for {j=i-1; a [j]>t& &j>=0; j--)
a[j+1]=a[j];
a[j+1]=t;
}
转载请注明原文地址:https://kaotiyun.com/show/WXID777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
根据地理知识,同纬线上的各地()。
国家赔偿的最重要方式是()。
根据《中华人民共和国中国人民银行法》的规定,我国货币政策的最终目标是(),并以此促进经济增长。
剧烈运动后,人们常常满脸通红,大汗淋漓,这主要是因为皮肤的()功能。
在推进我国反腐倡廉建设的工作上,中国共产党一直坚持不懈地努力着,下列有关说法错误的是()。
2015年政府工作报告中,李克强总理针对产业发展提到了一个新概念:要实施“中国制造2025”。下列对此理解错误的是()。
法院审理一起受贿案时,被告人甲称因侦查人员刑讯不得已承认犯罪事实,并讲述受到刑讯的具体时间。检察机关为证明侦查讯问程序合法,当庭播放了有关讯问的录音录像,并提交了书面说明。关于该录音录像的证据种类,下列哪一选项是正确的?()
乙遭车祸昏迷在路上,甲途经发现后雇计程车将乙送往医院,并帮其支付医药费,在救助过程中,甲的名牌衣服因染有乙的血渍而不能使用,同时乙的贵重手表遗落在事故地点,甲因疏忽而未能发现。下列说法中不正确的是()。
下面对商鞅变法论述不正确的是()。
中国哲学凝聚了中华文化的基本精神,是中华民族数千年文化发展的结晶。在西方文化中,宗教处于核心的地位,然而在中国文化中,宗教的功能基本上是由哲学承担的。自古以来,中国人对宇宙的看法,对人生的看法,他们生活的意义,他们的价值观念,他们赖以安身立命的终极根据,都
随机试题
患者,男,19岁。2周前发高热伴咽痛,同时觉心悸,心前区闷痛。近2天常感头晕、眼花来诊。体检:脸色较苍白,心界不大,心率45次/分,律齐,无心脏杂音。心电图示心房率80次/分,RR间期相等,心室率50次/分,QRS时间为0.08秒,偶发室早。心超示少量心包
西蒙指出了可以用来比较程序性和非程序性决策的过程的四个阶段,其中“情报活动”属()
25岁初产妇,妊娠39周,阵发性腹痛20小时,10~12分钟宫缩一次,持续30秒,宫口开大2cm。出现上述临床表现的原因是
女性,22岁。近2天排黑色大便,每天1次,成形,不伴有消化、头昏及乏力。否认慢性病史,平素体健。患者黑便原因应首先排除
香港华为公司总部设在香港地区,在内地A地设有办事处,并在B地拥有一笔物业。因该公司与内地方圆公司有合同纠纷,被方圆公司诉讼到法院。该合同签订地为C地,并约定于D地履行,但合同现在尚未履行,则有权管辖本案的法院有:()。
下列各项中,应计入销售费用的有()(2017年)
社会主义法制实质上是制度化、法律化了的社会主义民主。()
目前,港南市主要干道上自行车道的标准宽度为单侧3米。很长一段时期以来,很多骑自行车的人经常在机动车道上抢道骑行。在对自行车违章执法还比较困难的现阶段,这种情况的存在严重地影响了交通,助长了人们对交通法规的漠视。有人向市政府提出,应当将自行车道拓宽为3.5米
Paintinghasbeencontinuouslypracticedbyhumansforsome20,000years.Togetherwithotheractivities【C1】______ritualisticin
A、Annoying.B、Pleased.C、Surprised.D、Sympathetic.A
最新回复
(
0
)