用c语言结构体写出输入学生信息,学生信息包括学号、姓名、平时成绩、实训成绩和期末成绩,求学生的总评成绩,并统计总成绩中及格人数和及格率。(其中:总评成绩=平时成绩的%30+实训成绩的%30+期末成绩的%40)
时间: 2023-12-10 13:40:46 浏览: 195
好的,以下是用 C 语言结构体实现输入学生信息、计算总评成绩并统计及格人数及及格率的代码:
```c
#include <stdio.h>
// 定义学生信息结构体
struct Student {
char id[10]; // 学号
char name[20]; // 姓名
float usual_score; // 平时成绩
float practice_score; // 实训成绩
float final_score; // 期末成绩
float total_score; // 总评成绩
};
int main() {
struct Student stu[100]; // 声明结构体数组,最多存储 100 名学生的信息
int n, pass_num = 0; // 学生人数和及格人数
float pass_rate; // 及格率
printf("请输入学生人数:");
scanf("%d", &n);
// 循环输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第 %d 名学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("平时成绩:");
scanf("%f", &stu[i].usual_score);
printf("实训成绩:");
scanf("%f", &stu[i].practice_score);
printf("期末成绩:");
scanf("%f", &stu[i].final_score);
// 计算总评成绩
stu[i].total_score = stu[i].usual_score * 0.3 + stu[i].practice_score * 0.3 + stu[i].final_score * 0.4;
// 统计及格人数
if (stu[i].total_score >= 60) {
pass_num++;
}
}
// 计算及格率
pass_rate = (float) pass_num / n * 100;
// 输出学生成绩及及格率
printf("\n学号\t姓名\t平时成绩\t实训成绩\t期末成绩\t总评成绩\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",
stu[i].id, stu[i].name, stu[i].usual_score, stu[i].practice_score, stu[i].final_score, stu[i].total_score);
}
printf("共 %d 名学生,及格人数为 %d,及格率为 %.2f%%。\n", n, pass_num, pass_rate);
return 0;
}
```
运行程序,可以依次输入每位学生的信息,例如:
```
请输入学生人数:3
请输入第 1 名学生的信息:
学号:101
姓名:张三
平时成绩:80
实训成绩:90
期末成绩:70
请输入第 2 名学生的信息:
学号:102
姓名:李四
平时成绩:70
实训成绩:80
期末成绩:90
请输入第 3 名学生的信息:
学号:103
姓名:王五
平时成绩:60
实训成绩:70
期末成绩:80
学号 姓名 平时成绩 实训成绩 期末成绩 总评成绩
101 张三 80.00 90.00 70.00 76.00
102 李四 70.00 80.00 90.00 80.00
103 王五 60.00 70.00 80.00 68.00
共 3 名学生,及格人数为 2,及格率为 66.67%。
```
阅读全文