编写程序用来记录n个学生的学号(num)、姓名(name)和C++成绩(score)。 1、要求使用结构,从键盘获得数据输入,同时计算全班平均分; 2、输出显示全部学生的信息和全班平均分 3、查找最高分、最低分学生和不及格学生并输出显示其信息;
时间: 2023-06-09 14:02:00 浏览: 271
好的,这是一个关于编程的问题,我可以回答。以下是代码示例:
```
#include <stdio.h>
#define MAX_STUDENTS 100
struct student {
int num;
char name[20];
float score;
};
struct classStats {
float sum;
float avg;
};
int main() {
struct student students[MAX_STUDENTS];
struct classStats stats;
int n;
printf("请输入学生数量:");
scanf("%d", &n);
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("\n请输入第 %d 个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].num);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩:");
scanf("%f", &students[i].score);
stats.sum += students[i].score;
}
// 计算平均分
stats.avg = stats.sum / n;
// 输出全部学生信息和全班平均分
printf("\n全部学生信息如下:\n");
printf("=====================\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f\n", students[i].num, students[i].name, students[i].score);
}
printf("=====================\n");
printf("全班平均分为:%.2f\n", stats.avg);
// 查找最高分、最低分学生和不及格学生并输出显示其信息
float maxScore = students[0].score;
float minScore = students[0].score;
int maxStudent = 0;
int minStudent = 0;
int failCount = 0;
for (int i = 1; i < n; i++) {
if (students[i].score > maxScore) {
maxScore = students[i].score;
maxStudent = i;
}
if (students[i].score < minScore) {
minScore = students[i].score;
minStudent = i;
}
if (students[i].score < 60.0) {
failCount++;
}
}
printf("\n最高分学生信息如下:\n");
printf("=====================\n");
printf("学号:%d,姓名:%s,成绩:%.2f\n", students[maxStudent].num, students[maxStudent].name, students[maxStudent].score);
printf("=====================\n");
printf("\n最低分学生信息如下:\n");
printf("=====================\n");
printf("学号:%d,姓名:%s,成绩:%.2f\n", students[minStudent].num, students[minStudent].name, students[minStudent].score);
printf("=====================\n");
printf("\n不及格学生数量为:%d\n", failCount);
return 0;
}
```
阅读全文