C语言编程,有五个学生。每个学生的数据包括学号,姓名和成绩,要求分别用三个函数实现以下功能:1,用input函数输入所有数据2.用sort函数将学生数据按照成绩由高到低排序后输出3.用max函数找到成绩最高学生并输出其信息。写到这里就不会了
仅供参考!谢谢!
#include <stdio.h>
#define N 5
struct student
{
char num[18];
char name[18];
float score;
};
void sort(struct student *p, int n)
{
int i, j;
struct student tmp;
//后面未排序的数取一个数插入到前段已排好序的适当位置
//起始把第一个数当做是已经排好的
for (i = 1; i < n; i++)
{
tmp = p[i];
j = i - 1;
while (tmp.score > p[j].score)
{
p[j + 1] = p[j];
j--;
if (j == -1)
break;
}
p[j + 1] = tmp;
}
//输出
printf("\n%6s%10s%10s\n", "学号", "姓名", "成绩");
for (i = 0; i < n; i++)
{
printf("%s%10s%8.1f\n", p[i].num, p[i].name, p[i].score);
}
}
void max(struct student *p, int n)
{
float max = -1.0;
int j;
for (int i = 0; i < n; i++)
{
if (p[i].score > max)
{
max = p[i].score;
j = i;
}
}
printf("\n最高分学生信息:\n学号:%s 姓名:%s 成绩:%.1f\n", p[j].num, p[j].name, p[j].score);
}
void input(struct student *stu, int n)
{
printf("输入%d个学生信息分别是学号姓名成绩用空格隔开:\n", N);
for (int i = 0; i < n; i++)
{
scanf("%s%s%f", stu[i].num, stu[i].name, &stu[i].score);
}
}
int main(int argc, char *argv[])
{
struct student stu[N];
//录入数据
input(stu, N);
//排序
sort(stu, N);
//输出最高成绩学生信息
max(stu, N);
return 0;
}