代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 10
struct student {
char na[50];
char ID[11];
int English, Math, C_pro;
int sum;
}s[N], *p=s;
void input(struct student *p, int n)
{
printf("请输入%d个学生信息:\n", n);
for (int i = 0; i < n; i++) {
scanf("%s%s%d%d%d", &p[i].na, &p[i].ID, &p[i].English, &p[i].Math, &p[i].C_pro);
p[i].sum = p[i].English + p[i].Math + p[i].C_pro;
}
}
void sort(struct student *p, int n)
{
int i, j;
struct student tmp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (p[j].sum < p[j + 1].sum) {
memcpy(&tmp, &p[j], sizeof(struct student));
memcpy(&p[j], &p[j + 1], sizeof(struct student));
memcpy(&p[j + 1], &tmp, sizeof(struct student));
}
}
}
}
void disp(struct student *p, int n)
{
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%d\t%d\t%d\t%d\n", p[i].na, p[i].ID, p[i].English, p[i].Math, p[i].C_pro, p[i].sum);
}
}
int main()
{
input(p, N);
sort(p, N);
disp(p, N);
system("pause");
return 0;
}
运行结果: