有5名学生,每个学生的数据信息包括学号、姓名和一门课的成绩。要求按学生的成绩由高到低排序,然后输出学生的信息以及平均成绩。 #include <stdio.h> struct student { int num; char name[20]; int score; }stu[5]; main() { struct student *pt,*p[5]; int i, j, k, sum=0; for(i=0;i<5;i++) {scanf('%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); p[i]=&stu[i]; sum=sum+_______①_____; } for(i=0;i<5;i++) { k=i; for(j=i;j<5;j++) if( ___②____) k=j; if(k!=i) { pt=p[i]; p[i]=p[k]; p[k]=pt;} } for(i=0;i<5;i++) printf(“%d, %s, %d", ____③____); printf("Average=%d\n", _____④_____); }
时间: 2024-03-20 17:41:40 浏览: 20
下面是填空后的程序:
```
#include <stdio.h>
struct student {
int num;
char name[20];
int score;
} stu[5];
int main() {
struct student *pt, *p[5];
int i, j, k, sum = 0;
for (i = 0; i < 5; i++) {
scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
p[i] = &stu[i];
sum = sum + stu[i].score;
}
for (i = 0; i < 5; i++) {
k = i;
for (j = i; j < 5; j++)
if (p[j]->score > p[k]->score) k = j;
if (k != i) {
pt = p[i];
p[i] = p[k];
p[k] = pt;
}
}
for (i = 0; i < 5; i++)
printf("%d, %s, %d\n", p[i]->num, p[i]->name, p[i]->score);
printf("Average=%d\n", sum / 5);
return 0;
}
```
解析:
① `stu[i].score`,将每个学生的分数累加到 `sum` 中。
② `p[j]->score > p[k]->score`,比较当前学生和已找到的最高分的学生的分数,找到最高分的学生。
③ `p[i]->num, p[i]->name, p[i]->score`,输出已排序的学生信息。
④ `sum / 5`,计算学生的平均成绩。