#include<stdio.h>
struct student/*定义结构体*/
{
int num;
char name[20];
float score;
};
int main()
{
void rank(struct student p[], int n);
void print(struct student p[], int n);
int i;
int n = 3;/*学生人数*/
struct student stu[3];/*学生人数修改时这里也要相应修改*/
for (i = 0; i < n; i++)
scanf("%d%s%f", &stu[i].num, stu[i].name, &stu[i].score);
printf("the student rank of grade after dispose is:\n");
rank(stu, n);
print(stu, n);
return 0;
}
void rank(struct student p[], int n)/*处理函数*/
{
int i, j, k;
struct student temp;
for (i = 0; i < n - 1; i++)
{
k = i;/*存储当前遍历的学生序号*/
for (j = i + 1; j < n; j++)
if (p[j].score > p[k].score)/*将存储的学生数据与后面的学生数据一次比较*/
k = j;/*学生中分数最高的序号*/
temp = p[i];
p[i] = p[k];
p[k] = temp;/*与第一个交换*/
}
}
void print(struct student p[], int n)/*输出函数*/
{
int i;
for (i = 0; i < n; i++)
printf("%6d%8s,%6.2f\n", p[i].num, p[i].name, p[i].score);
printf("\n");
}
输入一组学生数据,按成绩从大到小输出,学生个数可修改
最新推荐文章于 2021-11-29 16:45:00 发布