#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#define MAX 50
typedef struct tagStudent
{
char name[20];
char course[20];
float score;
}Student;
Student stu[MAX];
int num;
void Input()
{
int i;
char na[20];
char sc[20];
float sco;
printf("请输入学生人数:");
scanf_s("%d", &num);
for (i = 0; i<num; i++)
{
printf("请输入第%d个学生的“姓名 课程名称 成绩”:", i + 1);
scanf_s("%s%s%f", na,_countof(na), sc,_countof(sc),&sco, 30);//scanf_s()用法查阅msdn._countof()需要头文件stdlib.h
strcpy_s(stu[i].name, na);
strcpy_s(stu[i].course, sc);
stu[i].score = sco;
}
}
void Output()
{
int i;
printf("%20s%20s%8s\n", "学生姓名", "课程名称", "成绩");
for (i = 0; i<num; i++)
{
printf("%20s%20s%8.1f\n", stu[i].name, stu[i].course, stu[i].score);
}
}
void Copy(Student* A, Student* B)
{
strcpy_s(A->name, B->name);
strcpy_s(A->course, B->course);
A->score = B->score;
}
void Sort()
{
int i, j;
Student tmpStu;
for (i = 0; i<num - 1; i++)
for (j = i + 1; j<num; j++)
if (stu[i].score<stu[j].score)
{
Copy(&tmpStu, &stu[i]);
Copy(&stu[i], &stu[j]);
Copy(&stu[j], &tmpStu);
}
}
void main()
{
Input();
printf("\t排序前:\n");
Output();
Sort();
printf("\t排序后:\n");
Output();
getchar();
getchar();
}