程序填空并调试: 有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-24 15:36:30 浏览: 72
这是一道填空题,以下是填好的代码:
```c
#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;
}
```
这段代码与之前的示例代码类似,不同之处在于使用了指针数组 `p` 来记录每个学生的地址,以便排序时直接交换指针而不是交换结构体。填空的地方如下:
①:`stu[i].score`
②:`p[j]->score > p[k]->score`
③:`p[i]->num, p[i]->name, p[i]->score`
④:`sum / 5`
注意此处输入学生信息时,格式字符串中的引号应该使用双引号而非单引号。
阅读全文