用c语言结构体写出输入学生信息,学生信息包括学号、姓名、平时成绩、实训成绩和期末成绩,求学生的总评成绩,并统计总成绩中及格人数和及格率。(其中:总评成绩=平时成绩的%30+实训成绩的%30+期末成绩的%40)
时间: 2023-12-10 10:41:02 浏览: 148
下面是一个基本的示例代码:
```c
#include <stdio.h>
#define PASS_SCORE 60 // 及格分数线
// 学生信息结构体
struct student {
int id; // 学号
char name[20]; // 姓名
float daily_score; // 平时成绩
float practice_score; // 实训成绩
float final_score; // 期末成绩
float total_score; // 总评成绩
};
int main() {
int n, pass_num = 0;
float pass_rate;
printf("请输入学生人数:");
scanf("%d", &n);
struct student stu[n]; // 定义学生结构体数组
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名、平时成绩、实训成绩和期末成绩:", i + 1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].daily_score,
&stu[i].practice_score, &stu[i].final_score);
// 计算总评成绩
stu[i].total_score = stu[i].daily_score * 0.3 + stu[i].practice_score * 0.3 + stu[i].final_score * 0.4;
// 统计及格人数
if (stu[i].total_score >= PASS_SCORE) {
pass_num++;
}
}
// 计算及格率
pass_rate = (float) pass_num / n * 100;
// 输出学生信息及总评成绩
printf("学号\t姓名\t平时成绩\t实训成绩\t期末成绩\t总评成绩\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\t\t%.1f\n", stu[i].id, stu[i].name,
stu[i].daily_score, stu[i].practice_score, stu[i].final_score, stu[i].total_score);
}
// 输出及格率和及格人数
printf("及格人数:%d,及格率:%.2f%%\n", pass_num, pass_rate);
return 0;
}
```
代码解释:
1. 定义一个 `student` 结构体存储学生信息,包括学号、姓名、平时成绩、实训成绩、期末成绩和总评成绩。
2. 在 `main` 函数中定义一个 `stu` 数组用于存储输入的学生信息。
3. 输入学生信息时,通过循环输入每个学生的信息,并在输入完毕后计算该学生的总评成绩,并统计及格人数。
4. 在输出学生信息时,一并输出总评成绩。
5. 最后统计及格率,并输出及格人数和及格率。
阅读全文