问题 问答题

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

[试题源程序]


#include<stdio.h>
#define N 16
typedef struct

char num[i0];
int s;
STREC;
int fun(STREC a[])


main()

STREC s[N]=
"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:\n");
for(i=0;i<N; i++)

if((i)%4==0)
printf("\n");
printf("%s%4d", s[i]. num, s[i].s);

printf("\n");

答案

参考答案:#include<stdio.h>
#define N AF
typedef struct
{
char num[A0];
int s;
}STREC;
int fun(STREC a[])
{
STREC tmp;
int i, j;
for(i=0; i<N; i++)
for(j=i+A; j<N; J++)
if(a[i].s<a[j].S)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}

解析:

本题较简单,主要是按结构体中的成绩s进行降序排列,其结果仍存入当前结构体中。

单项选择题 案例分析题
名词解释