问题 问答题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#define N 16
typedef struct

char mum[10);
int s;
STREC;
int fun (STREC a[ ])

main ()

STREC s[N]="GA005",88,"GA003",64,
"CA002",77,"GA004",89,"GA001",54,
"GA007",72,"GA008",72,"GA006",65,
"GA015",83,"GA013",95,"GA012",55,
"GA014",68,"GA011",78,"GA017",53,
"GA018",92,"GA016",82;
int i;
FILE *out;
fun(s);
printf("The data after sorted :\n");
for(i=0;i<N;i++)

if((i)%4==0)
/*每行输出4个学生记录*/
printf("\n");
printf("%s %4d",s[i].num,s[i].s);

printf("\n");
out=fopen("out21.dat","w");
for(i=0;i<N;i++)

if((i)%4==0&&i)
fprintf(out,"\n");
fPrintf(out,"%4d",s[i].s);

fprintf(out,"\n");
fclose(out);

答案

参考答案:

int fun(STREC a[])

{

int i,j;

STREC t;

for(i=A;i<N;i++) /*用冒泡法进行排序,进行N-A次比较*/

for(j=0;j<N-A;j++) /*在每—次比较中要进行N-A次两两比较*/

if(a[j].s>a[j+A].s) /*按分数的高低排列学生的记录,低分在前*/

{

t=a[j];

a[j]=a[j+A];

a[j+A]=t;

}

}

解析:

冒泡法算法思路:如果有N个数,则要进行N-1次比较,在每—次比较中要进行N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第1次比较结束后,最大(或最小)数肯定在最后,第2次比较结束后,次最大(或次最小)数肯定在倒数的第2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第2次比较时只要比较到倒数的第2个数即可,所以进行第 i次比较I时只需比较N-i次即可(这种算法较难理解,但它是最好的)。

单项选择题 A1/A2型题
问答题 案例分析题

中 * * 伟大复兴是全体华人的梦,如何才能真正富强,这才是最关键的。阅读下列材料,完成相关试题。

材料一《近代以来世界强国的力量来源》

——约瑟夫·奈《美国霸权的困惑——为什么美国不能独断专行》

材料二世界制造业产量的相对份额(1750—1900年)(堆柱顺序:英1德2美3中4)

——资料来源:(美)保罗·肯尼迪《大国的兴衰》

材料三当时,在中国享有带有不平等性质的权益的国家主要是美、英、苏三国。在具体实践中,中国政府采取了不同的对策。美国是当时与新中国最为敌对的国家。中国政府对中美商约等一系列条约采取了不予承认的立场,美国此前在中国所享有的特权至此在大陆全部丧失。这种处理干脆利落。苏联是中国最重要的盟友。对于中苏友好条约,中国政府并没有断然宣布废除,而是积极地与苏联政府展开重新谈判。1950年2月,中苏订立了新的友好同盟互助条约及有关协定。协定规定在不迟于1952年末之前,苏联将中国长春铁路的一切权利及一切财产无偿移交中国,苏军从旅顺口撤出,大连行政完全由中国政府管辖,苏方临时代管或租用的财产,应由中国政府接收。至此,可以说中国已经完全挣脱了百年之久的不平等条约的束缚。

——裴坚章《中国外交史——中华人民共和国时期(1949—1979年)》

根据材料三并结合所学知识,简要评述中华人民共和国对待不平等条约及其国家的对策。