输入n个学生的姓名及其3门功课成绩,要求按输入的逆序逐行输出每个学生的姓名、3门课成绩和平均成绩。若有学生平均成绩低于60分,则不输出该学生信息。c++代码
时间: 2023-12-17 17:02:47 浏览: 60
很高兴回答您的问题!以下是代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Student {
char name[20];
int score[3];
float avg;
};
int main() {
int n;
printf("请输入学生的个数: ");
scanf("%d", &n);
struct Student *stu = (struct Student *)malloc(n * sizeof(struct Student)); // 动态申请内存空间
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名: ", i + 1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的三门功课成绩:\n", i + 1);
for (int j = 0; j < 3; j++) {
scanf("%d", &stu[i].score[j]);
}
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0; // 计算平均成绩
}
for (int i = n - 1; i >= 0; i--) {
if (stu[i].avg >= 60) { // 判断平均成绩是否大于等于60分, 若是则输出该学生信息
printf("%s\t%d\t%d\t%d\t%.2f\n", stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg);
}
}
free(stu); // 释放内存空间
return 0;
}
```
该程序通过结构体数组来保存学生的姓名、三门课成绩和平均成绩信息,动态申请内存空间来存储学生信息。然后按照输入的逆序逐行输出每个学生的信息,并判断平均成绩是否大于等于60分,若是,则输出该学生信息。最后释放内存空间。
希望我的回答对您有帮助!
阅读全文