# include <stdio.h> #include<stdlib.h> struct student { int num; char name[20]; float score; }; int main() { struct student *stu; int i,imax=0,n; printf(" 请输入人数:"); scanf("%d",&n); stu=_____(1)_____; //生成动态数组 printf(" 请输入学生信息:\n"); for(i=0;i<n;i++) scanf ("%d%s%f", _____(2)_____); imax=0; for(i=1;i<n;i++) { if(____(3)_____) imax=i; } printf("\n 最高分:\n"); printf("学号:%d 姓名:%s 成绩:%4.1f\n", stu[imax].num,stu[imax].name,stu[imax].score); return 0; }
时间: 2023-12-03 10:02:44 浏览: 208
#include <stdio.h>
程序补充完整如下:
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[20];
float score;
};
int main() {
struct student *stu;
int i, imax = 0, n;
printf("请输入人数:");
scanf("%d", &n);
stu = (struct student*) malloc(n * sizeof(struct student)); //生成动态数组
printf("请输入学生信息:\n");
for(i = 0; i < n; i++) {
scanf("%d%s%f", &stu[i].num, stu[i].name, &stu[i].score);
}
imax = 0;
for(i = 1; i < n; i++) {
if(stu[i].score > stu[imax].score) {
imax = i;
}
}
printf("\n最高分:\n");
printf("学号:%d 姓名:%s 成绩:%4.1f\n", stu[imax].num, stu[imax].name, stu[imax].score);
free(stu);
return 0;
}
```
程序的具体逻辑如下:
1. 定义了一个结构体 `student`,包含学生的学号、姓名和成绩。
2. 定义了一个指向结构体的指针 `stu`,用于指向动态数组。
3. 通过 `malloc` 函数动态生成大小为 `n * sizeof(struct student)` 的数组,并将其指针赋值给 `stu`。
4. 循环输入每个学生的学号、姓名和成绩,存储在结构体数组中。
5. 循环查找最高分的学生,记录其下标 `imax`。
6. 输出最高分的学生的学号、姓名和成绩。
7. 释放动态数组的内存,程序结束。
阅读全文