您的位置:首页 > 其它

78.对学生成绩进行排序

2015-07-07 21:43 603 查看
函数fun的功能是:对N名学生的学习成绩。按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区域内,此存储区的首地址作为函数值返回。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<alloc.h>
#include<string.h>
#define N 10
typedef struct ss
{
char num[10];
int s;
}STU;
STU *fun(STU a[], int m)
{
STU b
, *t;
int i, j, k;
t = (STU *)calloc(sizeof(STU), m);
for (i = 0;i < N;i++)
b[i] = a[i];
for (k = 0;k < m;k++)
{
for (i = j = 0;i < N;i++)
if (b[i].s>b[j].s)
j = i;
t[k] = b[j];
b[j].s = 0;
}
return t;
}
outresult(STU a[], FILE *pf)
{
int i;
for (i = 0;i < N;i++)
fprintf(pf,"No=%s  Mark=%d\n", a[i].num, a[i].s);
fprintf(pf, "\n\n");
}
int main()
{
STU a
= { {"A01",81},{"A02",89},{"A03",66},
{"A04",87},{"A05",77},{"A06",90},
{"A07",79}, {"A08",61},{"A09",80},
{"A10",71} };
STU *pOrder;
int i, m;
printf("****The Original data****\n");
outresult(a, stdout);
printf("\nGive the number of student who have bettrer score:");
scanf("%d", &m);
while (m > 10)
{
printf("\nGive the number of the students who have detter score: ");
scanf("%d", &m);
}
pOrder = fun(a, m);
printf("****The Result****\n");
printf("The top :\n");
for (i = 0;i < m;i++)
printf("%s   %d\n", pOrder[i].num, pOrder[i].s);
free(pOrder);
system("pause");
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: